mirror of
https://github.com/ganelson/inform.git
synced 2024-05-19 17:39:23 +03:00
Relocated words and syntax modules
This commit is contained in:
parent
1a996f2724
commit
3349701c7e
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -30,6 +30,7 @@ retrospective/*/ni
|
|||
retrospective/*/*.o
|
||||
retrospective/makefile
|
||||
|
||||
inbuild/*-test/Tests/Test Cases/_Results_Actual/
|
||||
inform7/*-test/Tests/Test Cases/_Results_Actual/
|
||||
rsync.log
|
||||
|
||||
|
|
|
@ -97,11 +97,12 @@ becomes public: GitHub Pages does not work on private repositories.)
|
|||
This repository is where development is done on the following executables:
|
||||
|
||||
* inform7 - The core compiler in a natural-language design system for interactive fiction. - __version 7.10.1 'Krypton' (build 6Q21)__ - [★ Web](docs/inform7/index.html) - [▶ Documentation](docs/inform7/P-cu.html)
|
||||
* its modules [★ words](docs/words-module/index.html), [★ inflections](docs/inflections-module/index.html), [★ syntax](docs/syntax-module/index.html), [★ problems](docs/problems-module/index.html), [★ linguistics](docs/linguistics-module/index.html), [★ kinds](docs/kinds-module/index.html), [★ core](docs/core-module/index.html), [★ if](docs/if-module/index.html), [★ multimedia](docs/multimedia-module/index.html), [★ index](docs/index-module/index.html)
|
||||
* their unit test executables [★ words-test](docs/words-test/index.html), [★ inflections-test](docs/inflections-test/index.html), [★ syntax-test](docs/syntax-test/index.html), [★ problems-test](docs/problems-test/index.html), [★ linguistics-test](docs/linguistics-test/index.html), [★ kinds-test](docs/kinds-test/index.html)
|
||||
* its modules [★ inflections](docs/inflections-module/index.html), [★ problems](docs/problems-module/index.html), [★ linguistics](docs/linguistics-module/index.html), [★ kinds](docs/kinds-module/index.html), [★ core](docs/core-module/index.html), [★ if](docs/if-module/index.html), [★ multimedia](docs/multimedia-module/index.html), [★ index](docs/index-module/index.html)
|
||||
* their unit test executables [★ inflections-test](docs/inflections-test/index.html), [★ problems-test](docs/problems-test/index.html), [★ linguistics-test](docs/linguistics-test/index.html), [★ kinds-test](docs/kinds-test/index.html)
|
||||
* inblorb - The packaging stage of the Inform 7 system, which releases a story file in the blorbed format. - __version 4 'Duralumin'__ - [★ Web](docs/inblorb/index.html) - [▶ Documentation](docs/inblorb/P-ui.html)
|
||||
* inbuild - A simple build and package manager for the Inform tools. - __version 1 'Avignon'__ - [★ Web](docs/inbuild/index.html) - [▶ Documentation](docs/inbuild/P-ui.html)
|
||||
* its modules [★ inbuild](docs/inbuild-module/index.html), [★ arch](docs/arch-module/index.html), [★ html](docs/html-module/index.html)
|
||||
* its modules [★ inbuild](docs/inbuild-module/index.html), [★ arch](docs/arch-module/index.html), [★ html](docs/html-module/index.html), [★ words](docs/words-module/index.html), [★ syntax](docs/syntax-module/index.html)
|
||||
* two unit test executables [★ words-test](docs/words-test/index.html), [★ syntax-test](docs/syntax-test/index.html)
|
||||
* indoc - The documentation-formatter for the Inform 7 system. - __version 4 'Didache'__ - [★ Web](docs/indoc/index.html) - [▶ Documentation](docs/indoc/P-iti.html)
|
||||
* inpolicy - A lint-like tool to check up on various policies used in Inform source code. - __version 1 'Plan A'__ - [★ Web](docs/inpolicy/index.html) - [▶ Documentation](docs/inpolicy/P-ui.html)
|
||||
* inrtps - A generator of HTML pages to show for run-time problem messages in Inform. - __version 2 'Benefactive'__ - [★ Web](docs/inrtps/index.html) - [▶ Documentation](docs/inrtps/P-ui.html)
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
<span class="definitionkeyword">enum</span> <span class="constant">target_vm_MT</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">compatibility_specification_MT</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">semantic_version_number_holder_MT</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">semver_range_MT</span>
|
||||
</pre>
|
||||
|
||||
<pre class="display">
|
||||
|
@ -35,6 +36,7 @@
|
|||
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">target_vm</span><span class="plain">)</span>
|
||||
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">compatibility_specification</span><span class="plain">)</span>
|
||||
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">semantic_version_number_holder</span><span class="plain">)</span>
|
||||
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">semver_range</span><span class="plain">)</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
@ -77,7 +79,7 @@
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="plain">;</span>
|
||||
<span class="identifier">Writers::register_writer</span><span class="plain">(</span><span class="character">'v'</span><span class="plain">, &</span><span class="functiontext">VersionNumbers::writer</span><span class="plain">);</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
|
|
@ -11,36 +11,34 @@
|
|||
<!--Weave of '2/vn' generated by 7-->
|
||||
<ul class="crumbs"><li><a href="../webs.html">★</a></li><li><a href="index.html">arch</a></li><li><a href="index.html#2">Chapter 2: Architectures</a></li><li><b>Version Numbers</b></li></ul><p class="purpose">Semantic version numbers such as 3.7.1.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP1"></a><b>§1. </b>Traditional semantic version numbers look like dot-divided runs of
|
||||
non-negative integers: for example, 4, 7.1, and 0.2.3. Up to <code class="display"><span class="extract">VERSION_NUMBER_DEPTH</span></code>
|
||||
components can be given. The tail of the array should be padded with <code class="display"><span class="extract">-1</span></code> values;
|
||||
otherwise, components should all be non-negative integers.
|
||||
<ul class="toc"><li><a href="#SP1">§1. Standard adoption</a></li><li><a href="#SP5">§5. Printing and parsing</a></li><li><a href="#SP8">§8. Precendence</a></li><li><a href="#SP11">§11. Trichotomy</a></li><li><a href="#SP13">§13. Ranges</a></li><li><a href="#SP22">§22. Unit tests</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="inwebparagraph"><a id="SP1"></a><b>§1. Standard adoption. </b>The Semantic Version Number standard, semver 2.0.0, provides a strict set
|
||||
of rules for the format and meaning of version numbers: see <code class="display"><span class="extract">https://semver.org</span></code>.
|
||||
</p>
|
||||
|
||||
|
||||
<pre class="definitions">
|
||||
<span class="definitionkeyword">define</span> <span class="constant">VERSION_NUMBER_DEPTH</span><span class="plain"> 4</span>
|
||||
</pre>
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">semantic_version_number</span><span class="plain"> {</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">version_numbers</span><span class="plain">[</span><span class="constant">VERSION_NUMBER_DEPTH</span><span class="plain">];</span>
|
||||
<span class="plain">} </span><span class="reserved">semantic_version_number</span><span class="plain">;</span>
|
||||
|
||||
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">semantic_version_number_holder</span><span class="plain"> {</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">semantic_version_number</span><span class="plain"> </span><span class="identifier">version</span><span class="plain">;</span>
|
||||
<span class="identifier">MEMORY_MANAGEMENT</span>
|
||||
<span class="plain">} </span><span class="reserved">semantic_version_number_holder</span><span class="plain">;</span>
|
||||
</pre>
|
||||
<p class="inwebparagraph">Prior to the standard most version numbers in computing usage looked like
|
||||
dot-divided runs of non-negative integers: for example, 4, 7.1, and 0.2.3.
|
||||
The standard now requires exactly three: major, minor and patch. It's
|
||||
therefore formally incorrect to have a version 2, or a version 2.3. We will
|
||||
not be so strict on the textual form, which we will allow to be abbreviated.
|
||||
Thus:
|
||||
</p>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The structure semantic_version_number is private to this section.</p>
|
||||
<ul class="items"><li>(a) The text <code class="display"><span class="extract">6.4.7</span></code> is understood to mean 6.4.7 and printed back as <code class="display"><span class="extract">6.4.7</span></code>
|
||||
</li><li>(b) The text <code class="display"><span class="extract">6</span></code> is understood to mean 6.0.0 and printed back as <code class="display"><span class="extract">6</span></code>
|
||||
</li><li>(c) The text <code class="display"><span class="extract">6.1</span></code> is understood to mean 6.1.0 and printed back as <code class="display"><span class="extract">6.1</span></code>
|
||||
</li><li>(d) The text <code class="display"><span class="extract">6.1.0</span></code> is understood to mean 6.1.0 and printed back as <code class="display"><span class="extract">6.1.0</span></code>
|
||||
</li></ul>
|
||||
<p class="inwebparagraph">Similarly, the absence of a version number (called "null" below) will be
|
||||
understood to mean 0.0.0, but will be distinguished from the explicit choice
|
||||
to number something as 0.0.0.
|
||||
</p>
|
||||
|
||||
<p class="endnote">The structure semantic_version_number_holder is accessed in 2/tvm, 2/cmp.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP2"></a><b>§2. </b>However, Inform 7 extensions have for many years allowed two forms of
|
||||
version number: either just <code class="display"><span class="extract">N</span></code>, which clearly fits the scheme above, or
|
||||
<p class="inwebparagraph"><a id="SP2"></a><b>§2. </b>A complication is that Inform 7 extensions have for many years allowed two
|
||||
forms of version number: either just <code class="display"><span class="extract">N</span></code>, which fits the scheme above, or
|
||||
<code class="display"><span class="extract">N/DDDDDD</span></code>, which does not. This is a format which was chosen for sentimental
|
||||
reasons: IF enthusiasts know it well from the banner text of the Infocom
|
||||
titles of the 1980s. This story file, for instance, was compiled at the
|
||||
|
@ -62,10 +60,52 @@ time of the Reykjavik summit between Presidents Gorbachev and Reagan:
|
|||
</p>
|
||||
|
||||
<p class="inwebparagraph">We will therefore allow this notation, and convert it silently each way.
|
||||
<code class="display"><span class="extract">N/DDDDDD</span></code> is equivalent to <code class="display"><span class="extract">N.DDDDDD</span></code>.
|
||||
<code class="display"><span class="extract">N/DDDDDD</span></code> is equivalent to <code class="display"><span class="extract">N.DDDDDD</span></code>. Thus, <code class="display"><span class="extract">9/861022</span></code> means 9.861022.0 in
|
||||
semver precedence order.
|
||||
</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP3"></a><b>§3. </b>All invalid strings of numbers — i.e., breaking the above rules — are
|
||||
<p class="inwebparagraph">In all non-textual respects, and in particular on precedence rules, we follow
|
||||
the standard exactly. The only reason we allow these abbreviations is because
|
||||
we don't want to force Inform extension writers to type "Version 3.4.1 of
|
||||
Such-and-Such by Me begins here", and so on: it would break all existing
|
||||
extensions, for one thing, and it looks unfriendly.
|
||||
</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP3"></a><b>§3. </b>In the array below, unspecified numbers are stored as <code class="display"><span class="extract">-1</span></code>. The three
|
||||
components are otherwise required to be non-negative integers.
|
||||
</p>
|
||||
|
||||
<p class="inwebparagraph">Semver allows for more elaborate forms: for example <code class="display"><span class="extract">3.1.41-alpha.72.zeta+6Q45</span></code>
|
||||
would mean 3.1.41 but with prerelease versioning <code class="display"><span class="extract">alpha.72.zeta</span></code> and build
|
||||
metadata <code class="display"><span class="extract">6Q45</span></code>. The <code class="display"><span class="extract">prerelease_segments</span></code> list for this would be a list of
|
||||
three texts: <code class="display"><span class="extract">alpha</span></code>, <code class="display"><span class="extract">72</span></code>, <code class="display"><span class="extract">zeta</span></code>.
|
||||
</p>
|
||||
|
||||
|
||||
<pre class="definitions">
|
||||
<span class="definitionkeyword">define</span> <span class="constant">SEMVER_NUMBER_DEPTH</span><span class="plain"> 3 </span> <span class="comment">major, minor, patch</span>
|
||||
</pre>
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">semantic_version_number</span><span class="plain"> {</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">version_numbers</span><span class="plain">[</span><span class="constant">SEMVER_NUMBER_DEPTH</span><span class="plain">];</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">linked_list</span><span class="plain"> *</span><span class="identifier">prerelease_segments</span><span class="plain">; </span> <span class="comment">of <code class="display"><span class="extract">text_stream</span></code></span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">build_metadata</span><span class="plain">;</span>
|
||||
<span class="plain">} </span><span class="reserved">semantic_version_number</span><span class="plain">;</span>
|
||||
|
||||
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">semantic_version_number_holder</span><span class="plain"> {</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">semantic_version_number</span><span class="plain"> </span><span class="identifier">version</span><span class="plain">;</span>
|
||||
<span class="identifier">MEMORY_MANAGEMENT</span>
|
||||
<span class="plain">} </span><span class="reserved">semantic_version_number_holder</span><span class="plain">;</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The structure semantic_version_number is private to this section.</p>
|
||||
|
||||
<p class="endnote">The structure semantic_version_number_holder is accessed in 2/tvm, 2/cmp.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP4"></a><b>§4. </b>All invalid strings of numbers — i.e., breaking the above rules — are
|
||||
called "null" versions, and can never be valid as the version of anything.
|
||||
Instead they are used to represent the absence of a version number.
|
||||
(In particular, a string of <code class="display"><span class="extract">-1</span></code>s is null.)
|
||||
|
@ -77,31 +117,18 @@ Instead they are used to represent the absence of a version number.
|
|||
<span class="plain">#</span><span class="identifier">pragma</span><span class="plain"> </span><span class="identifier">clang</span><span class="plain"> </span><span class="identifier">diagnostic</span><span class="plain"> </span><span class="identifier">push</span>
|
||||
<span class="plain">#</span><span class="identifier">pragma</span><span class="plain"> </span><span class="identifier">clang</span><span class="plain"> </span><span class="identifier">diagnostic</span><span class="plain"> </span><span class="identifier">ignored</span><span class="plain"> </span><span class="string">"-Wconditional-uninitialized"</span>
|
||||
<span class="reserved">semantic_version_number</span><span class="plain"> </span><span class="identifier">V</span><span class="plain">;</span>
|
||||
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=0; </span><span class="identifier">i</span><span class="plain"><</span><span class="constant">VERSION_NUMBER_DEPTH</span><span class="plain">; </span><span class="identifier">i</span><span class="plain">++) </span><span class="identifier">V</span><span class="element">.version_numbers</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">] = -1;</span>
|
||||
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=0; </span><span class="identifier">i</span><span class="plain"><</span><span class="constant">SEMVER_NUMBER_DEPTH</span><span class="plain">; </span><span class="identifier">i</span><span class="plain">++) </span><span class="identifier">V</span><span class="element">.version_numbers</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">] = -1;</span>
|
||||
<span class="identifier">V</span><span class="element">.prerelease_segments</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">V</span><span class="element">.build_metadata</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">V</span><span class="plain">;</span>
|
||||
<span class="plain">#</span><span class="identifier">pragma</span><span class="plain"> </span><span class="identifier">clang</span><span class="plain"> </span><span class="identifier">diagnostic</span><span class="plain"> </span><span class="identifier">pop</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">semantic_version_number</span><span class="plain"> </span><span class="functiontext">VersionNumbers::from_major</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">major</span><span class="plain">) {</span>
|
||||
<span class="reserved">semantic_version_number</span><span class="plain"> </span><span class="identifier">V</span><span class="plain"> = </span><span class="functiontext">VersionNumbers::null</span><span class="plain">();</span>
|
||||
<span class="identifier">V</span><span class="element">.version_numbers</span><span class="plain">[0] = </span><span class="identifier">major</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">V</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">semantic_version_number</span><span class="plain"> </span><span class="functiontext">VersionNumbers::from_pair</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">major</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">minor</span><span class="plain">) {</span>
|
||||
<span class="reserved">semantic_version_number</span><span class="plain"> </span><span class="identifier">V</span><span class="plain"> = </span><span class="functiontext">VersionNumbers::null</span><span class="plain">();</span>
|
||||
<span class="identifier">V</span><span class="element">.version_numbers</span><span class="plain">[0] = </span><span class="identifier">major</span><span class="plain">;</span>
|
||||
<span class="identifier">V</span><span class="element">.version_numbers</span><span class="plain">[1] = </span><span class="identifier">minor</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">V</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">VersionNumbers::is_null</span><span class="plain">(</span><span class="reserved">semantic_version_number</span><span class="plain"> </span><span class="identifier">V</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">allow</span><span class="plain">=</span><span class="identifier">TRUE</span><span class="plain">; </span><span class="identifier">i</span><span class="plain"><</span><span class="constant">VERSION_NUMBER_DEPTH</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="element">.version_numbers</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">] < -1)</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">V</span><span class="element">.version_numbers</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">] == -1)</span>
|
||||
<span class="identifier">allow</span><span class="plain"> = </span><span class="identifier">FALSE</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">allow</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">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">allow</span><span class="plain">=</span><span class="identifier">TRUE</span><span class="plain">; </span><span class="identifier">i</span><span class="plain"><</span><span class="constant">SEMVER_NUMBER_DEPTH</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="element">.version_numbers</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">] < -1) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">; </span> <span class="comment">should never happen</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">V</span><span class="element">.version_numbers</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">] == -1) </span><span class="identifier">allow</span><span class="plain"> = </span><span class="identifier">FALSE</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">allow</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">; </span> <span class="comment">should never happen</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">V</span><span class="element">.version_numbers</span><span class="plain">[0] < 0) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
|
@ -110,136 +137,702 @@ Instead they are used to represent the absence of a version number.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function VersionNumbers::null is used in <a href="#SP4">§4</a>.</p>
|
||||
<p class="endnote">The function VersionNumbers::null is used in <a href="#SP7">§7</a>, <a href="#SP7_1">§7.1</a>, <a href="#SP15">§15</a>, <a href="#SP16">§16</a>.</p>
|
||||
|
||||
<p class="endnote">The function VersionNumbers::from_major appears nowhere else.</p>
|
||||
<p class="endnote">The function VersionNumbers::is_null is used in <a href="#SP5">§5</a>, <a href="#SP16">§16</a>, <a href="#SP18">§18</a>, 2/tvm (<a href="2-tvm.html#SP1">§1</a>), 2/cmp (<a href="2-cmp.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function VersionNumbers::from_pair appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function VersionNumbers::is_null is used in <a href="#SP4">§4</a>, <a href="#SP5">§5</a>, 2/tvm (<a href="2-tvm.html#SP1">§1</a>), 2/cmp (<a href="2-cmp.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP4"></a><b>§4. </b>Here we print and parse:
|
||||
<p class="inwebparagraph"><a id="SP5"></a><b>§5. Printing and parsing. </b>Printing is simple enough:
|
||||
</p>
|
||||
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">VersionNumbers::to_text</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">semantic_version_number</span><span class="plain"> </span><span class="identifier">V</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">VersionNumbers::is_null</span><span class="plain">(</span><span class="identifier">V</span><span class="plain">)) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"null"</span><span class="plain">);</span>
|
||||
<span class="reserved">else</span>
|
||||
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=0; (</span><span class="identifier">i</span><span class="plain"><</span><span class="constant">VERSION_NUMBER_DEPTH</span><span class="plain">) && (</span><span class="identifier">V</span><span class="element">.version_numbers</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">] >= 0); </span><span class="identifier">i</span><span class="plain">++) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">i</span><span class="plain">>0) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"."</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%d"</span><span class="plain">, </span><span class="identifier">V</span><span class="element">.version_numbers</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="functiontext">VersionNumbers::is_null</span><span class="plain">(</span><span class="identifier">V</span><span class="plain">)) { </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"null"</span><span class="plain">); </span><span class="reserved">return</span><span class="plain">; }</span>
|
||||
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=0; (</span><span class="identifier">i</span><span class="plain"><</span><span class="constant">SEMVER_NUMBER_DEPTH</span><span class="plain">) && (</span><span class="identifier">V</span><span class="element">.version_numbers</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">] >= 0); </span><span class="identifier">i</span><span class="plain">++) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">i</span><span class="plain">>0) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"."</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%d"</span><span class="plain">, </span><span class="identifier">V</span><span class="element">.version_numbers</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">]);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">V</span><span class="element">.prerelease_segments</span><span class="plain">) {</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">c</span><span class="plain"> = 0;</span>
|
||||
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">T</span><span class="plain">;</span>
|
||||
<span class="identifier">LOOP_OVER_LINKED_LIST</span><span class="plain">(</span><span class="identifier">T</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain">, </span><span class="identifier">V</span><span class="element">.prerelease_segments</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">c</span><span class="plain">++ == 0) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"-"</span><span class="plain">); </span><span class="reserved">else</span><span class="plain"> </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"."</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">T</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">V</span><span class="element">.build_metadata</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"+%S"</span><span class="plain">, </span><span class="identifier">V</span><span class="element">.build_metadata</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function VersionNumbers::to_text is used in <a href="#SP6">§6</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP6"></a><b>§6. </b>And this provides for the <code class="display"><span class="extract">%v</span></code> escape, though we must be careful when
|
||||
using this to pass a pointer to the version, not the version itself;
|
||||
variadic macros are not carefully enough type-checked by <code class="display"><span class="extract">clang</span></code> or <code class="display"><span class="extract">gcc</span></code>
|
||||
to catch this sort of slip.
|
||||
</p>
|
||||
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">VersionNumbers::writer</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">char</span><span class="plain"> *</span><span class="identifier">format_string</span><span class="plain">, </span><span class="reserved">void</span><span class="plain"> *</span><span class="identifier">vE</span><span class="plain">) {</span>
|
||||
<span class="reserved">semantic_version_number</span><span class="plain"> *</span><span class="identifier">V</span><span class="plain"> = (</span><span class="reserved">semantic_version_number</span><span class="plain"> *) </span><span class="identifier">vE</span><span class="plain">;</span>
|
||||
<span class="functiontext">VersionNumbers::to_text</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, *</span><span class="identifier">V</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function VersionNumbers::writer is used in 1/am (<a href="1-am.html#SP3_2">§3.2</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP7"></a><b>§7. </b>Parsing is much more of a slog. The following returns a null version if
|
||||
the text <code class="display"><span class="extract">T</span></code> is in any respect malformed, i.e., if it deviates from the
|
||||
above specification in even the most trivial way. We parse the three parts
|
||||
of a semver version in order: e.g. <code class="display"><span class="extract">3.1.41-alpha.72.zeta+6Q45</span></code> the first
|
||||
part is up to the hyphen, the second part between the hyphen and the plus
|
||||
sign, and the third part runs to the end. The second and third parts are
|
||||
optional, but if both are given, they must be in that order.
|
||||
</p>
|
||||
|
||||
|
||||
<pre class="definitions">
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">MMP_SEMVERPART</span><span class="definitionkeyword"> from </span><span class="constant">1</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">PRE_SEMVERPART</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">BM_SEMVERPART</span>
|
||||
</pre>
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">semantic_version_number</span><span class="plain"> </span><span class="functiontext">VersionNumbers::from_text</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">T</span><span class="plain">) {</span>
|
||||
<span class="reserved">semantic_version_number</span><span class="plain"> </span><span class="identifier">V</span><span class="plain">;</span>
|
||||
<span class="reserved">semantic_version_number</span><span class="plain"> </span><span class="identifier">V</span><span class="plain"> = </span><span class="functiontext">VersionNumbers::null</span><span class="plain">();</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">component</span><span class="plain"> = 0, </span><span class="identifier">val</span><span class="plain"> = -1, </span><span class="identifier">dots_used</span><span class="plain"> = 0, </span><span class="identifier">slashes_used</span><span class="plain"> = 0, </span><span class="identifier">count</span><span class="plain"> = 0;</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">part</span><span class="plain"> = </span><span class="constant">MMP_SEMVERPART</span><span class="plain">;</span>
|
||||
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">prerelease</span><span class="plain">);</span>
|
||||
<span class="identifier">LOOP_THROUGH_TEXT</span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">, </span><span class="identifier">T</span><span class="plain">) {</span>
|
||||
<span class="identifier">wchar_t</span><span class="plain"> </span><span class="identifier">c</span><span class="plain"> = </span><span class="identifier">Str::get</span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">c</span><span class="plain"> == </span><span class="character">'.'</span><span class="plain">) </span><span class="identifier">dots_used</span><span class="plain">++;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">c</span><span class="plain"> == </span><span class="character">'/'</span><span class="plain">) </span><span class="identifier">slashes_used</span><span class="plain">++;</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">c</span><span class="plain"> == </span><span class="character">'.'</span><span class="plain">) || (</span><span class="identifier">c</span><span class="plain"> == </span><span class="character">'/'</span><span class="plain">)) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">val</span><span class="plain"> == -1) </span><span class="reserved">return</span><span class="plain"> </span><span class="functiontext">VersionNumbers::null</span><span class="plain">();</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">component</span><span class="plain"> >= </span><span class="constant">VERSION_NUMBER_DEPTH</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="functiontext">VersionNumbers::null</span><span class="plain">();</span>
|
||||
<span class="identifier">V</span><span class="element">.version_numbers</span><span class="plain">[</span><span class="identifier">component</span><span class="plain">] = </span><span class="identifier">val</span><span class="plain">;</span>
|
||||
<span class="identifier">component</span><span class="plain">++; </span><span class="identifier">val</span><span class="plain"> = -1; </span><span class="identifier">count</span><span class="plain"> = 0;</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">Characters::isdigit</span><span class="plain">(</span><span class="identifier">c</span><span class="plain">)) {</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">digit</span><span class="plain"> = </span><span class="identifier">c</span><span class="plain"> - </span><span class="character">'0'</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">val</span><span class="plain"> == 0) && (</span><span class="identifier">slashes_used</span><span class="plain"> == 0))</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">VersionNumbers::null</span><span class="plain">();</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">val</span><span class="plain"> < 0) </span><span class="identifier">val</span><span class="plain"> = </span><span class="identifier">digit</span><span class="plain">; </span><span class="reserved">else</span><span class="plain"> </span><span class="identifier">val</span><span class="plain"> = 10*</span><span class="identifier">val</span><span class="plain"> + </span><span class="identifier">digit</span><span class="plain">;</span>
|
||||
<span class="identifier">count</span><span class="plain">++;</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">return</span><span class="plain"> </span><span class="functiontext">VersionNumbers::null</span><span class="plain">();</span>
|
||||
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">part</span><span class="plain">) {</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="constant">MMP_SEMVERPART</span><span class="plain">:</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">c</span><span class="plain"> == </span><span class="character">'.'</span><span class="plain">) </span><span class="identifier">dots_used</span><span class="plain">++;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">c</span><span class="plain"> == </span><span class="character">'/'</span><span class="plain">) </span><span class="identifier">slashes_used</span><span class="plain">++;</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">c</span><span class="plain"> == </span><span class="character">'.'</span><span class="plain">) || (</span><span class="identifier">c</span><span class="plain"> == </span><span class="character">'/'</span><span class="plain">) || (</span><span class="identifier">c</span><span class="plain"> == </span><span class="character">'-'</span><span class="plain">) || (</span><span class="identifier">c</span><span class="plain"> == </span><span class="character">'+'</span><span class="plain">)) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">val</span><span class="plain"> == -1) </span><span class="reserved">return</span><span class="plain"> </span><span class="functiontext">VersionNumbers::null</span><span class="plain">();</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">component</span><span class="plain"> >= </span><span class="constant">SEMVER_NUMBER_DEPTH</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="functiontext">VersionNumbers::null</span><span class="plain">();</span>
|
||||
<span class="identifier">V</span><span class="element">.version_numbers</span><span class="plain">[</span><span class="identifier">component</span><span class="plain">] = </span><span class="identifier">val</span><span class="plain">;</span>
|
||||
<span class="identifier">component</span><span class="plain">++; </span><span class="identifier">val</span><span class="plain"> = -1; </span><span class="identifier">count</span><span class="plain"> = 0;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">c</span><span class="plain"> == </span><span class="character">'-'</span><span class="plain">) </span><span class="identifier">part</span><span class="plain"> = </span><span class="constant">PRE_SEMVERPART</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">c</span><span class="plain"> == </span><span class="character">'+'</span><span class="plain">) </span><span class="identifier">part</span><span class="plain"> = </span><span class="constant">BM_SEMVERPART</span><span class="plain">;</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Characters::isdigit</span><span class="plain">(</span><span class="identifier">c</span><span class="plain">)) {</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">digit</span><span class="plain"> = </span><span class="identifier">c</span><span class="plain"> - </span><span class="character">'0'</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">val</span><span class="plain"> == 0) && (</span><span class="identifier">slashes_used</span><span class="plain"> == 0))</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">VersionNumbers::null</span><span class="plain">();</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">val</span><span class="plain"> < 0) </span><span class="identifier">val</span><span class="plain"> = </span><span class="identifier">digit</span><span class="plain">; </span><span class="reserved">else</span><span class="plain"> </span><span class="identifier">val</span><span class="plain"> = 10*</span><span class="identifier">val</span><span class="plain"> + </span><span class="identifier">digit</span><span class="plain">;</span>
|
||||
<span class="identifier">count</span><span class="plain">++;</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">return</span><span class="plain"> </span><span class="functiontext">VersionNumbers::null</span><span class="plain">();</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="constant">PRE_SEMVERPART</span><span class="plain">:</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">c</span><span class="plain"> == </span><span class="character">'.'</span><span class="plain">) {</span>
|
||||
<<span class="cwebmacro">Add prerelease content</span> <span class="cwebmacronumber">7.1</span>><span class="plain">;</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">c</span><span class="plain"> == </span><span class="character">'+'</span><span class="plain">) {</span>
|
||||
<<span class="cwebmacro">Add prerelease content</span> <span class="cwebmacronumber">7.1</span>><span class="plain">; </span><span class="identifier">part</span><span class="plain"> = </span><span class="constant">BM_SEMVERPART</span><span class="plain">;</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
||||
<span class="identifier">PUT_TO</span><span class="plain">(</span><span class="identifier">prerelease</span><span class="plain">, </span><span class="identifier">c</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="constant">BM_SEMVERPART</span><span class="plain">:</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">V</span><span class="element">.build_metadata</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">V</span><span class="element">.build_metadata</span><span class="plain"> = </span><span class="identifier">Str::new</span><span class="plain">();</span>
|
||||
<span class="identifier">PUT_TO</span><span class="plain">(</span><span class="identifier">V</span><span class="element">.build_metadata</span><span class="plain">, </span><span class="identifier">c</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">val</span><span class="plain"> == -1) </span><span class="reserved">return</span><span class="plain"> </span><span class="functiontext">VersionNumbers::null</span><span class="plain">();</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">part</span><span class="plain"> == </span><span class="constant">PRE_SEMVERPART</span><span class="plain">) && (</span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">prerelease</span><span class="plain">) > 0)) </span><<span class="cwebmacro">Add prerelease content</span> <span class="cwebmacronumber">7.1</span>><span class="plain">;</span>
|
||||
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">prerelease</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">dots_used</span><span class="plain"> > 0) && (</span><span class="identifier">slashes_used</span><span class="plain"> > 0)) </span><span class="reserved">return</span><span class="plain"> </span><span class="functiontext">VersionNumbers::null</span><span class="plain">();</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">slashes_used</span><span class="plain"> > 0) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">component</span><span class="plain"> > 1) </span><span class="reserved">return</span><span class="plain"> </span><span class="functiontext">VersionNumbers::null</span><span class="plain">();</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">count</span><span class="plain"> != 6) </span><span class="reserved">return</span><span class="plain"> </span><span class="functiontext">VersionNumbers::null</span><span class="plain">();</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">component</span><span class="plain"> >= </span><span class="constant">VERSION_NUMBER_DEPTH</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="functiontext">VersionNumbers::null</span><span class="plain">();</span>
|
||||
<span class="identifier">V</span><span class="element">.version_numbers</span><span class="plain">[</span><span class="identifier">component</span><span class="plain">] = </span><span class="identifier">val</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">=</span><span class="identifier">component</span><span class="plain">+1; </span><span class="identifier">i</span><span class="plain"><</span><span class="constant">VERSION_NUMBER_DEPTH</span><span class="plain">; </span><span class="identifier">i</span><span class="plain">++) </span><span class="identifier">V</span><span class="element">.version_numbers</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">] = -1;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">part</span><span class="plain"> == </span><span class="constant">MMP_SEMVERPART</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">val</span><span class="plain"> == -1) </span><span class="reserved">return</span><span class="plain"> </span><span class="functiontext">VersionNumbers::null</span><span class="plain">();</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">component</span><span class="plain"> >= </span><span class="constant">SEMVER_NUMBER_DEPTH</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="functiontext">VersionNumbers::null</span><span class="plain">();</span>
|
||||
<span class="identifier">V</span><span class="element">.version_numbers</span><span class="plain">[</span><span class="identifier">component</span><span class="plain">] = </span><span class="identifier">val</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">V</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function VersionNumbers::to_text appears nowhere else.</p>
|
||||
<p class="endnote">The function VersionNumbers::from_text is used in <a href="#SP22">§22</a>, 2/tvm (<a href="2-tvm.html#SP1">§1</a>), 2/cmp (<a href="2-cmp.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function VersionNumbers::writer appears nowhere else.</p>
|
||||
<p class="inwebparagraph"><a id="SP7_1"></a><b>§7.1. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Add prerelease content</span> <span class="cwebmacronumber">7.1</span>> =
|
||||
</code></p>
|
||||
|
||||
<p class="endnote">The function VersionNumbers::from_text is used in 2/tvm (<a href="2-tvm.html#SP1">§1</a>), 2/cmp (<a href="2-cmp.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP5"></a><b>§5. </b>And now comparison operators. Note that all null versions are equal, and
|
||||
are always both <code class="display"><span class="extract"><=</span></code> and <code class="display"><span class="extract">>=</span></code> all versions. This means our ordering is not
|
||||
trichotomous (though it is on the set of non-null versions), but this
|
||||
ensures that null versions can be used to mean "unlimited" in either direction.
|
||||
<pre class="displaydefn">
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">prerelease</span><span class="plain">) == 0) </span><span class="reserved">return</span><span class="plain"> </span><span class="functiontext">VersionNumbers::null</span><span class="plain">();</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">V</span><span class="element">.prerelease_segments</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">V</span><span class="element">.prerelease_segments</span><span class="plain"> = </span><span class="identifier">NEW_LINKED_LIST</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain">);</span>
|
||||
<span class="identifier">ADD_TO_LINKED_LIST</span><span class="plain">(</span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">prerelease</span><span class="plain">), </span><span class="identifier">text_stream</span><span class="plain">, </span><span class="identifier">V</span><span class="element">.prerelease_segments</span><span class="plain">);</span>
|
||||
<span class="identifier">Str::clear</span><span class="plain">(</span><span class="identifier">prerelease</span><span class="plain">);</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">This code is used in <a href="#SP7">§7</a> (three times).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP8"></a><b>§8. Precendence. </b>The most important part of the semver standard is the rule on which versions
|
||||
take precedence over which others, and we follow it exactly. The following
|
||||
criteria are used in turn: major version; minor version; patch version;
|
||||
any prerelease elements, which must be compared numerically if consisting
|
||||
of digits only, and alphabetically otherwise; and finally the number of
|
||||
prerelease elements. Build metadata is disregarded entirely.
|
||||
</p>
|
||||
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">VersionNumbers::le</span><span class="plain">(</span><span class="reserved">semantic_version_number</span><span class="plain"> </span><span class="identifier">V1</span><span class="plain">, </span><span class="reserved">semantic_version_number</span><span class="plain"> </span><span class="identifier">V2</span><span class="plain">) {</span>
|
||||
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=0; </span><span class="identifier">i</span><span class="plain"><</span><span class="constant">SEMVER_NUMBER_DEPTH</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">N1</span><span class="plain"> = </span><span class="functiontext">VersionNumbers::floor</span><span class="plain">(</span><span class="identifier">V1</span><span class="element">.version_numbers</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">N2</span><span class="plain"> = </span><span class="functiontext">VersionNumbers::floor</span><span class="plain">(</span><span class="identifier">V2</span><span class="element">.version_numbers</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">N1</span><span class="plain"> > </span><span class="identifier">N2</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">N1</span><span class="plain"> < </span><span class="identifier">N2</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="identifier">linked_list_item</span><span class="plain"> *</span><span class="identifier">I1</span><span class="plain"> = (</span><span class="identifier">V1</span><span class="element">.prerelease_segments</span><span class="plain">)?(</span><span class="identifier">LinkedLists::first</span><span class="plain">(</span><span class="identifier">V1</span><span class="element">.prerelease_segments</span><span class="plain">)):</span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">linked_list_item</span><span class="plain"> *</span><span class="identifier">I2</span><span class="plain"> = (</span><span class="identifier">V2</span><span class="element">.prerelease_segments</span><span class="plain">)?(</span><span class="identifier">LinkedLists::first</span><span class="plain">(</span><span class="identifier">V2</span><span class="element">.prerelease_segments</span><span class="plain">)):</span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="reserved">while</span><span class="plain"> ((</span><span class="identifier">I1</span><span class="plain">) && (</span><span class="identifier">I2</span><span class="plain">)) {</span>
|
||||
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">T1</span><span class="plain"> = (</span><span class="identifier">text_stream</span><span class="plain"> *) </span><span class="identifier">LinkedLists::content</span><span class="plain">(</span><span class="identifier">I1</span><span class="plain">);</span>
|
||||
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">T2</span><span class="plain"> = (</span><span class="identifier">text_stream</span><span class="plain"> *) </span><span class="identifier">LinkedLists::content</span><span class="plain">(</span><span class="identifier">I2</span><span class="plain">);</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">N1</span><span class="plain"> = </span><span class="functiontext">VersionNumbers::strict_atoi</span><span class="plain">(</span><span class="identifier">T1</span><span class="plain">);</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">N2</span><span class="plain"> = </span><span class="functiontext">VersionNumbers::strict_atoi</span><span class="plain">(</span><span class="identifier">T2</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">N1</span><span class="plain"> >= 0) && (</span><span class="identifier">N2</span><span class="plain"> >= 0)) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">N1</span><span class="plain"> < </span><span class="identifier">N2</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">N1</span><span class="plain"> > </span><span class="identifier">N2</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::ne</span><span class="plain">(</span><span class="identifier">T1</span><span class="plain">, </span><span class="identifier">T2</span><span class="plain">)) {</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">c</span><span class="plain"> = </span><span class="identifier">Str::cmp</span><span class="plain">(</span><span class="identifier">T1</span><span class="plain">, </span><span class="identifier">T2</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">c</span><span class="plain"> < 0) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">c</span><span class="plain"> > 0) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="identifier">I1</span><span class="plain"> = </span><span class="identifier">LinkedLists::next</span><span class="plain">(</span><span class="identifier">I1</span><span class="plain">);</span>
|
||||
<span class="identifier">I2</span><span class="plain"> = </span><span class="identifier">LinkedLists::next</span><span class="plain">(</span><span class="identifier">I2</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">I1</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) && (</span><span class="identifier">I2</span><span class="plain">)) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">I1</span><span class="plain">) && (</span><span class="identifier">I2</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function VersionNumbers::le is used in <a href="#SP11">§11</a>, <a href="#SP18">§18</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP9"></a><b>§9. </b>The effect of this is to read unspecified versions of major, minor or patch
|
||||
as if they were 0:
|
||||
</p>
|
||||
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">VersionNumbers::floor</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">N</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> < 0) </span><span class="reserved">return</span><span class="plain"> 0;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">N</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function VersionNumbers::floor is used in <a href="#SP8">§8</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP10"></a><b>§10. </b>This returns a non-negative integer if <code class="display"><span class="extract">T</span></code> contains only digits, and <code class="display"><span class="extract">-1</span></code>
|
||||
otherwise. If the value has more than about 10 digits, then the result will
|
||||
not be meaningful, which I think is a technical violation of the standard.
|
||||
</p>
|
||||
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">VersionNumbers::strict_atoi</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">T</span><span class="plain">) {</span>
|
||||
<span class="identifier">LOOP_THROUGH_TEXT</span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">, </span><span class="identifier">T</span><span class="plain">)</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Characters::isdigit</span><span class="plain">(</span><span class="identifier">Str::get</span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">)) == </span><span class="identifier">FALSE</span><span class="plain">)</span>
|
||||
<span class="reserved">return</span><span class="plain"> -1;</span>
|
||||
<span class="identifier">wchar_t</span><span class="plain"> </span><span class="identifier">c</span><span class="plain"> = </span><span class="identifier">Str::get_first_char</span><span class="plain">(</span><span class="identifier">T</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">c</span><span class="plain"> == </span><span class="character">'0'</span><span class="plain">) && (</span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">T</span><span class="plain">) > 1)) </span><span class="reserved">return</span><span class="plain"> -1;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">Str::atoi</span><span class="plain">(</span><span class="identifier">T</span><span class="plain">, 0);</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function VersionNumbers::strict_atoi is used in <a href="#SP8">§8</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP11"></a><b>§11. Trichotomy. </b>We now use the above function to construct ordering relations on semvers.
|
||||
These are trichotomous, that is, for each pair <code class="display"><span class="extract">V1, V2</span></code>, exactly one of the
|
||||
<code class="display"><span class="extract">VersionNumbers::eq(V1, V2)</span></code>, <code class="display"><span class="extract">VersionNumbers::gt(V1, V2)</span></code>, <code class="display"><span class="extract">VersionNumbers::lt(V1, V2)</span></code>
|
||||
is true.
|
||||
</p>
|
||||
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">VersionNumbers::eq</span><span class="plain">(</span><span class="reserved">semantic_version_number</span><span class="plain"> </span><span class="identifier">V1</span><span class="plain">, </span><span class="reserved">semantic_version_number</span><span class="plain"> </span><span class="identifier">V2</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">VersionNumbers::is_null</span><span class="plain">(</span><span class="identifier">V1</span><span class="plain">)) </span><span class="reserved">return</span><span class="plain"> </span><span class="functiontext">VersionNumbers::is_null</span><span class="plain">(</span><span class="identifier">V2</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">VersionNumbers::is_null</span><span class="plain">(</span><span class="identifier">V2</span><span class="plain">)) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=0; </span><span class="identifier">i</span><span class="plain"><</span><span class="constant">VERSION_NUMBER_DEPTH</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">V1</span><span class="element">.version_numbers</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">] != </span><span class="identifier">V2</span><span class="element">.version_numbers</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">])</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="functiontext">VersionNumbers::le</span><span class="plain">(</span><span class="identifier">V1</span><span class="plain">, </span><span class="identifier">V2</span><span class="plain">)) && (</span><span class="functiontext">VersionNumbers::le</span><span class="plain">(</span><span class="identifier">V2</span><span class="plain">, </span><span class="identifier">V1</span><span class="plain">)))</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">VersionNumbers::ne</span><span class="plain">(</span><span class="reserved">semantic_version_number</span><span class="plain"> </span><span class="identifier">V1</span><span class="plain">, </span><span class="reserved">semantic_version_number</span><span class="plain"> </span><span class="identifier">V2</span><span class="plain">) {</span>
|
||||
<span class="reserved">return</span><span class="plain"> (</span><span class="functiontext">VersionNumbers::eq</span><span class="plain">(</span><span class="identifier">V1</span><span class="plain">, </span><span class="identifier">V2</span><span class="plain">))?</span><span class="identifier">FALSE</span><span class="plain">:</span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">VersionNumbers::le</span><span class="plain">(</span><span class="reserved">semantic_version_number</span><span class="plain"> </span><span class="identifier">V1</span><span class="plain">, </span><span class="reserved">semantic_version_number</span><span class="plain"> </span><span class="identifier">V2</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">VersionNumbers::is_null</span><span class="plain">(</span><span class="identifier">V1</span><span class="plain">)) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">VersionNumbers::is_null</span><span class="plain">(</span><span class="identifier">V2</span><span class="plain">)) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=0; </span><span class="identifier">i</span><span class="plain"><</span><span class="constant">VERSION_NUMBER_DEPTH</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">V1</span><span class="element">.version_numbers</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">] > </span><span class="identifier">V2</span><span class="element">.version_numbers</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">])</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">VersionNumbers::gt</span><span class="plain">(</span><span class="reserved">semantic_version_number</span><span class="plain"> </span><span class="identifier">V1</span><span class="plain">, </span><span class="reserved">semantic_version_number</span><span class="plain"> </span><span class="identifier">V2</span><span class="plain">) {</span>
|
||||
<span class="reserved">return</span><span class="plain"> (</span><span class="functiontext">VersionNumbers::le</span><span class="plain">(</span><span class="identifier">V1</span><span class="plain">, </span><span class="identifier">V2</span><span class="plain">))?</span><span class="identifier">FALSE</span><span class="plain">:</span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">VersionNumbers::ge</span><span class="plain">(</span><span class="reserved">semantic_version_number</span><span class="plain"> </span><span class="identifier">V1</span><span class="plain">, </span><span class="reserved">semantic_version_number</span><span class="plain"> </span><span class="identifier">V2</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">VersionNumbers::is_null</span><span class="plain">(</span><span class="identifier">V1</span><span class="plain">)) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">VersionNumbers::is_null</span><span class="plain">(</span><span class="identifier">V2</span><span class="plain">)) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=0; </span><span class="identifier">i</span><span class="plain"><</span><span class="constant">VERSION_NUMBER_DEPTH</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">V1</span><span class="element">.version_numbers</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">] < </span><span class="identifier">V2</span><span class="element">.version_numbers</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">])</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">VersionNumbers::le</span><span class="plain">(</span><span class="identifier">V2</span><span class="plain">, </span><span class="identifier">V1</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">VersionNumbers::lt</span><span class="plain">(</span><span class="reserved">semantic_version_number</span><span class="plain"> </span><span class="identifier">V1</span><span class="plain">, </span><span class="reserved">semantic_version_number</span><span class="plain"> </span><span class="identifier">V2</span><span class="plain">) {</span>
|
||||
<span class="reserved">return</span><span class="plain"> (</span><span class="functiontext">VersionNumbers::ge</span><span class="plain">(</span><span class="identifier">V1</span><span class="plain">, </span><span class="identifier">V2</span><span class="plain">))?</span><span class="identifier">FALSE</span><span class="plain">:</span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function VersionNumbers::eq is used in 2/tvm (<a href="2-tvm.html#SP1">§1</a>), 2/cmp (<a href="2-cmp.html#SP1">§1</a>).</p>
|
||||
<p class="endnote">The function VersionNumbers::eq is used in <a href="#SP12">§12</a>, <a href="#SP22">§22</a>, 2/tvm (<a href="2-tvm.html#SP1">§1</a>), 2/cmp (<a href="2-cmp.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function VersionNumbers::ne appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function VersionNumbers::le appears nowhere else.</p>
|
||||
<p class="endnote">The function VersionNumbers::gt is used in <a href="#SP12">§12</a>, <a href="#SP18">§18</a>, <a href="#SP22">§22</a>.</p>
|
||||
|
||||
<p class="endnote">The function VersionNumbers::gt appears nowhere else.</p>
|
||||
<p class="endnote">The function VersionNumbers::ge is used in <a href="#SP18">§18</a>.</p>
|
||||
|
||||
<p class="endnote">The function VersionNumbers::ge appears nowhere else.</p>
|
||||
<p class="endnote">The function VersionNumbers::lt is used in <a href="#SP18">§18</a>, <a href="#SP22">§22</a>.</p>
|
||||
|
||||
<p class="endnote">The function VersionNumbers::lt appears nowhere else.</p>
|
||||
<p class="inwebparagraph"><a id="SP12"></a><b>§12. </b>And the following can be used for sorting, following the <code class="display"><span class="extract">strcmp</span></code> convention.
|
||||
</p>
|
||||
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">VersionNumbers::cmp</span><span class="plain">(</span><span class="reserved">semantic_version_number</span><span class="plain"> </span><span class="identifier">V1</span><span class="plain">, </span><span class="reserved">semantic_version_number</span><span class="plain"> </span><span class="identifier">V2</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">VersionNumbers::eq</span><span class="plain">(</span><span class="identifier">V1</span><span class="plain">, </span><span class="identifier">V2</span><span class="plain">)) </span><span class="reserved">return</span><span class="plain"> 0;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">VersionNumbers::gt</span><span class="plain">(</span><span class="identifier">V1</span><span class="plain">, </span><span class="identifier">V2</span><span class="plain">)) </span><span class="reserved">return</span><span class="plain"> 1;</span>
|
||||
<span class="reserved">return</span><span class="plain"> -1;</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function VersionNumbers::cmp is used in <a href="#SP20">§20</a>, <a href="#SP21">§21</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP13"></a><b>§13. Ranges. </b>We often want to check if a semver lies in a given precedence range, which we
|
||||
store as an "interval" in the mathematical sense. For example, the range <code class="display"><span class="extract">[2,6)</span></code>
|
||||
means all versions from 2.0.0 (inclusve) up to, but not equal to, 6.0.0. The
|
||||
lower end is called "closed" because it includes the end-value 2.0.0, and the
|
||||
upper end "open" because it does not. An infinite end means that there
|
||||
os no restriction in that direction; an empty end means that, in fact, the
|
||||
interval is the empty set, that is, that no version number can ever satisfy it.
|
||||
</p>
|
||||
|
||||
<p class="inwebparagraph">The <code class="display"><span class="extract">end_value</span></code> element is meaningful only for <code class="display"><span class="extract">CLOSED_RANGE_END</span></code> and <code class="display"><span class="extract">OPEN_RANGE_END</span></code>
|
||||
ends. If one end is marked <code class="display"><span class="extract">EMPTY_RANGE_END</span></code>, so must the other be: it makes
|
||||
no sense for an interval to be empty seen from one end but not the other.
|
||||
</p>
|
||||
|
||||
|
||||
<pre class="definitions">
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">CLOSED_RANGE_END</span><span class="definitionkeyword"> from </span><span class="constant">1</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">OPEN_RANGE_END</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">INFINITE_RANGE_END</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">EMPTY_RANGE_END</span>
|
||||
</pre>
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">range_end</span><span class="plain"> {</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">end_type</span><span class="plain">;</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">semantic_version_number</span><span class="plain"> </span><span class="identifier">end_value</span><span class="plain">;</span>
|
||||
<span class="plain">} </span><span class="reserved">range_end</span><span class="plain">;</span>
|
||||
|
||||
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">semver_range</span><span class="plain"> {</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">range_end</span><span class="plain"> </span><span class="identifier">lower</span><span class="plain">;</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">range_end</span><span class="plain"> </span><span class="identifier">upper</span><span class="plain">;</span>
|
||||
<span class="identifier">MEMORY_MANAGEMENT</span>
|
||||
<span class="plain">} </span><span class="reserved">semver_range</span><span class="plain">;</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The structure range_end is private to this section.</p>
|
||||
|
||||
<p class="endnote">The structure semver_range is private to this section.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP14"></a><b>§14. </b>As hinted above, the notation <code class="display"><span class="extract">[</span></code> and <code class="display"><span class="extract">]</span></code> is used for closed ends, and <code class="display"><span class="extract">(</span></code>
|
||||
and <code class="display"><span class="extract">)</span></code> for open ones.
|
||||
</p>
|
||||
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">VersionNumbers::write_range</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">semver_range</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"no range"</span><span class="plain">);</span>
|
||||
<span class="reserved">switch</span><span class="plain">(</span><span class="identifier">R</span><span class="plain">-</span><span class="element">>lower.end_type</span><span class="plain">) {</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="constant">CLOSED_RANGE_END</span><span class="plain">: </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"[%v,"</span><span class="plain">, &(</span><span class="identifier">R</span><span class="plain">-</span><span class="element">>lower.end_value</span><span class="plain">)); </span><span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="constant">OPEN_RANGE_END</span><span class="plain">: </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"(%v,"</span><span class="plain">, &(</span><span class="identifier">R</span><span class="plain">-</span><span class="element">>lower.end_value</span><span class="plain">)); </span><span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="constant">INFINITE_RANGE_END</span><span class="plain">: </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"(-infty,"</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="constant">EMPTY_RANGE_END</span><span class="plain">: </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"empty"</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">switch</span><span class="plain">(</span><span class="identifier">R</span><span class="plain">-</span><span class="element">>upper.end_type</span><span class="plain">) {</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="constant">CLOSED_RANGE_END</span><span class="plain">: </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%v]"</span><span class="plain">, &(</span><span class="identifier">R</span><span class="plain">-</span><span class="element">>upper.end_value</span><span class="plain">)); </span><span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="constant">OPEN_RANGE_END</span><span class="plain">: </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%v)"</span><span class="plain">, &(</span><span class="identifier">R</span><span class="plain">-</span><span class="element">>upper.end_value</span><span class="plain">)); </span><span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="constant">INFINITE_RANGE_END</span><span class="plain">: </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"infty)"</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function VersionNumbers::write_range is used in <a href="#SP22">§22</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP15"></a><b>§15. </b>The "allow anything" range runs from minus to plus infinity. Every version
|
||||
number lies in this range.
|
||||
</p>
|
||||
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">semver_range</span><span class="plain"> *</span><span class="functiontext">VersionNumbers::any_range</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
|
||||
<span class="reserved">semver_range</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">semver_range</span><span class="plain">);</span>
|
||||
<span class="identifier">R</span><span class="plain">-</span><span class="element">>lower.end_type</span><span class="plain"> = </span><span class="constant">INFINITE_RANGE_END</span><span class="plain">;</span>
|
||||
<span class="identifier">R</span><span class="plain">-</span><span class="element">>lower.end_value</span><span class="plain"> = </span><span class="functiontext">VersionNumbers::null</span><span class="plain">();</span>
|
||||
<span class="identifier">R</span><span class="plain">-</span><span class="element">>upper.end_type</span><span class="plain"> = </span><span class="constant">INFINITE_RANGE_END</span><span class="plain">;</span>
|
||||
<span class="identifier">R</span><span class="plain">-</span><span class="element">>upper.end_value</span><span class="plain"> = </span><span class="functiontext">VersionNumbers::null</span><span class="plain">();</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">R</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">VersionNumbers::is_any_range</span><span class="plain">(</span><span class="reserved">semver_range</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">R</span><span class="plain">-</span><span class="element">>lower.end_type</span><span class="plain"> == </span><span class="constant">INFINITE_RANGE_END</span><span class="plain">) && (</span><span class="identifier">R</span><span class="plain">-</span><span class="element">>upper.end_type</span><span class="plain"> == </span><span class="constant">INFINITE_RANGE_END</span><span class="plain">))</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function VersionNumbers::any_range is used in <a href="#SP16">§16</a>, <a href="#SP17">§17</a>.</p>
|
||||
|
||||
<p class="endnote">The function VersionNumbers::is_any_range appears nowhere else.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP16"></a><b>§16. </b>The "compatibility" range for a given version lies at the heart of semver:
|
||||
to be compatible with version <code class="display"><span class="extract">V</span></code>, version <code class="display"><span class="extract">W</span></code> must be of equal or greater
|
||||
precedence, and must have the same major version number. For example,
|
||||
for <code class="display"><span class="extract">2.1.7</span></code> the range will be <code class="display"><span class="extract">[2.1.7, 3-A)</span></code>, all versions at least 2.1.7 but
|
||||
not as high as 3.0.0-A.
|
||||
</p>
|
||||
|
||||
<p class="inwebparagraph">Note that <code class="display"><span class="extract">3.0.0-A</span></code> is the least precendent version allowed by semver with
|
||||
major version 3. The <code class="display"><span class="extract">-</span></code> gives it lower precedence than all release versions of
|
||||
3.0.0; the fact that upper case <code class="display"><span class="extract">A</span></code> is alphabetically the earliest non-empty
|
||||
alphanumeric string gives it lower precendence than all other prerelease
|
||||
versions.
|
||||
</p>
|
||||
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">semver_range</span><span class="plain"> *</span><span class="functiontext">VersionNumbers::compatibility_range</span><span class="plain">(</span><span class="reserved">semantic_version_number</span><span class="plain"> </span><span class="identifier">V</span><span class="plain">) {</span>
|
||||
<span class="reserved">semver_range</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain"> = </span><span class="functiontext">VersionNumbers::any_range</span><span class="plain">();</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">VersionNumbers::is_null</span><span class="plain">(</span><span class="identifier">V</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
||||
<span class="identifier">R</span><span class="plain">-</span><span class="element">>lower.end_type</span><span class="plain"> = </span><span class="constant">CLOSED_RANGE_END</span><span class="plain">;</span>
|
||||
<span class="identifier">R</span><span class="plain">-</span><span class="element">>lower.end_value</span><span class="plain"> = </span><span class="identifier">V</span><span class="plain">;</span>
|
||||
<span class="identifier">R</span><span class="plain">-</span><span class="element">>upper.end_type</span><span class="plain"> = </span><span class="constant">OPEN_RANGE_END</span><span class="plain">;</span>
|
||||
<span class="reserved">semantic_version_number</span><span class="plain"> </span><span class="identifier">W</span><span class="plain"> = </span><span class="functiontext">VersionNumbers::null</span><span class="plain">();</span>
|
||||
<span class="identifier">W</span><span class="element">.version_numbers</span><span class="plain">[0] = </span><span class="identifier">V</span><span class="element">.version_numbers</span><span class="plain">[0] + 1;</span>
|
||||
<span class="identifier">W</span><span class="element">.prerelease_segments</span><span class="plain"> = </span><span class="identifier">NEW_LINKED_LIST</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain">);</span>
|
||||
<span class="identifier">ADD_TO_LINKED_LIST</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"A"</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain">, </span><span class="identifier">W</span><span class="element">.prerelease_segments</span><span class="plain">);</span>
|
||||
<span class="identifier">R</span><span class="plain">-</span><span class="element">>upper.end_value</span><span class="plain"> = </span><span class="identifier">W</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">R</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function VersionNumbers::compatibility_range is used in <a href="#SP22">§22</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP17"></a><b>§17. </b>More straightforwardly, these ranges are for anything from V, or up to V,
|
||||
inclusive:
|
||||
</p>
|
||||
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">semver_range</span><span class="plain"> *</span><span class="functiontext">VersionNumbers::at_least_range</span><span class="plain">(</span><span class="reserved">semantic_version_number</span><span class="plain"> </span><span class="identifier">V</span><span class="plain">) {</span>
|
||||
<span class="reserved">semver_range</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain"> = </span><span class="functiontext">VersionNumbers::any_range</span><span class="plain">();</span>
|
||||
<span class="identifier">R</span><span class="plain">-</span><span class="element">>lower.end_type</span><span class="plain"> = </span><span class="constant">CLOSED_RANGE_END</span><span class="plain">;</span>
|
||||
<span class="identifier">R</span><span class="plain">-</span><span class="element">>lower.end_value</span><span class="plain"> = </span><span class="identifier">V</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">R</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">semver_range</span><span class="plain"> *</span><span class="functiontext">VersionNumbers::at_most_range</span><span class="plain">(</span><span class="reserved">semantic_version_number</span><span class="plain"> </span><span class="identifier">V</span><span class="plain">) {</span>
|
||||
<span class="reserved">semver_range</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain"> = </span><span class="functiontext">VersionNumbers::any_range</span><span class="plain">();</span>
|
||||
<span class="identifier">R</span><span class="plain">-</span><span class="element">>upper.end_type</span><span class="plain"> = </span><span class="constant">CLOSED_RANGE_END</span><span class="plain">;</span>
|
||||
<span class="identifier">R</span><span class="plain">-</span><span class="element">>upper.end_value</span><span class="plain"> = </span><span class="identifier">V</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">R</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function VersionNumbers::at_least_range is used in <a href="#SP22">§22</a>.</p>
|
||||
|
||||
<p class="endnote">The function VersionNumbers::at_most_range is used in <a href="#SP22">§22</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP18"></a><b>§18. </b>Here we test whether V is at least a given end, and then at most:
|
||||
</p>
|
||||
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">VersionNumbers::version_ge_end</span><span class="plain">(</span><span class="reserved">semantic_version_number</span><span class="plain"> </span><span class="identifier">V</span><span class="plain">, </span><span class="reserved">range_end</span><span class="plain"> </span><span class="identifier">E</span><span class="plain">) {</span>
|
||||
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">E</span><span class="element">.end_type</span><span class="plain">) {</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="constant">CLOSED_RANGE_END</span><span class="plain">:</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">VersionNumbers::is_null</span><span class="plain">(</span><span class="identifier">V</span><span class="plain">)) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">VersionNumbers::ge</span><span class="plain">(</span><span class="identifier">V</span><span class="plain">, </span><span class="identifier">E</span><span class="element">.end_value</span><span class="plain">)) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="constant">OPEN_RANGE_END</span><span class="plain">:</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">VersionNumbers::is_null</span><span class="plain">(</span><span class="identifier">V</span><span class="plain">)) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">VersionNumbers::gt</span><span class="plain">(</span><span class="identifier">V</span><span class="plain">, </span><span class="identifier">E</span><span class="element">.end_value</span><span class="plain">)) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="constant">INFINITE_RANGE_END</span><span class="plain">: </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="constant">EMPTY_RANGE_END</span><span class="plain">: </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">VersionNumbers::version_le_end</span><span class="plain">(</span><span class="reserved">semantic_version_number</span><span class="plain"> </span><span class="identifier">V</span><span class="plain">, </span><span class="reserved">range_end</span><span class="plain"> </span><span class="identifier">E</span><span class="plain">) {</span>
|
||||
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">E</span><span class="element">.end_type</span><span class="plain">) {</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="constant">CLOSED_RANGE_END</span><span class="plain">:</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">VersionNumbers::is_null</span><span class="plain">(</span><span class="identifier">V</span><span class="plain">)) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">VersionNumbers::le</span><span class="plain">(</span><span class="identifier">V</span><span class="plain">, </span><span class="identifier">E</span><span class="element">.end_value</span><span class="plain">)) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="constant">OPEN_RANGE_END</span><span class="plain">:</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">VersionNumbers::is_null</span><span class="plain">(</span><span class="identifier">V</span><span class="plain">)) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">VersionNumbers::lt</span><span class="plain">(</span><span class="identifier">V</span><span class="plain">, </span><span class="identifier">E</span><span class="element">.end_value</span><span class="plain">)) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="constant">INFINITE_RANGE_END</span><span class="plain">: </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="constant">EMPTY_RANGE_END</span><span class="plain">: </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function VersionNumbers::version_ge_end is used in <a href="#SP19">§19</a>.</p>
|
||||
|
||||
<p class="endnote">The function VersionNumbers::version_le_end is used in <a href="#SP19">§19</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP19"></a><b>§19. </b>This allows a simple way to write:
|
||||
</p>
|
||||
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">VersionNumbers::in_range</span><span class="plain">(</span><span class="reserved">semantic_version_number</span><span class="plain"> </span><span class="identifier">V</span><span class="plain">, </span><span class="reserved">semver_range</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="functiontext">VersionNumbers::version_ge_end</span><span class="plain">(</span><span class="identifier">V</span><span class="plain">, </span><span class="identifier">R</span><span class="plain">-</span><span class="element">>lower</span><span class="plain">)) &&</span>
|
||||
<span class="plain">(</span><span class="functiontext">VersionNumbers::version_le_end</span><span class="plain">(</span><span class="identifier">V</span><span class="plain">, </span><span class="identifier">R</span><span class="plain">-</span><span class="element">>upper</span><span class="plain">))) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function VersionNumbers::in_range appears nowhere else.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP20"></a><b>§20. </b>The following decides which end restriction is stricter: it returns 1
|
||||
of <code class="display"><span class="extract">E1</span></code> is, -1 if <code class="display"><span class="extract">E2</span></code> is, and 0 if they are equally onerous.
|
||||
</p>
|
||||
|
||||
<p class="inwebparagraph">The empty set is as strict as it gets: nothing qualifies.
|
||||
</p>
|
||||
|
||||
<p class="inwebparagraph">Similarly, infinite ends are as relaxed as can be: everything qualifies.
|
||||
</p>
|
||||
|
||||
<p class="inwebparagraph">And otherwise, we need to know which end we're looking at in order to decide:
|
||||
a lower end of <code class="display"><span class="extract">[4, ...]</span></code> is stricter than a lower end of <code class="display"><span class="extract">[3, ...]</span></code>, but an
|
||||
upper end of <code class="display"><span class="extract">[..., 4]</span></code> is not as strict as an upper end of <code class="display"><span class="extract">[..., 3]</span></code>. Where
|
||||
the boundary value is the same, open ends are stricter than closed ends.
|
||||
</p>
|
||||
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">VersionNumbers::stricter</span><span class="plain">(</span><span class="reserved">range_end</span><span class="plain"> </span><span class="identifier">E1</span><span class="plain">, </span><span class="reserved">range_end</span><span class="plain"> </span><span class="identifier">E2</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">lower</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">E1</span><span class="element">.end_type</span><span class="plain"> == </span><span class="constant">EMPTY_RANGE_END</span><span class="plain">) && (</span><span class="identifier">E2</span><span class="element">.end_type</span><span class="plain"> == </span><span class="constant">EMPTY_RANGE_END</span><span class="plain">)) </span><span class="reserved">return</span><span class="plain"> 0;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">E1</span><span class="element">.end_type</span><span class="plain"> == </span><span class="constant">EMPTY_RANGE_END</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> 1;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">E2</span><span class="element">.end_type</span><span class="plain"> == </span><span class="constant">EMPTY_RANGE_END</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> -1;</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">E1</span><span class="element">.end_type</span><span class="plain"> == </span><span class="constant">INFINITE_RANGE_END</span><span class="plain">) && (</span><span class="identifier">E2</span><span class="element">.end_type</span><span class="plain"> == </span><span class="constant">INFINITE_RANGE_END</span><span class="plain">)) </span><span class="reserved">return</span><span class="plain"> 0;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">E1</span><span class="element">.end_type</span><span class="plain"> == </span><span class="constant">INFINITE_RANGE_END</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> -1;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">E2</span><span class="element">.end_type</span><span class="plain"> == </span><span class="constant">INFINITE_RANGE_END</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> 1;</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">c</span><span class="plain"> = </span><span class="functiontext">VersionNumbers::cmp</span><span class="plain">(</span><span class="identifier">E1</span><span class="element">.end_value</span><span class="plain">, </span><span class="identifier">E2</span><span class="element">.end_value</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">c</span><span class="plain"> != 0) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">lower</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">c</span><span class="plain">; </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">return</span><span class="plain"> -</span><span class="identifier">c</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">E1</span><span class="element">.end_type</span><span class="plain"> == </span><span class="identifier">E2</span><span class="element">.end_type</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> 0;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">E1</span><span class="element">.end_type</span><span class="plain"> == </span><span class="constant">CLOSED_RANGE_END</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> -1;</span>
|
||||
<span class="reserved">return</span><span class="plain"> 1;</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function VersionNumbers::stricter is used in <a href="#SP21">§21</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP21"></a><b>§21. </b>And so we finally arrive at the following, which intersects two ranges:
|
||||
that is, it changes <code class="display"><span class="extract">R1</span></code> to the range of versions which lie ibside both the
|
||||
original <code class="display"><span class="extract">R1</span></code> and also <code class="display"><span class="extract">R2</span></code>. (This is used by Inbuild when an extension is
|
||||
included in two different places in the source text, but with possibly
|
||||
different version needs.) The return value is true if an actual change took
|
||||
place, and false otherwise.
|
||||
</p>
|
||||
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">VersionNumbers::intersect_range</span><span class="plain">(</span><span class="reserved">semver_range</span><span class="plain"> *</span><span class="identifier">R1</span><span class="plain">, </span><span class="reserved">semver_range</span><span class="plain"> *</span><span class="identifier">R2</span><span class="plain">) {</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">lc</span><span class="plain"> = </span><span class="functiontext">VersionNumbers::stricter</span><span class="plain">(</span><span class="identifier">R1</span><span class="plain">-</span><span class="element">>lower</span><span class="plain">, </span><span class="identifier">R2</span><span class="plain">-</span><span class="element">>lower</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">);</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">uc</span><span class="plain"> = </span><span class="functiontext">VersionNumbers::stricter</span><span class="plain">(</span><span class="identifier">R1</span><span class="plain">-</span><span class="element">>upper</span><span class="plain">, </span><span class="identifier">R2</span><span class="plain">-</span><span class="element">>upper</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">lc</span><span class="plain"> >= 0) && (</span><span class="identifier">uc</span><span class="plain"> >= 0)) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">lc</span><span class="plain"> < 0) </span><span class="identifier">R1</span><span class="plain">-</span><span class="element">>lower</span><span class="plain"> = </span><span class="identifier">R2</span><span class="plain">-</span><span class="element">>lower</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">uc</span><span class="plain"> < 0) </span><span class="identifier">R1</span><span class="plain">-</span><span class="element">>upper</span><span class="plain"> = </span><span class="identifier">R2</span><span class="plain">-</span><span class="element">>upper</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">R1</span><span class="plain">-</span><span class="element">>lower.end_type</span><span class="plain"> == </span><span class="constant">EMPTY_RANGE_END</span><span class="plain">) </span><span class="identifier">R1</span><span class="plain">-</span><span class="element">>upper.end_type</span><span class="plain"> = </span><span class="constant">EMPTY_RANGE_END</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">R1</span><span class="plain">-</span><span class="element">>upper.end_type</span><span class="plain"> == </span><span class="constant">EMPTY_RANGE_END</span><span class="plain">) </span><span class="identifier">R1</span><span class="plain">-</span><span class="element">>lower.end_type</span><span class="plain"> = </span><span class="constant">EMPTY_RANGE_END</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">R1</span><span class="plain">-</span><span class="element">>lower.end_type</span><span class="plain"> != </span><span class="constant">INFINITE_RANGE_END</span><span class="plain">) && (</span><span class="identifier">R1</span><span class="plain">-</span><span class="element">>upper.end_type</span><span class="plain"> != </span><span class="constant">INFINITE_RANGE_END</span><span class="plain">)) {</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">c</span><span class="plain"> = </span><span class="functiontext">VersionNumbers::cmp</span><span class="plain">(</span><span class="identifier">R1</span><span class="plain">-</span><span class="element">>lower.end_value</span><span class="plain">, </span><span class="identifier">R1</span><span class="plain">-</span><span class="element">>upper.end_value</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">c</span><span class="plain"> > 0) ||</span>
|
||||
<span class="plain">((</span><span class="identifier">c</span><span class="plain"> == 0) && ((</span><span class="identifier">R1</span><span class="plain">-</span><span class="element">>lower.end_type</span><span class="plain"> == </span><span class="constant">OPEN_RANGE_END</span><span class="plain">) ||</span>
|
||||
<span class="plain">(</span><span class="identifier">R1</span><span class="plain">-</span><span class="element">>upper.end_type</span><span class="plain"> == </span><span class="constant">OPEN_RANGE_END</span><span class="plain">)))) {</span>
|
||||
<span class="identifier">R1</span><span class="plain">-</span><span class="element">>lower.end_type</span><span class="plain"> = </span><span class="constant">EMPTY_RANGE_END</span><span class="plain">; </span><span class="identifier">R1</span><span class="plain">-</span><span class="element">>upper.end_type</span><span class="plain"> = </span><span class="constant">EMPTY_RANGE_END</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function VersionNumbers::intersect_range is used in <a href="#SP22">§22</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP22"></a><b>§22. Unit tests. </b>The Inbuild test case <code class="display"><span class="extract">semver</span></code> exercises the following.
|
||||
</p>
|
||||
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">VersionNumbers::test_range</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">text</span><span class="plain">) {</span>
|
||||
<span class="reserved">semantic_version_number</span><span class="plain"> </span><span class="identifier">V</span><span class="plain"> = </span><span class="functiontext">VersionNumbers::from_text</span><span class="plain">(</span><span class="identifier">text</span><span class="plain">);</span>
|
||||
<span class="reserved">semver_range</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain"> = </span><span class="functiontext">VersionNumbers::compatibility_range</span><span class="plain">(</span><span class="identifier">V</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"Compatibility range of %v = "</span><span class="plain">, &</span><span class="identifier">V</span><span class="plain">);</span>
|
||||
<span class="functiontext">VersionNumbers::write_range</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">R</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
||||
<span class="identifier">R</span><span class="plain"> = </span><span class="functiontext">VersionNumbers::at_least_range</span><span class="plain">(</span><span class="identifier">V</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"At-least range of %v = "</span><span class="plain">, &</span><span class="identifier">V</span><span class="plain">);</span>
|
||||
<span class="functiontext">VersionNumbers::write_range</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">R</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
||||
<span class="identifier">R</span><span class="plain"> = </span><span class="functiontext">VersionNumbers::at_most_range</span><span class="plain">(</span><span class="identifier">V</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"At-most range of %v = "</span><span class="plain">, &</span><span class="identifier">V</span><span class="plain">);</span>
|
||||
<span class="functiontext">VersionNumbers::write_range</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">R</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">VersionNumbers::test_intersect</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">,</span>
|
||||
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">text1</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">r1</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">text2</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">r2</span><span class="plain">) {</span>
|
||||
<span class="reserved">semantic_version_number</span><span class="plain"> </span><span class="identifier">V1</span><span class="plain"> = </span><span class="functiontext">VersionNumbers::from_text</span><span class="plain">(</span><span class="identifier">text1</span><span class="plain">);</span>
|
||||
<span class="reserved">semver_range</span><span class="plain"> *</span><span class="identifier">R1</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">r1</span><span class="plain"> == 0) </span><span class="identifier">R1</span><span class="plain"> = </span><span class="functiontext">VersionNumbers::compatibility_range</span><span class="plain">(</span><span class="identifier">V1</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">r1</span><span class="plain"> > 0) </span><span class="identifier">R1</span><span class="plain"> = </span><span class="functiontext">VersionNumbers::at_least_range</span><span class="plain">(</span><span class="identifier">V1</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">r1</span><span class="plain"> < 0) </span><span class="identifier">R1</span><span class="plain"> = </span><span class="functiontext">VersionNumbers::at_most_range</span><span class="plain">(</span><span class="identifier">V1</span><span class="plain">);</span>
|
||||
<span class="reserved">semantic_version_number</span><span class="plain"> </span><span class="identifier">V2</span><span class="plain"> = </span><span class="functiontext">VersionNumbers::from_text</span><span class="plain">(</span><span class="identifier">text2</span><span class="plain">);</span>
|
||||
<span class="reserved">semver_range</span><span class="plain"> *</span><span class="identifier">R2</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">r2</span><span class="plain"> == 0) </span><span class="identifier">R2</span><span class="plain"> = </span><span class="functiontext">VersionNumbers::compatibility_range</span><span class="plain">(</span><span class="identifier">V2</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">r2</span><span class="plain"> > 0) </span><span class="identifier">R2</span><span class="plain"> = </span><span class="functiontext">VersionNumbers::at_least_range</span><span class="plain">(</span><span class="identifier">V2</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">r2</span><span class="plain"> < 0) </span><span class="identifier">R2</span><span class="plain"> = </span><span class="functiontext">VersionNumbers::at_most_range</span><span class="plain">(</span><span class="identifier">V2</span><span class="plain">);</span>
|
||||
<span class="functiontext">VersionNumbers::write_range</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">R1</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">" intersect "</span><span class="plain">);</span>
|
||||
<span class="functiontext">VersionNumbers::write_range</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">R2</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">" = "</span><span class="plain">);</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">changed</span><span class="plain"> = </span><span class="functiontext">VersionNumbers::intersect_range</span><span class="plain">(</span><span class="identifier">R1</span><span class="plain">, </span><span class="identifier">R2</span><span class="plain">);</span>
|
||||
<span class="functiontext">VersionNumbers::write_range</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">R1</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">changed</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain"> (</span><span class="string">" -- changed"</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">VersionNumbers::test_read_write</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">text</span><span class="plain">) {</span>
|
||||
<span class="reserved">semantic_version_number</span><span class="plain"> </span><span class="identifier">V</span><span class="plain"> = </span><span class="functiontext">VersionNumbers::from_text</span><span class="plain">(</span><span class="identifier">text</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"'%S' --> %v\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">text</span><span class="plain">, &</span><span class="identifier">V</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">VersionNumbers::test_precedence</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">text1</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">text2</span><span class="plain">) {</span>
|
||||
<span class="reserved">semantic_version_number</span><span class="plain"> </span><span class="identifier">V1</span><span class="plain"> = </span><span class="functiontext">VersionNumbers::from_text</span><span class="plain">(</span><span class="identifier">text1</span><span class="plain">);</span>
|
||||
<span class="reserved">semantic_version_number</span><span class="plain"> </span><span class="identifier">V2</span><span class="plain"> = </span><span class="functiontext">VersionNumbers::from_text</span><span class="plain">(</span><span class="identifier">text2</span><span class="plain">);</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">gt</span><span class="plain"> = </span><span class="functiontext">VersionNumbers::gt</span><span class="plain">(</span><span class="identifier">V1</span><span class="plain">, </span><span class="identifier">V2</span><span class="plain">);</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">eq</span><span class="plain"> = </span><span class="functiontext">VersionNumbers::eq</span><span class="plain">(</span><span class="identifier">V1</span><span class="plain">, </span><span class="identifier">V2</span><span class="plain">);</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">lt</span><span class="plain"> = </span><span class="functiontext">VersionNumbers::lt</span><span class="plain">(</span><span class="identifier">V1</span><span class="plain">, </span><span class="identifier">V2</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">lt</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%v < %v"</span><span class="plain">, &</span><span class="identifier">V1</span><span class="plain">, &</span><span class="identifier">V2</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">eq</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%v = %v"</span><span class="plain">, &</span><span class="identifier">V1</span><span class="plain">, &</span><span class="identifier">V2</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">gt</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%v > %v"</span><span class="plain">, &</span><span class="identifier">V1</span><span class="plain">, &</span><span class="identifier">V2</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">VersionNumbers::test</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">) {</span>
|
||||
<span class="functiontext">VersionNumbers::test_read_write</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"1"</span><span class="plain">);</span>
|
||||
<span class="functiontext">VersionNumbers::test_read_write</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"1.2"</span><span class="plain">);</span>
|
||||
<span class="functiontext">VersionNumbers::test_read_write</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"1.2.3"</span><span class="plain">);</span>
|
||||
<span class="functiontext">VersionNumbers::test_read_write</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"71.0.45672"</span><span class="plain">);</span>
|
||||
<span class="functiontext">VersionNumbers::test_read_write</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"1.2.3.4"</span><span class="plain">);</span>
|
||||
<span class="functiontext">VersionNumbers::test_read_write</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"9/861022"</span><span class="plain">);</span>
|
||||
<span class="functiontext">VersionNumbers::test_read_write</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"9/86102"</span><span class="plain">);</span>
|
||||
<span class="functiontext">VersionNumbers::test_read_write</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"9/8610223"</span><span class="plain">);</span>
|
||||
<span class="functiontext">VersionNumbers::test_read_write</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"9/861022.2"</span><span class="plain">);</span>
|
||||
<span class="functiontext">VersionNumbers::test_read_write</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"9/861022/2"</span><span class="plain">);</span>
|
||||
<span class="functiontext">VersionNumbers::test_read_write</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"1.2.3-alpha.0.x45.1789"</span><span class="plain">);</span>
|
||||
<span class="functiontext">VersionNumbers::test_read_write</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"1+lobster"</span><span class="plain">);</span>
|
||||
<span class="functiontext">VersionNumbers::test_read_write</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"1.2+lobster"</span><span class="plain">);</span>
|
||||
<span class="functiontext">VersionNumbers::test_read_write</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"1.2.3+lobster"</span><span class="plain">);</span>
|
||||
<span class="functiontext">VersionNumbers::test_read_write</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"1.2.3-beta.2+shellfish"</span><span class="plain">);</span>
|
||||
|
||||
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
||||
<span class="functiontext">VersionNumbers::test_precedence</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"3"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"5"</span><span class="plain">);</span>
|
||||
<span class="functiontext">VersionNumbers::test_precedence</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"3"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"3"</span><span class="plain">);</span>
|
||||
<span class="functiontext">VersionNumbers::test_precedence</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"3"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"3.0"</span><span class="plain">);</span>
|
||||
<span class="functiontext">VersionNumbers::test_precedence</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"3"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"3.0.0"</span><span class="plain">);</span>
|
||||
<span class="functiontext">VersionNumbers::test_precedence</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"3.1.41"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"3.1.5"</span><span class="plain">);</span>
|
||||
<span class="functiontext">VersionNumbers::test_precedence</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"3.1.41"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"3.2.5"</span><span class="plain">);</span>
|
||||
<span class="functiontext">VersionNumbers::test_precedence</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"3.1.41"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"3.1.41+arm64"</span><span class="plain">);</span>
|
||||
<span class="functiontext">VersionNumbers::test_precedence</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"3.1.41"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"3.1.41-pre.0.1"</span><span class="plain">);</span>
|
||||
<span class="functiontext">VersionNumbers::test_precedence</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"3.1.41-alpha.72"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"3.1.41-alpha.8"</span><span class="plain">);</span>
|
||||
<span class="functiontext">VersionNumbers::test_precedence</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"3.1.41-alpha.72a"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"3.1.41-alpha.8a"</span><span class="plain">);</span>
|
||||
<span class="functiontext">VersionNumbers::test_precedence</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"3.1.41-alpha.72"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"3.1.41-beta.72"</span><span class="plain">);</span>
|
||||
<span class="functiontext">VersionNumbers::test_precedence</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"3.1.41-alpha.72"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"3.1.41-alpha.72.zeta"</span><span class="plain">);</span>
|
||||
<span class="functiontext">VersionNumbers::test_precedence</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"1.2.3+lobster.54"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"1.2.3+lobster.100"</span><span class="plain">);</span>
|
||||
|
||||
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
||||
<span class="functiontext">VersionNumbers::test_range</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"6.4.2-kappa.17"</span><span class="plain">);</span>
|
||||
|
||||
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
||||
<span class="functiontext">VersionNumbers::test_intersect</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"6.4.2-kappa.17"</span><span class="plain">, 0, </span><span class="identifier">I</span><span class="string">"3.5.5"</span><span class="plain">, 0);</span>
|
||||
<span class="functiontext">VersionNumbers::test_intersect</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"6.4.2-kappa.17"</span><span class="plain">, 0, </span><span class="identifier">I</span><span class="string">"6.9.1"</span><span class="plain">, 0);</span>
|
||||
<span class="functiontext">VersionNumbers::test_intersect</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"6.9.1"</span><span class="plain">, 0, </span><span class="identifier">I</span><span class="string">"6.4.2-kappa.17"</span><span class="plain">, 0);</span>
|
||||
<span class="functiontext">VersionNumbers::test_intersect</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"6.4.2"</span><span class="plain">, 1, </span><span class="identifier">I</span><span class="string">"3.5.5"</span><span class="plain">, 1);</span>
|
||||
<span class="functiontext">VersionNumbers::test_intersect</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"6.4.2"</span><span class="plain">, 1, </span><span class="identifier">I</span><span class="string">"3.5.5"</span><span class="plain">, -1);</span>
|
||||
<span class="functiontext">VersionNumbers::test_intersect</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"6.4.2"</span><span class="plain">, -1, </span><span class="identifier">I</span><span class="string">"3.5.5"</span><span class="plain">, 1);</span>
|
||||
<span class="functiontext">VersionNumbers::test_intersect</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"6.4.2"</span><span class="plain">, -1, </span><span class="identifier">I</span><span class="string">"3.5.5"</span><span class="plain">, -1);</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function VersionNumbers::test_range appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function VersionNumbers::test_intersect appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function VersionNumbers::test_read_write appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function VersionNumbers::test_precedence appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function VersionNumbers::test appears nowhere else.</p>
|
||||
|
||||
<hr class="tocbar">
|
||||
<ul class="toc"><li><i>(This section begins Chapter 2: Architectures.)</i></li><li><a href="2-arc.html">Continue with 'Architectures'</a></li></ul><hr class="tocbar">
|
||||
|
|
|
@ -127,7 +127,7 @@ or part — which would otherwise be an error very difficult to detect.
|
|||
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Intervention at stage %d Segment %S Part %S\</span><span class="plain">n</span><span class="string">"</span><span class="plain">,</span>
|
||||
<span class="identifier">i6ti</span><span class="plain">-</span><span class="element">>intervention_stage</span><span class="plain">, </span><span class="identifier">i6ti</span><span class="plain">-</span><span class="element">>segment_name</span><span class="plain">, </span><span class="identifier">i6ti</span><span class="plain">-</span><span class="element">>part_name</span><span class="plain">);</span>
|
||||
<span class="plain">#</span><span class="identifier">ifdef</span><span class="plain"> </span><span class="identifier">PROBLEMS_MODULE</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">Untestable</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">Untestable</span><span class="plain">),</span>
|
||||
<span class="string">"no template file of that name was ever read in"</span><span class="plain">,</span>
|
||||
<span class="string">"so this attempt to intervene had no effect. "</span>
|
||||
<span class="string">"The template files have names like 'Output.i6t', 'Parser.i6t' "</span>
|
||||
|
@ -145,7 +145,7 @@ or part — which would otherwise be an error very difficult to detect.
|
|||
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Intervention at stage %d Segment %S Part %S\</span><span class="plain">n</span><span class="string">"</span><span class="plain">,</span>
|
||||
<span class="identifier">i6ti</span><span class="plain">-</span><span class="element">>intervention_stage</span><span class="plain">, </span><span class="identifier">i6ti</span><span class="plain">-</span><span class="element">>segment_name</span><span class="plain">, </span><span class="identifier">i6ti</span><span class="plain">-</span><span class="element">>part_name</span><span class="plain">);</span>
|
||||
<span class="plain">#</span><span class="identifier">ifdef</span><span class="plain"> </span><span class="identifier">PROBLEMS_MODULE</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">Untestable</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">Untestable</span><span class="plain">),</span>
|
||||
<span class="string">"that template file didn't have a part with that name"</span><span class="plain">,</span>
|
||||
<span class="string">"so this attempt to intervene had no effect. "</span>
|
||||
<span class="string">"Each template file is divided internally into a number of "</span>
|
||||
|
@ -459,7 +459,7 @@ heading markers, in order to accommodate both old and new Inweb syntaxes.
|
|||
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"heading begins: <%S>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">I6T_buffer</span><span class="plain">);</span>
|
||||
<span class="plain">#</span><span class="identifier">ifdef</span><span class="plain"> </span><span class="identifier">PROBLEMS_MODULE</span>
|
||||
<span class="identifier">Problems::quote_stream</span><span class="plain">(1, </span><span class="identifier">I6T_buffer</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::unlocated_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(...),</span>
|
||||
<span class="identifier">Problems::Issue::unlocated_problem</span><span class="plain">(</span><span class="identifier">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(...),</span>
|
||||
<span class="string">"An unknown '@...' marker has been found at column 0 in "</span>
|
||||
<span class="string">"raw Inform 6 template material: specifically, '@%1'. ('@' "</span>
|
||||
<span class="string">"has a special meaning in this first column, and this "</span>
|
||||
|
@ -714,7 +714,7 @@ using template-hacking there are a handful of cases that can't be avoided, so...
|
|||
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">M</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">M</span><span class="plain">, </span><span class="identifier">message</span><span class="plain">, </span><span class="identifier">quote</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_stream</span><span class="plain">(1, </span><span class="identifier">M</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(...));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(...));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"I ran into a mistake in a template file: %1. The I6 "</span>
|
||||
<span class="string">"template files (or .i6t files) are a very low-level part of Inform, "</span>
|
||||
|
|
|
@ -31,7 +31,6 @@ features we will use from <code class="display"><span class="extract">foundation
|
|||
|
||||
<pre class="definitions">
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">bibliographic_datum_MT</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">heading_MT</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">phrase_MT</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">inference_MT</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">property_MT</span>
|
||||
|
@ -70,7 +69,6 @@ features we will use from <code class="display"><span class="extract">foundation
|
|||
<span class="definitionkeyword">enum</span> <span class="constant">ph_stack_frame_box_MT</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">i6_inclusion_matter_MT</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">literal_list_MT</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">control_structure_phrase_MT</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">adjective_meaning_MT</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">adjective_meaning_block_MT</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">measurement_definition_MT</span>
|
||||
|
@ -127,8 +125,7 @@ features we will use from <code class="display"><span class="extract">foundation
|
|||
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">binary_predicate</span><span class="plain">)</span>
|
||||
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">booking</span><span class="plain">)</span>
|
||||
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">constant_phrase</span><span class="plain">)</span>
|
||||
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">contents_entry</span><span class="plain">)</span>
|
||||
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">control_structure_phrase</span><span class="plain">)</span>
|
||||
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="identifier">contents_entry</span><span class="plain">)</span>
|
||||
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">counting_data</span><span class="plain">)</span>
|
||||
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">definition</span><span class="plain">)</span>
|
||||
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">dval_written</span><span class="plain">)</span>
|
||||
|
@ -136,7 +133,6 @@ features we will use from <code class="display"><span class="extract">foundation
|
|||
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">equation_symbol</span><span class="plain">)</span>
|
||||
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">equation</span><span class="plain">)</span>
|
||||
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">generalisation</span><span class="plain">)</span>
|
||||
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">heading</span><span class="plain">)</span>
|
||||
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">i6_inclusion_matter</span><span class="plain">)</span>
|
||||
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">i6_memory_setting</span><span class="plain">)</span>
|
||||
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">implication</span><span class="plain">)</span>
|
||||
|
@ -243,7 +239,7 @@ foundation module does that automatically.)
|
|||
<span class="identifier">COMPILE_WRITER</span><span class="plain">(</span><span class="identifier">extension_dictionary_entry</span><span class="plain"> *, </span><span class="identifier">Extensions::Dictionary::log_entry</span><span class="plain">)</span>
|
||||
<span class="identifier">COMPILE_WRITER</span><span class="plain">(</span><span class="identifier">parse_node</span><span class="plain"> *, </span><span class="functiontext">Invocations::log_list</span><span class="plain">)</span>
|
||||
<span class="identifier">COMPILE_WRITER</span><span class="plain">(</span><span class="identifier">parse_node</span><span class="plain"> *, </span><span class="functiontext">Invocations::log</span><span class="plain">)</span>
|
||||
<span class="identifier">COMPILE_WRITER</span><span class="plain">(</span><span class="reserved">heading</span><span class="plain"> *, </span><span class="functiontext">Sentences::Headings::log</span><span class="plain">)</span>
|
||||
<span class="identifier">COMPILE_WRITER</span><span class="plain">(</span><span class="identifier">heading</span><span class="plain"> *, </span><span class="functiontext">Sentences::Headings::log</span><span class="plain">)</span>
|
||||
<span class="identifier">COMPILE_WRITER</span><span class="plain">(</span><span class="reserved">ph_type_data</span><span class="plain"> *, </span><span class="functiontext">Phrases::TypeData::Textual::log</span><span class="plain">)</span>
|
||||
<span class="identifier">COMPILE_WRITER</span><span class="plain">(</span><span class="reserved">inference</span><span class="plain"> *, </span><span class="functiontext">World::Inferences::log</span><span class="plain">)</span>
|
||||
<span class="identifier">COMPILE_WRITER</span><span class="plain">(</span><span class="reserved">i6_schema</span><span class="plain"> *, </span><span class="functiontext">Calculus::Schemas::log</span><span class="plain">)</span>
|
||||
|
@ -354,7 +350,6 @@ we need to use the equivalent of traditional <code class="display"><span class="
|
|||
<span class="definitionkeyword">enum</span> <span class="constant">DESCRIPTION_COMPILATION_DA</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">EXPRESSIONS_DA</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">FIGURE_CREATIONS_DA</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">HEADINGS_DA</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">IMPLICATIONS_DA</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">INFERENCES_DA</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">LOCAL_VARIABLES_DA</span>
|
||||
|
@ -404,7 +399,6 @@ we need to use the equivalent of traditional <code class="display"><span class="
|
|||
<span class="identifier">Log::declare_aspect</span><span class="plain">(</span><span class="constant">DESCRIPTION_COMPILATION_DA</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"description compilation"</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">);</span>
|
||||
<span class="identifier">Log::declare_aspect</span><span class="plain">(</span><span class="constant">EXPRESSIONS_DA</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"expressions"</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">);</span>
|
||||
<span class="identifier">Log::declare_aspect</span><span class="plain">(</span><span class="constant">FIGURE_CREATIONS_DA</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"figure creations"</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">);</span>
|
||||
<span class="identifier">Log::declare_aspect</span><span class="plain">(</span><span class="constant">HEADINGS_DA</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"headings"</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">);</span>
|
||||
<span class="identifier">Log::declare_aspect</span><span class="plain">(</span><span class="constant">IMPLICATIONS_DA</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"implications"</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">);</span>
|
||||
<span class="identifier">Log::declare_aspect</span><span class="plain">(</span><span class="constant">INFERENCES_DA</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"inferences"</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">);</span>
|
||||
<span class="identifier">Log::declare_aspect</span><span class="plain">(</span><span class="constant">LOCAL_VARIABLES_DA</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"local variables"</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">);</span>
|
||||
|
|
|
@ -25,10 +25,8 @@ in order of when they work:
|
|||
|
||||
<pre class="definitions">
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">STARTED_CSEQ</span><span class="definitionkeyword"> from </span><span class="constant">0</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">LEXICAL_CSEQ</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">SEMANTIC_IA_CSEQ</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">SEMANTIC_LANGUAGE_CSEQ</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">SEMANTIC_IB_CSEQ</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">SEMANTIC_I_CSEQ</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">SEMANTIC_II_CSEQ</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">SEMANTIC_III_CSEQ</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">ASSERTIONS_PASS_1_CSEQ</span>
|
||||
|
@ -68,14 +66,13 @@ is active.
|
|||
<<span class="cwebmacro">Boot up the compiler</span> <span class="cwebmacronumber">2.2</span>><span class="plain">;</span>
|
||||
<span class="identifier">compiler_booted_up</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<<span class="cwebmacro">Perform lexical analysis</span> <span class="cwebmacronumber">2.3</span>><span class="plain">;</span>
|
||||
<<span class="cwebmacro">Perform semantic analysis</span> <span class="cwebmacronumber">2.4</span>><span class="plain">;</span>
|
||||
<<span class="cwebmacro">Read the assertions in two passes</span> <span class="cwebmacronumber">2.5</span>><span class="plain">;</span>
|
||||
<<span class="cwebmacro">Make the model world</span> <span class="cwebmacronumber">2.6</span>><span class="plain">;</span>
|
||||
<<span class="cwebmacro">Tables and grammar</span> <span class="cwebmacronumber">2.7</span>><span class="plain">;</span>
|
||||
<<span class="cwebmacro">Phrases and rules</span> <span class="cwebmacronumber">2.8</span>><span class="plain">;</span>
|
||||
<<span class="cwebmacro">Generate inter</span> <span class="cwebmacronumber">2.9</span>><span class="plain">;</span>
|
||||
<<span class="cwebmacro">Generate index and bibliographic file</span> <span class="cwebmacronumber">2.10</span>><span class="plain">;</span>
|
||||
<<span class="cwebmacro">Perform textual analysis</span> <span class="cwebmacronumber">2.3</span>><span class="plain">;</span>
|
||||
<<span class="cwebmacro">Read the assertions in two passes</span> <span class="cwebmacronumber">2.4</span>><span class="plain">;</span>
|
||||
<<span class="cwebmacro">Make the model world</span> <span class="cwebmacronumber">2.5</span>><span class="plain">;</span>
|
||||
<<span class="cwebmacro">Tables and grammar</span> <span class="cwebmacronumber">2.6</span>><span class="plain">;</span>
|
||||
<<span class="cwebmacro">Phrases and rules</span> <span class="cwebmacronumber">2.7</span>><span class="plain">;</span>
|
||||
<<span class="cwebmacro">Generate inter</span> <span class="cwebmacronumber">2.8</span>><span class="plain">;</span>
|
||||
<<span class="cwebmacro">Generate index and bibliographic file</span> <span class="cwebmacronumber">2.9</span>><span class="plain">;</span>
|
||||
|
||||
<span class="functiontext">Task::advance_stage_to</span><span class="plain">(</span><span class="constant">FINISHED_CSEQ</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Ccmplete"</span><span class="plain">, -1);</span>
|
||||
<span class="identifier">clock_t</span><span class="plain"> </span><span class="identifier">end</span><span class="plain"> = </span><span class="identifier">clock</span><span class="plain">();</span>
|
||||
|
@ -138,8 +135,6 @@ most of these worker functions are in the <code class="display"><span class="ext
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">BENCH</span><span class="plain">(</span><span class="functiontext">Emit::begin</span><span class="plain">);</span>
|
||||
<span class="identifier">BENCH</span><span class="plain">(</span><span class="functiontext">Semantics::read_preform</span><span class="plain">);</span>
|
||||
<span class="identifier">BENCH</span><span class="plain">(</span><span class="functiontext">Plugins::Manage::start</span><span class="plain">);</span>
|
||||
<span class="identifier">BENCH</span><span class="plain">(</span><span class="functiontext">InferenceSubjects::begin</span><span class="plain">);</span>
|
||||
<span class="identifier">BENCH</span><span class="plain">(</span><span class="identifier">Index::DocReferences::read_xrefs</span><span class="plain">);</span>
|
||||
</pre>
|
||||
|
@ -149,50 +144,28 @@ most of these worker functions are in the <code class="display"><span class="ext
|
|||
<p class="endnote">This code is used in <a href="#SP2">§2</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP2_3"></a><b>§2.3. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Perform lexical analysis</span> <span class="cwebmacronumber">2.3</span>> =
|
||||
<<span class="cwebmacrodefn">Perform textual analysis</span> <span class="cwebmacronumber">2.3</span>> =
|
||||
</code></p>
|
||||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="functiontext">Task::advance_stage_to</span><span class="plain">(</span><span class="constant">LEXICAL_CSEQ</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Lexical analysis"</span><span class="plain">, 0);</span>
|
||||
<span class="identifier">BENCH</span><span class="plain">(</span><span class="functiontext">Task::read_source_text</span><span class="plain">)</span>
|
||||
<span class="identifier">BENCH</span><span class="plain">(</span><span class="functiontext">Sentences::RuleSubtrees::create_standard_csps</span><span class="plain">)</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">This code is used in <a href="#SP2">§2</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP2_4"></a><b>§2.4. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Perform semantic analysis</span> <span class="cwebmacronumber">2.4</span>> =
|
||||
</code></p>
|
||||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="functiontext">Task::advance_stage_to</span><span class="plain">(</span><span class="constant">SEMANTIC_IA_CSEQ</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Semantic analysis Ia"</span><span class="plain">, 1);</span>
|
||||
<span class="identifier">BENCH</span><span class="plain">(</span><span class="functiontext">Task::activate_language_elements</span><span class="plain">)</span>
|
||||
<span class="identifier">BENCH</span><span class="plain">(</span><span class="functiontext">ParseTreeUsage::plant_parse_tree</span><span class="plain">)</span>
|
||||
<span class="identifier">BENCH</span><span class="plain">(</span><span class="functiontext">StructuralSentences::break_source</span><span class="plain">)</span>
|
||||
<span class="identifier">BENCH</span><span class="plain">(</span><span class="functiontext">Extensions::Inclusion::traverse</span><span class="plain">)</span>
|
||||
<span class="identifier">BENCH</span><span class="plain">(</span><span class="functiontext">Sentences::Headings::satisfy_dependencies</span><span class="plain">)</span>
|
||||
|
||||
<span class="functiontext">Task::advance_stage_to</span><span class="plain">(</span><span class="constant">SEMANTIC_LANGUAGE_CSEQ</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Initialise language semantics"</span><span class="plain">, -1);</span>
|
||||
<span class="functiontext">Task::advance_stage_to</span><span class="plain">(</span><span class="constant">SEMANTIC_LANGUAGE_CSEQ</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Semantic analysis Ia"</span><span class="plain">, -1);</span>
|
||||
<span class="identifier">BENCH</span><span class="plain">(</span><span class="functiontext">Plugins::Manage::start_plugins</span><span class="plain">);</span>
|
||||
<span class="identifier">BENCH</span><span class="plain">(</span><span class="functiontext">Task::load_types</span><span class="plain">);</span>
|
||||
<span class="identifier">BENCH</span><span class="plain">(</span><span class="functiontext">BinaryPredicates::make_built_in</span><span class="plain">)</span>
|
||||
<span class="identifier">BENCH</span><span class="plain">(</span><span class="functiontext">NewVerbs::add_inequalities</span><span class="plain">)</span>
|
||||
|
||||
<span class="functiontext">Task::advance_stage_to</span><span class="plain">(</span><span class="constant">SEMANTIC_IB_CSEQ</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Semantic analysis Ib"</span><span class="plain">, -1);</span>
|
||||
<span class="functiontext">Task::advance_stage_to</span><span class="plain">(</span><span class="constant">SEMANTIC_I_CSEQ</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Semantic analysis Ib"</span><span class="plain">, -1);</span>
|
||||
<span class="identifier">BENCH</span><span class="plain">(</span><span class="functiontext">Sentences::VPs::traverse</span><span class="plain">)</span>
|
||||
<span class="identifier">BENCH</span><span class="plain">(</span><span class="functiontext">Sentences::Rearrangement::tidy_up_ofs_and_froms</span><span class="plain">)</span>
|
||||
<span class="identifier">BENCH</span><span class="plain">(</span><span class="functiontext">Sentences::RuleSubtrees::register_recently_lexed_phrases</span><span class="plain">)</span>
|
||||
<span class="identifier">BENCH</span><span class="plain">(</span><span class="functiontext">StructuralSentences::declare_source_loaded</span><span class="plain">)</span>
|
||||
<span class="identifier">BENCH</span><span class="plain">(</span><span class="identifier">Kinds::Interpreter::include_templates_for_kinds</span><span class="plain">)</span>
|
||||
<span class="identifier">BENCH</span><span class="plain">(</span><span class="identifier">SourceText::declare_source_loaded</span><span class="plain">)</span>
|
||||
<span class="identifier">BENCH</span><span class="plain">(</span><span class="functiontext">Kinds::Knowledge::include_templates_for_kinds</span><span class="plain">)</span>
|
||||
|
||||
<span class="functiontext">Task::advance_stage_to</span><span class="plain">(</span><span class="constant">SEMANTIC_II_CSEQ</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Semantic analysis II"</span><span class="plain">, -1);</span>
|
||||
<span class="identifier">BENCH</span><span class="plain">(</span><span class="functiontext">ParseTreeUsage::verify</span><span class="plain">)</span>
|
||||
<span class="identifier">BENCH</span><span class="plain">(</span><span class="functiontext">Extensions::Files::check_versions</span><span class="plain">)</span>
|
||||
<span class="identifier">BENCH</span><span class="plain">(</span><span class="functiontext">Sentences::Headings::make_tree</span><span class="plain">)</span>
|
||||
<span class="identifier">BENCH</span><span class="plain">(</span><span class="identifier">Headings::make_tree</span><span class="plain">)</span>
|
||||
<span class="identifier">BENCH</span><span class="plain">(</span><span class="functiontext">Sentences::Headings::write_as_xml</span><span class="plain">)</span>
|
||||
<span class="identifier">BENCH</span><span class="plain">(</span><span class="functiontext">Sentences::Headings::write_as_xml</span><span class="plain">)</span>
|
||||
<span class="identifier">BENCH</span><span class="plain">(</span><span class="functiontext">Modules::traverse_to_define</span><span class="plain">)</span>
|
||||
|
@ -208,8 +181,8 @@ most of these worker functions are in the <code class="display"><span class="ext
|
|||
|
||||
<p class="endnote">This code is used in <a href="#SP2">§2</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP2_5"></a><b>§2.5. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Read the assertions in two passes</span> <span class="cwebmacronumber">2.5</span>> =
|
||||
<p class="inwebparagraph"><a id="SP2_4"></a><b>§2.4. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Read the assertions in two passes</span> <span class="cwebmacronumber">2.4</span>> =
|
||||
</code></p>
|
||||
|
||||
|
||||
|
@ -226,8 +199,8 @@ most of these worker functions are in the <code class="display"><span class="ext
|
|||
|
||||
<p class="endnote">This code is used in <a href="#SP2">§2</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP2_6"></a><b>§2.6. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Make the model world</span> <span class="cwebmacronumber">2.6</span>> =
|
||||
<p class="inwebparagraph"><a id="SP2_5"></a><b>§2.5. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Make the model world</span> <span class="cwebmacronumber">2.5</span>> =
|
||||
</code></p>
|
||||
|
||||
|
||||
|
@ -247,8 +220,8 @@ most of these worker functions are in the <code class="display"><span class="ext
|
|||
|
||||
<p class="endnote">This code is used in <a href="#SP2">§2</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP2_7"></a><b>§2.7. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Tables and grammar</span> <span class="cwebmacronumber">2.7</span>> =
|
||||
<p class="inwebparagraph"><a id="SP2_6"></a><b>§2.6. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Tables and grammar</span> <span class="cwebmacronumber">2.6</span>> =
|
||||
</code></p>
|
||||
|
||||
|
||||
|
@ -270,8 +243,8 @@ most of these worker functions are in the <code class="display"><span class="ext
|
|||
|
||||
<p class="endnote">This code is used in <a href="#SP2">§2</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP2_8"></a><b>§2.8. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Phrases and rules</span> <span class="cwebmacronumber">2.8</span>> =
|
||||
<p class="inwebparagraph"><a id="SP2_7"></a><b>§2.7. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Phrases and rules</span> <span class="cwebmacronumber">2.7</span>> =
|
||||
</code></p>
|
||||
|
||||
|
||||
|
@ -294,8 +267,8 @@ most of these worker functions are in the <code class="display"><span class="ext
|
|||
|
||||
<p class="endnote">This code is used in <a href="#SP2">§2</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP2_9"></a><b>§2.9. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Generate inter</span> <span class="cwebmacronumber">2.9</span>> =
|
||||
<p class="inwebparagraph"><a id="SP2_8"></a><b>§2.8. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Generate inter</span> <span class="cwebmacronumber">2.8</span>> =
|
||||
</code></p>
|
||||
|
||||
|
||||
|
@ -399,8 +372,8 @@ most of these worker functions are in the <code class="display"><span class="ext
|
|||
|
||||
<p class="endnote">This code is used in <a href="#SP2">§2</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP2_10"></a><b>§2.10. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Generate index and bibliographic file</span> <span class="cwebmacronumber">2.10</span>> =
|
||||
<p class="inwebparagraph"><a id="SP2_9"></a><b>§2.9. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Generate index and bibliographic file</span> <span class="cwebmacronumber">2.9</span>> =
|
||||
</code></p>
|
||||
|
||||
|
||||
|
|
|
@ -41,6 +41,9 @@ equivalent of unlocking the doors and turning the lights on in the morning.
|
|||
<<span class="cwebmacro">Name the telemetry</span> <span class="cwebmacronumber">1.3</span>><span class="plain">;</span>
|
||||
<<span class="cwebmacro">Build the project identified for us by Inbuild</span> <span class="cwebmacronumber">1.4</span>><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="comment">ParseTree::log_tree(DL, Task::syntax_tree()->root_node);</span>
|
||||
|
||||
<<span class="cwebmacro">Post mortem logging</span> <span class="cwebmacronumber">1.5</span>><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">proceed</span><span class="plain">) </span><<span class="cwebmacro">Shutdown and rennab</span> <span class="cwebmacronumber">1.6</span>><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_count</span><span class="plain"> > 0) </span><span class="identifier">Problems::Fatal::exit</span><span class="plain">(1);</span>
|
||||
|
@ -67,6 +70,7 @@ plain text error written to <code class="display"><span class="extract">stderr</
|
|||
<pre class="displaydefn">
|
||||
<span class="identifier">Errors::set_internal_handler</span><span class="plain">(&</span><span class="identifier">Problems::Issue::internal_error_fn</span><span class="plain">);</span>
|
||||
<span class="identifier">PRINT</span><span class="plain">(</span><span class="string">"%B build %B has started.\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">);</span>
|
||||
<span class="functiontext">Plugins::Manage::start</span><span class="plain">();</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
@ -183,7 +187,6 @@ gargantuan debugging logs if enabled.
|
|||
<pre class="displaydefn">
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_count</span><span class="plain"> == 0) {</span>
|
||||
<span class="identifier">TemplateReader::report_unacted_upon_interventions</span><span class="plain">();</span>
|
||||
<span class="comment">ParseTreeUsage::write_main_source_to_log();</span>
|
||||
<span class="comment">Memory::log_statistics();</span>
|
||||
<span class="comment">Preform::log_language();</span>
|
||||
<span class="comment">Index::DocReferences::log_statistics();</span>
|
||||
|
|
|
@ -64,7 +64,7 @@ progress bar with a rubric beneath it.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function ProgressBar::update is used in 1/wtc (<a href="1-wtc.html#SP3">§3</a>), 22/cs (<a href="22-cs.html#SP4">§4</a>), 22/ph (<a href="22-ph.html#SP12_1">§12.1</a>).</p>
|
||||
<p class="endnote">The function ProgressBar::update is used in 1/wtc (<a href="1-wtc.html#SP4">§4</a>), 22/cs (<a href="22-cs.html#SP4">§4</a>), 22/ph (<a href="22-ph.html#SP12_1">§12.1</a>).</p>
|
||||
|
||||
<p class="endnote">The function ProgressBar::final_state_of_progress_bar is used in 2/up (<a href="2-up.html#SP2_3">§2.3</a>).</p>
|
||||
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -723,7 +723,7 @@ except that the noun is optional. The only difference is right at the bottom.
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ParseTree::is</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">, </span><span class="constant">CONSTANT_NT</span><span class="plain">)) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">PM_SpecificCalling_issued_at</span><span class="plain"> != </span><span class="identifier">current_sentence</span><span class="plain">) {</span>
|
||||
<span class="identifier">PM_SpecificCalling_issued_at</span><span class="plain"> = </span><span class="identifier">current_sentence</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_SpecificCalling</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_SpecificCalling</span><span class="plain">),</span>
|
||||
<span class="string">"a 'called' name can only be given to something "</span>
|
||||
<span class="string">"which is described vaguely"</span><span class="plain">,</span>
|
||||
<span class="string">"and can't be given to a definite object or value. "</span>
|
||||
|
@ -789,7 +789,7 @@ context of a proper noun, as in "some tea", because it may be confusion of
|
|||
<span class="identifier">PM_DefiniteCommonNoun_issued_at</span><span class="plain"> = </span><span class="identifier">current_sentence</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_DefiniteCommonNoun</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_DefiniteCommonNoun</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In %1, I'm not able to understand what specific thing is meant "</span>
|
||||
<span class="string">"by the phrase '%2'. You use the definite article 'the', which "</span>
|
||||
|
|
|
@ -280,7 +280,7 @@ conditions, so this is where the condition in
|
|||
<span class="plain">#</span><span class="identifier">ifdef</span><span class="plain"> </span><span class="identifier">IF_MODULE</span>
|
||||
<span class="identifier">action_pattern</span><span class="plain"> *</span><span class="identifier">ap</span><span class="plain"> = </span><span class="identifier">RP</span><span class="plain">[1];</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">PL::Actions::Patterns::makes_callings</span><span class="plain">(</span><span class="identifier">ap</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_PastActionCalled</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_PastActionCalled</span><span class="plain">),</span>
|
||||
<span class="string">"a description of an action cannot both refer to past "</span>
|
||||
<span class="string">"history and also use '(called ...)'"</span><span class="plain">,</span>
|
||||
<span class="string">"because that would require Inform in general to remember "</span>
|
||||
|
@ -399,7 +399,7 @@ singulars.
|
|||
<span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">inv</span><span class="plain"> = </span><span class="functiontext">Invocations::new</span><span class="plain">();</span>
|
||||
<span class="functiontext">Invocations::set_word_range</span><span class="plain">(</span><span class="identifier">inv</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="functiontext">Invocations::set_adjectival_phrase</span><span class="plain">(</span><span class="identifier">inv</span><span class="plain">, </span><span class="identifier">aph</span><span class="plain">);</span>
|
||||
<span class="identifier">spec</span><span class="plain">-</span><span class="element">>down</span><span class="plain"> = </span><span class="identifier">ParseTree::new</span><span class="plain">(</span><span class="constant">INVOCATION_LIST_NT</span><span class="plain">);</span>
|
||||
<span class="identifier">spec</span><span class="plain">-</span><span class="element">>down</span><span class="plain"> = </span><span class="identifier">ParseTree::new</span><span class="plain">(</span><span class="identifier">INVOCATION_LIST_NT</span><span class="plain">);</span>
|
||||
<span class="identifier">spec</span><span class="plain">-</span><span class="element">>down</span><span class="plain">-</span><span class="element">>down</span><span class="plain"> = </span><span class="functiontext">Invocations::add_to_list</span><span class="plain">(</span><span class="identifier">spec</span><span class="plain">-</span><span class="element">>down</span><span class="plain">-</span><span class="element">>down</span><span class="plain">, </span><span class="identifier">inv</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">spec</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -420,7 +420,7 @@ person plurals.
|
|||
<span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">inv</span><span class="plain"> = </span><span class="functiontext">Invocations::new</span><span class="plain">();</span>
|
||||
<span class="functiontext">Invocations::set_word_range</span><span class="plain">(</span><span class="identifier">inv</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="functiontext">Invocations::set_verb_conjugation</span><span class="plain">(</span><span class="identifier">inv</span><span class="plain">, </span><span class="identifier">vc</span><span class="plain">, </span><span class="identifier">mvc</span><span class="plain">, </span><span class="identifier">neg</span><span class="plain">);</span>
|
||||
<span class="identifier">spec</span><span class="plain">-</span><span class="element">>down</span><span class="plain"> = </span><span class="identifier">ParseTree::new</span><span class="plain">(</span><span class="constant">INVOCATION_LIST_NT</span><span class="plain">);</span>
|
||||
<span class="identifier">spec</span><span class="plain">-</span><span class="element">>down</span><span class="plain"> = </span><span class="identifier">ParseTree::new</span><span class="plain">(</span><span class="identifier">INVOCATION_LIST_NT</span><span class="plain">);</span>
|
||||
<span class="identifier">spec</span><span class="plain">-</span><span class="element">>down</span><span class="plain">-</span><span class="element">>down</span><span class="plain"> = </span><span class="functiontext">Invocations::add_to_list</span><span class="plain">(</span><span class="identifier">spec</span><span class="plain">-</span><span class="element">>down</span><span class="plain">-</span><span class="element">>down</span><span class="plain">, </span><span class="identifier">inv</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">spec</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -481,7 +481,7 @@ S-tree as we run sideways through the alternative readings.
|
|||
<span class="functiontext">Invocations::get_token_as_parsed</span><span class="plain">(</span><span class="identifier">inv</span><span class="plain">, 0), </span><span class="identifier">K_text</span><span class="plain">)))</span>
|
||||
<span class="reserved">continue</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">spec</span><span class="plain">-</span><span class="element">>down</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
|
||||
<span class="identifier">spec</span><span class="plain">-</span><span class="element">>down</span><span class="plain"> = </span><span class="identifier">ParseTree::new</span><span class="plain">(</span><span class="constant">INVOCATION_LIST_NT</span><span class="plain">);</span>
|
||||
<span class="identifier">spec</span><span class="plain">-</span><span class="element">>down</span><span class="plain"> = </span><span class="identifier">ParseTree::new</span><span class="plain">(</span><span class="identifier">INVOCATION_LIST_NT</span><span class="plain">);</span>
|
||||
<span class="identifier">ParseTree::set_text</span><span class="plain">(</span><span class="identifier">spec</span><span class="plain">-</span><span class="element">>down</span><span class="plain">, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">spec</span><span class="plain">));</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="identifier">spec</span><span class="plain">-</span><span class="element">>down</span><span class="plain">-</span><span class="element">>down</span><span class="plain"> = </span><span class="functiontext">Invocations::add_to_list</span><span class="plain">(</span><span class="identifier">spec</span><span class="plain">-</span><span class="element">>down</span><span class="plain">-</span><span class="element">>down</span><span class="plain">, </span><span class="identifier">inv</span><span class="plain">);</span>
|
||||
|
@ -510,7 +510,7 @@ limit that we were unable to construct a test case for it.
|
|||
<span class="identifier">spec</span><span class="plain">-</span><span class="element">>down</span><span class="plain">-</span><span class="element">>down</span><span class="plain">-</span><span class="element">>next</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">; </span> <span class="comment">truncate to just one</span>
|
||||
<span class="identifier">ParseTree::set_text</span><span class="plain">(</span><span class="identifier">spec</span><span class="plain">, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">current_sentence</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In %1, the phrase being constructed is just too "</span>
|
||||
<span class="string">"long and complicated, and will need to be simplified. (This "</span>
|
||||
|
|
|
@ -233,7 +233,7 @@ Still:
|
|||
<span class="identifier">e_notation_problem_issued</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_WantonEngineering</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_WantonEngineering</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In %1, you write '%2', which looks to me like the engineering "</span>
|
||||
<span class="string">"notation for a real number - I'm guessing that the 'e' means "</span>
|
||||
|
|
|
@ -213,7 +213,7 @@ higher up in Inform. Ultimately, the text must match <k-kind> in each case
|
|||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TypeCantVary</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TypeCantVary</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In %1, '%2' is not a kind of value which a variable can safely have, "</span>
|
||||
<span class="string">"as it cannot ever vary."</span><span class="plain">);</span>
|
||||
|
@ -233,7 +233,7 @@ higher up in Inform. Ultimately, the text must match <k-kind> in each case
|
|||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TypeUnmaintainable</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TypeUnmaintainable</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In %1, '%2' is not a kind of value which a variable can safely have, "</span>
|
||||
<span class="string">"as it cannot be guaranteed that the contents will always meet "</span>
|
||||
|
@ -747,7 +747,7 @@ Again, this is part of a condition, and can't evaluate.
|
|||
<span class="identifier">spec</span><span class="plain">-</span><span class="element">>down</span><span class="plain"> = </span><span class="identifier">RP</span><span class="plain">[1];</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="functiontext">LocalVariables::are_we_using_table_lookup</span><span class="plain">() == </span><span class="identifier">FALSE</span><span class="plain">) &&</span>
|
||||
<span class="plain">(</span><span class="identifier">problem_count</span><span class="plain"> == 0)) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NoRowSelected</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NoRowSelected</span><span class="plain">),</span>
|
||||
<span class="string">"no row seems to have been chosen at this point"</span><span class="plain">,</span>
|
||||
<span class="string">"so it doesn't make sense to talk about the entries "</span>
|
||||
<span class="string">"within it. (By 'at this point', I mean the point "</span>
|
||||
|
|
|
@ -528,13 +528,13 @@ has the standard form, but we check it anyway.
|
|||
<span class="identifier">subject_noun_phrase</span><span class="plain"> = </span><span class="identifier">A</span><span class="plain">;</span>
|
||||
<span class="identifier">verb_phrase</span><span class="plain"> = </span><span class="identifier">B</span><span class="plain">;</span>
|
||||
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">verb_phrase</span><span class="plain">-</span><span class="element">>down</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">Problems::Issue::s_subtree_error</span><span class="plain">(</span><span class="string">"VP childless"</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">verb_phrase</span><span class="plain">-</span><span class="element">>down</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">Problems::Issue::s_subtree_error</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="string">"VP childless"</span><span class="plain">);</span>
|
||||
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ParseTree::get_type</span><span class="plain">(</span><span class="identifier">verb_phrase</span><span class="plain">) != </span><span class="constant">UNKNOWN_NT</span><span class="plain">)</span>
|
||||
<span class="identifier">Problems::Issue::s_subtree_error</span><span class="plain">(</span><span class="string">"VP not a VP"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::s_subtree_error</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="string">"VP not a VP"</span><span class="plain">);</span>
|
||||
|
||||
<span class="identifier">vu</span><span class="plain"> = </span><span class="identifier">ParseTree::get_vu</span><span class="plain">(</span><span class="identifier">verb_phrase</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">vu</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">Problems::Issue::s_subtree_error</span><span class="plain">(</span><span class="string">"verb null"</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">vu</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">Problems::Issue::s_subtree_error</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="string">"verb null"</span><span class="plain">);</span>
|
||||
<span class="identifier">verb_phrase_negated</span><span class="plain"> = (</span><span class="identifier">VerbUsages::is_used_negatively</span><span class="plain">(</span><span class="identifier">vu</span><span class="plain">))?</span><span class="identifier">TRUE</span><span class="plain">:</span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="identifier">prep</span><span class="plain"> = </span><span class="identifier">ParseTree::get_prep</span><span class="plain">(</span><span class="identifier">verb_phrase</span><span class="plain">);</span>
|
||||
</pre>
|
||||
|
@ -599,7 +599,7 @@ using a tense other than the present, and all is well.
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">PM_DescLocalPast_location</span><span class="plain"> != </span><span class="identifier">current_sentence</span><span class="plain">)</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_DescLocalPast</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_DescLocalPast</span><span class="plain">),</span>
|
||||
<span class="string">"conditions written in the past tense cannot refer to "</span>
|
||||
<span class="string">"temporary values"</span><span class="plain">,</span>
|
||||
<span class="string">"because they have no past. For instance, the name given in a "</span>
|
||||
|
@ -665,7 +665,7 @@ pattern) plus "in the Home" (a description).
|
|||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">ExParser::Subtrees::throw_past_problem</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">desc</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">PM_PastSubordinate_issued_at</span><span class="plain"> != </span><span class="identifier">current_sentence</span><span class="plain">) {</span>
|
||||
<span class="identifier">PM_PastSubordinate_issued_at</span><span class="plain"> = </span><span class="identifier">current_sentence</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_PastSubordinate</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_PastSubordinate</span><span class="plain">),</span>
|
||||
<span class="string">"subordinate clauses have to be in the present tense"</span><span class="plain">,</span>
|
||||
<span class="string">"so 'the Black Door was open' is fine, but not 'something which "</span>
|
||||
<span class="string">"was open'. Only the main verb can be in the past tense."</span><span class="plain">);</span>
|
||||
|
|
|
@ -49,7 +49,7 @@ a <code class="display"><span class="extract">pcalc_prop</span></code> structure
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The structure pcalc_prop is accessed in 3/pd, 5/lp, 5/ut, 5/un, 5/ins, 6/rlt, 6/nv, 7/ss, 7/hdn, 7/ns, 7/oaf, 7/rs, 8/ie, 9/tfa, 9/tbath, 9/rpt, 9/tc, 9/ma, 9/rk, 9/ass, 9/imp, 9/pd, 10/teav, 10/cap, 11/pr, 11/bas, 11/tc, 11/sc, 11/sm, 11/tcp, 12/ap, 12/ca, 12/dtd, 12/cad, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/tti, 26/pc, 26/ts, 27/cm and here.</p>
|
||||
<p class="endnote">The structure pcalc_prop is accessed in 3/pd, 5/lp, 5/ut, 5/un, 5/ins, 6/rlt, 6/nv, 7/ns, 7/oaf, 7/rs, 9/tfa, 9/tbath, 9/rpt, 9/tc, 9/ma, 9/rk, 9/ass, 9/imp, 9/pd, 10/teav, 10/cap, 11/pr, 11/bas, 11/tc, 11/sc, 11/sm, 11/tcp, 12/ap, 12/ca, 12/dtd, 12/cad, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/tti, 26/pc, 26/ts, 27/cm and here.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP3"></a><b>§3. </b>The Universe is filled with atoms, but they come in different kinds, called
|
||||
elements. For us, an "element" is the identifying number, stored in the
|
||||
|
|
|
@ -78,7 +78,7 @@ the meaning of the whole sentence.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">A</span><span class="plain">) </span><span class="identifier">Problems::Issue::s_subtree_error_set_position</span><span class="plain">(</span><span class="identifier">A</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">A</span><span class="plain">) </span><span class="identifier">Problems::Issue::s_subtree_error_set_position</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">A</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">conv_log_depth</span><span class="plain"> == 0) </span><span class="identifier">LOGIF</span><span class="plain">(</span><span class="identifier">PREDICATE_CALCULUS</span><span class="plain">, </span><span class="string">"-----------\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
||||
<span class="identifier">conv_log_depth</span><span class="plain">++;</span>
|
||||
<span class="identifier">LOGIF</span><span class="plain">(</span><span class="identifier">PREDICATE_CALCULUS</span><span class="plain">, </span><span class="string">"[%d] Starting fs on: <%W>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">conv_log_depth</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
|
@ -158,14 +158,14 @@ it can be applied.
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">subject_phrase_subtree</span><span class="plain"> = </span><span class="identifier">A</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">subject_phrase_subtree</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">Problems::Issue::s_subtree_error</span><span class="plain">(</span><span class="string">"SP subtree null"</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">subject_phrase_subtree</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">Problems::Issue::s_subtree_error</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="string">"SP subtree null"</span><span class="plain">);</span>
|
||||
<span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">verb_phrase_subtree</span><span class="plain"> = </span><span class="identifier">B</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">verb_phrase_subtree</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">Problems::Issue::s_subtree_error</span><span class="plain">(</span><span class="string">"VP subtree null"</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">verb_phrase_subtree</span><span class="plain">-</span><span class="element">>down</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">Problems::Issue::s_subtree_error</span><span class="plain">(</span><span class="string">"VP subtree broken"</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">verb_phrase_subtree</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">Problems::Issue::s_subtree_error</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="string">"VP subtree null"</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">verb_phrase_subtree</span><span class="plain">-</span><span class="element">>down</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">Problems::Issue::s_subtree_error</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="string">"VP subtree broken"</span><span class="plain">);</span>
|
||||
<span class="identifier">object_phrase_subtree</span><span class="plain"> = </span><span class="identifier">verb_phrase_subtree</span><span class="plain">-</span><span class="element">>down</span><span class="plain">;</span>
|
||||
|
||||
<span class="identifier">verb_usage</span><span class="plain"> *</span><span class="identifier">vu</span><span class="plain"> = </span><span class="identifier">ParseTree::get_vu</span><span class="plain">(</span><span class="identifier">verb_phrase_subtree</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">vu</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">Problems::Issue::s_subtree_error</span><span class="plain">(</span><span class="string">"verb null"</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">vu</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">Problems::Issue::s_subtree_error</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="string">"verb null"</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">SV_not_SN</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) && (</span><span class="identifier">VerbUsages::get_tense_used</span><span class="plain">(</span><span class="identifier">vu</span><span class="plain">) != </span><span class="identifier">IS_TENSE</span><span class="plain">))</span>
|
||||
<<span class="cwebmacro">Disallow the past tenses in relative clauses</span> <span class="cwebmacronumber">1.4.1</span>><span class="plain">;</span>
|
||||
|
||||
|
|
|
@ -57,7 +57,7 @@ their existence.
|
|||
|
||||
<p class="endnote">The function Calculus::Propositions::Abstract::to_make_a_const is used in 9/tc (<a href="9-tc.html#SP5_4_2_2">§5.4.2.2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Calculus::Propositions::Abstract::to_create_something is used in 3/nl (<a href="3-nl.html#SP6">§6</a>), 9/tc (<a href="9-tc.html#SP5_4_1_1">§5.4.1.1</a>, <a href="9-tc.html#SP5_4_2_1">§5.4.2.1</a>, <a href="9-tc.html#SP5_4_2_2">§5.4.2.2</a>, <a href="9-tc.html#SP5_4_2_3">§5.4.2.3</a>, <a href="9-tc.html#SP8_4_1">§8.4.1</a>), 9/pd (<a href="9-pd.html#SP5_11">§5.11</a>), 15/cp (<a href="15-cp.html#SP3">§3</a>).</p>
|
||||
<p class="endnote">The function Calculus::Propositions::Abstract::to_create_something is used in 3/nl (<a href="3-nl.html#SP5">§5</a>), 9/tc (<a href="9-tc.html#SP5_4_1_1">§5.4.1.1</a>, <a href="9-tc.html#SP5_4_2_1">§5.4.2.1</a>, <a href="9-tc.html#SP5_4_2_2">§5.4.2.2</a>, <a href="9-tc.html#SP5_4_2_3">§5.4.2.3</a>, <a href="9-tc.html#SP8_4_1">§8.4.1</a>), 9/pd (<a href="9-pd.html#SP5_11">§5.11</a>), 15/cp (<a href="15-cp.html#SP3">§3</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP2"></a><b>§2. </b>A proposition to assert that an object has a given kind:
|
||||
</p>
|
||||
|
@ -250,7 +250,7 @@ parse the text to find what which property is referred to.
|
|||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">));</span>
|
||||
<span class="functiontext">Problems::quote_property</span><span class="plain">(3, </span><span class="identifier">prn</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(4, </span><span class="identifier">VW</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_WithEitherOrValue</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_WithEitherOrValue</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The sentence '%1' seems to be trying to create something which "</span>
|
||||
<span class="string">"has '%2', where the %3 property is being set equal to %4. But "</span>
|
||||
|
@ -270,7 +270,7 @@ parse the text to find what which property is referred to.
|
|||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">));</span>
|
||||
<span class="functiontext">Problems::quote_property</span><span class="plain">(3, </span><span class="identifier">prn</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(4, </span><span class="functiontext">Properties::Valued::kind</span><span class="plain">(</span><span class="identifier">prn</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_WithValuelessValue</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_WithValuelessValue</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The sentence '%1' seems to be trying to create something which "</span>
|
||||
<span class="string">"has '%2', where the %3 property is being set in some way. But "</span>
|
||||
|
@ -309,7 +309,7 @@ that the rest is property name; and otherwise
|
|||
<pre class="displaydefn">
|
||||
<span class="identifier">wording</span><span class="plain"> </span><span class="identifier">W</span><span class="plain"> = </span><span class="identifier">Articles::remove_the</span><span class="plain">(</span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">));</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Wordings::empty</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Problems::Issue::assertion_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::assertion_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">),</span>
|
||||
<span class="string">"this looked to me as if it might be trying to create something "</span>
|
||||
<span class="string">"which has certain properties"</span><span class="plain">,</span>
|
||||
<span class="string">"and that made no sense on investigation. This sometimes happens "</span>
|
||||
|
@ -336,7 +336,7 @@ that the rest is property name; and otherwise
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Failed property list: pname = <%W>; pval = <%W>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">PW</span><span class="plain">, </span><span class="identifier">VW</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::assertion_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadPropertyList</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::assertion_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadPropertyList</span><span class="plain">),</span>
|
||||
<span class="string">"this looked to me as if it might be trying to create something "</span>
|
||||
<span class="string">"which has certain properties"</span><span class="plain">,</span>
|
||||
<span class="string">"and that made no sense on investigation. This sometimes happens "</span>
|
||||
|
|
|
@ -274,7 +274,7 @@ but it's a very subtle one, and we want to use it only when everything else
|
|||
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Rejecting as unarticled\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">tck</span><span class="plain">-</span><span class="element">>issue_error</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">NEVER_MATCH</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BareKindVariable</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BareKindVariable</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The sentence %1 seems to use a kind variable by its letter "</span>
|
||||
<span class="string">"alone in the context of a noun, which Inform doesn't allow. "</span>
|
||||
|
@ -350,7 +350,7 @@ problem message has already been issued, but just in case not...
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">tck</span><span class="plain">-</span><span class="element">>issue_error</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">NEVER_MATCH</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">spec</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The sentence %1 seems to contain a value '%2' which I can't make "</span>
|
||||
<span class="string">"any sense of."</span><span class="plain">);</span>
|
||||
|
|
|
@ -127,7 +127,7 @@ we don't accidentally break this rule:
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Calculus::Propositions::Assert::assert_true is used in 3/nl (<a href="3-nl.html#SP6">§6</a>), 9/tc (<a href="9-tc.html#SP5_4_1_1">§5.4.1.1</a>, <a href="9-tc.html#SP5_4_2_1">§5.4.2.1</a>, <a href="9-tc.html#SP5_4_2_2">§5.4.2.2</a>, <a href="9-tc.html#SP5_4_2_3">§5.4.2.3</a>, <a href="9-tc.html#SP8_4_1">§8.4.1</a>), 9/pk (<a href="9-pk.html#SP2">§2</a>), 9/rk (<a href="9-rk.html#SP3">§3</a>), 9/pd (<a href="9-pd.html#SP5_11">§5.11</a>), 15/cp (<a href="15-cp.html#SP3">§3</a>).</p>
|
||||
<p class="endnote">The function Calculus::Propositions::Assert::assert_true is used in 3/nl (<a href="3-nl.html#SP5">§5</a>), 9/tc (<a href="9-tc.html#SP5_4_1_1">§5.4.1.1</a>, <a href="9-tc.html#SP5_4_2_1">§5.4.2.1</a>, <a href="9-tc.html#SP5_4_2_2">§5.4.2.2</a>, <a href="9-tc.html#SP5_4_2_3">§5.4.2.3</a>, <a href="9-tc.html#SP8_4_1">§8.4.1</a>), 9/pk (<a href="9-pk.html#SP2">§2</a>), 9/rk (<a href="9-rk.html#SP3">§3</a>), 9/pd (<a href="9-pd.html#SP5_11">§5.11</a>), 15/cp (<a href="15-cp.html#SP3">§3</a>).</p>
|
||||
|
||||
<p class="endnote">The function Calculus::Propositions::Assert::assert_true_about is used in 6/rlt (<a href="6-rlt.html#SP9">§9</a>), 9/ma (<a href="9-ma.html#SP3_3_39_5">§3.3.39.5</a>), 9/pk (<a href="9-pk.html#SP3">§3</a>), 9/rk (<a href="9-rk.html#SP1_2">§1.2</a>), 9/imp (<a href="9-imp.html#SP7_1_3">§7.1.3</a>), 9/pd (<a href="9-pd.html#SP5_9">§5.9</a>, <a href="9-pd.html#SP5_10">§5.10</a>, <a href="9-pd.html#SP6_1">§6.1</a>), 11/tc (<a href="11-tc.html#SP2">§2</a>), 15/ep (<a href="15-ep.html#SP9">§9</a>), 15/vp (<a href="15-vp.html#SP10">§10</a>), 19/tod (<a href="19-tod.html#SP6_4">§6.4</a>).</p>
|
||||
|
||||
|
@ -319,7 +319,7 @@ which are dark" will do it).
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantAssertQuantifier</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantAssertQuantifier</span><span class="plain">),</span>
|
||||
<span class="string">"the relationship you describe is not exact enough"</span><span class="plain">,</span>
|
||||
<span class="string">"so that I cannot be sure of the initial situation. A specific "</span>
|
||||
<span class="string">"relationship would be something like 'the box is a container in "</span>
|
||||
|
@ -468,7 +468,7 @@ interpret no indication of a kind as meaning "object".
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">is_a_kind</span><span class="plain">) {</span>
|
||||
<span class="identifier">K</span><span class="plain"> = </span><span class="identifier">Kinds::new_base</span><span class="plain">(</span><span class="identifier">NW</span><span class="plain">, </span><span class="identifier">K</span><span class="plain">);</span>
|
||||
<span class="identifier">K</span><span class="plain"> = </span><span class="identifier">Kinds::new_base</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">NW</span><span class="plain">, </span><span class="identifier">K</span><span class="plain">);</span>
|
||||
<span class="identifier">current_interpretation_as_infs</span><span class="plain">[</span><span class="identifier">v</span><span class="plain">] = </span><span class="functiontext">Kinds::Knowledge::as_subject</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">);</span>
|
||||
<span class="identifier">current_interpretation_as_spec</span><span class="plain">[</span><span class="identifier">v</span><span class="plain">] = </span><span class="functiontext">Specifications::from_kind</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">);</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">is_a_var</span><span class="plain">) || (</span><span class="identifier">is_a_const</span><span class="plain">)) {</span>
|
||||
|
@ -531,7 +531,7 @@ through here, but it isn't exactly an everyday sentence.
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">now_negated</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantAssertNonKind</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantAssertNonKind</span><span class="plain">),</span>
|
||||
<span class="string">"that seems to say what kind something doesn't have"</span><span class="plain">,</span>
|
||||
<span class="string">"which is too vague. You must say what kind it does have."</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain">;</span>
|
||||
|
@ -565,7 +565,7 @@ we're dealing with a backdrop. So we play dumb.
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">now_negated</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantAssertNegatedEverywhere</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantAssertNegatedEverywhere</span><span class="plain">),</span>
|
||||
<span class="string">"that seems to say that something isn't everywhere"</span><span class="plain">,</span>
|
||||
<span class="string">"which is too vague. You must say where it is."</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain">;</span>
|
||||
|
@ -594,13 +594,13 @@ we're dealing with a backdrop. So we play dumb.
|
|||
<span class="reserved">inference_subject</span><span class="plain"> *</span><span class="identifier">subj</span><span class="plain"> = </span><span class="functiontext">Calculus::Propositions::Assert::subject_of_term</span><span class="plain">(</span><span class="identifier">pl</span><span class="plain">-</span><span class="element">>terms</span><span class="plain">[0]);</span>
|
||||
<span class="reserved">instance</span><span class="plain"> *</span><span class="identifier">ox</span><span class="plain"> = </span><span class="functiontext">InferenceSubjects::as_object_instance</span><span class="plain">(</span><span class="identifier">subj</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">now_negated</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">),</span>
|
||||
<span class="string">"that seems to say that something isn't nowhere"</span><span class="plain">,</span>
|
||||
<span class="string">"which is too vague. You must say where it is."</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ox</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">),</span>
|
||||
<span class="string">"that seems to say that something generic is 'nowhere'"</span><span class="plain">,</span>
|
||||
<span class="string">"which suggests it could some day have a physical location."</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain">;</span>
|
||||
|
@ -630,13 +630,13 @@ problem aside for now.
|
|||
<span class="reserved">inference_subject</span><span class="plain"> *</span><span class="identifier">subj</span><span class="plain"> = </span><span class="functiontext">Calculus::Propositions::Assert::subject_of_term</span><span class="plain">(</span><span class="identifier">pl</span><span class="plain">-</span><span class="element">>terms</span><span class="plain">[0]);</span>
|
||||
<span class="reserved">instance</span><span class="plain"> *</span><span class="identifier">ox</span><span class="plain"> = </span><span class="functiontext">InferenceSubjects::as_object_instance</span><span class="plain">(</span><span class="identifier">subj</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">now_negated</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">),</span>
|
||||
<span class="string">"that seems to say that something isn't here"</span><span class="plain">,</span>
|
||||
<span class="string">"which is too vague. You must say where it is."</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ox</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NonInstanceHere</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NonInstanceHere</span><span class="plain">),</span>
|
||||
<span class="string">"that seems to say that something generic is 'here'"</span><span class="plain">,</span>
|
||||
<span class="string">"which would give it a physical location. (It would be like saying "</span>
|
||||
<span class="string">"'A number is here' - well, numbers are everywhere and nowhere.)"</span><span class="plain">);</span>
|
||||
|
@ -694,7 +694,7 @@ success flag.
|
|||
<span class="identifier">wording</span><span class="plain"> </span><span class="identifier">W</span><span class="plain"> = </span><span class="identifier">Adjectives::get_text</span><span class="plain">(</span><span class="identifier">aph</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantAssertAdjective</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantAssertAdjective</span><span class="plain">));</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">parity</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In the sentence %1, you ask me to arrange for something not to be "</span>
|
||||
<span class="string">"'%2' at the start of play. This is only possible when an adjective "</span>
|
||||
|
@ -748,7 +748,7 @@ these kind atoms.
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">now_negated</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantAssertNegatedRelations</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantAssertNegatedRelations</span><span class="plain">),</span>
|
||||
<span class="string">"that seems to make a negative statement about a relationship"</span><span class="plain">,</span>
|
||||
<span class="string">"which is too vague. You must make positive assertions."</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain">;</span>
|
||||
|
@ -793,14 +793,14 @@ these kind atoms.
|
|||
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="functiontext">Rvalues::is_nothing_object_constant</span><span class="plain">(</span><span class="identifier">spec0</span><span class="plain">)) ||</span>
|
||||
<span class="plain">(</span><span class="functiontext">Rvalues::is_nothing_object_constant</span><span class="plain">(</span><span class="identifier">spec1</span><span class="plain">)))</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RelationFailedOnNothing</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RelationFailedOnNothing</span><span class="plain">),</span>
|
||||
<span class="string">"that is an assertion which involves 'nothing'"</span><span class="plain">,</span>
|
||||
<span class="string">"which looks as if it might be trying to give me negative rather "</span>
|
||||
<span class="string">"than positive information. There's no need to tell me something "</span>
|
||||
<span class="string">"like 'Nothing is in the box.': just don't put anything in the box, "</span>
|
||||
<span class="string">"and then nothing will be in it."</span><span class="plain">);</span>
|
||||
<span class="reserved">else</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">),</span>
|
||||
<span class="string">"that is an assertion I can't puzzle out"</span><span class="plain">,</span>
|
||||
<span class="string">"which seems to involve placing two things in some sort of "</span>
|
||||
<span class="string">"relationship, but if so then I can't make it work. Perhaps the "</span>
|
||||
|
@ -834,7 +834,7 @@ simpler and clearer.
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">the_fn</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) { </span><span class="identifier">the_fn</span><span class="plain"> = </span><span class="identifier">pt1</span><span class="element">.function</span><span class="plain">; </span><span class="identifier">side</span><span class="plain"> = 0; }</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">the_fn</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">pl</span><span class="plain">-</span><span class="element">>terms</span><span class="plain">[</span><span class="identifier">side</span><span class="plain">]</span><span class="element">.function</span><span class="plain">) || (</span><span class="identifier">the_fn</span><span class="plain">-</span><span class="element">>fn_of.function</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">),</span>
|
||||
<span class="string">"that is too complicated an assertion"</span><span class="plain">,</span>
|
||||
<span class="string">"and cannot be declared as part of the initial situation. (It "</span>
|
||||
<span class="string">"does make sense, and could be tested with 'if' - it's just "</span>
|
||||
|
|
|
@ -131,11 +131,11 @@ can suppress the following problem messages:
|
|||
<pre class="displaydefn">
|
||||
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Failed on task: $o\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">pl</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">task</span><span class="plain"> == </span><span class="constant">TEST_ATOM_TASK</span><span class="plain">)</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">),</span>
|
||||
<span class="string">"this is not a condition I am able to test"</span><span class="plain">,</span>
|
||||
<span class="string">"or at any rate not during play."</span><span class="plain">);</span>
|
||||
<span class="reserved">else</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantForceRelation</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantForceRelation</span><span class="plain">),</span>
|
||||
<span class="string">"this is not something I can make true with 'now'"</span><span class="plain">,</span>
|
||||
<span class="string">"because it is too vague about the underlying cause which would "</span>
|
||||
<span class="string">"need to be arranged."</span><span class="plain">);</span>
|
||||
|
@ -159,7 +159,7 @@ can suppress the following problem messages:
|
|||
<span class="plain">(</span><span class="functiontext">Frames::used_for_past_tense</span><span class="plain">()) &&</span>
|
||||
<span class="plain">(</span><span class="identifier">suppress_C14ActionVarsPastTense</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">)) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_count</span><span class="plain"> == 0)</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ActionVarsPastTense</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ActionVarsPastTense</span><span class="plain">),</span>
|
||||
<span class="string">"it is misleading to talk about the noun, the second noun "</span>
|
||||
<span class="string">"or the person asked to do something in past tenses"</span><span class="plain">,</span>
|
||||
<span class="string">"because in the past, those were different things and "</span>
|
||||
|
@ -300,7 +300,7 @@ the I6 <code class="display"><span class="extract">ofclass</span></code> operato
|
|||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">Kinds::get_construct</span><span class="plain">(</span><span class="identifier">pl</span><span class="plain">-</span><span class="element">>assert_kind</span><span class="plain">) == </span><span class="identifier">CON_list_of</span><span class="plain">) && (</span><span class="identifier">problem_count</span><span class="plain"> == 0)) {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(2, </span><span class="identifier">pl</span><span class="plain">-</span><span class="element">>assert_kind</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantCheckListContents</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantCheckListContents</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In %1, you use a list which might or might not match a "</span>
|
||||
<span class="string">"definition requiring %2. But there's no efficient way to "</span>
|
||||
|
@ -316,7 +316,7 @@ the I6 <code class="display"><span class="extract">ofclass</span></code> operato
|
|||
<span class="reserved">case</span><span class="plain"> </span><span class="constant">NOW_ATOM_TRUE_TASK</span><span class="plain">:</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="constant">NOW_ATOM_FALSE_TASK</span><span class="plain">:</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">suppress_C14CantChangeKind</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantChangeKind</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantChangeKind</span><span class="plain">),</span>
|
||||
<span class="string">"the kind of something is fixed"</span><span class="plain">,</span>
|
||||
<span class="string">"and cannot be changed during play with a 'now'."</span><span class="plain">);</span>
|
||||
<span class="identifier">asch</span><span class="element">.schema</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
|
@ -349,7 +349,7 @@ to all backdrops which are currently everywhere.
|
|||
<span class="functiontext">Calculus::Schemas::modify</span><span class="plain">(</span><span class="identifier">sch</span><span class="plain">, </span><span class="string">"MoveObject(*1, FoundEverywhere); MoveFloatingObjects();"</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">asch</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="constant">NOW_ATOM_FALSE_TASK</span><span class="plain">:</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantChangeEverywhere</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantChangeEverywhere</span><span class="plain">),</span>
|
||||
<span class="string">"not being 'everywhere' is not something which can be changed "</span>
|
||||
<span class="string">"during play using 'now'"</span><span class="plain">,</span>
|
||||
<span class="string">"because it's not exact enough about what needs to be done."</span><span class="plain">);</span>
|
||||
|
@ -405,7 +405,7 @@ propositions to be compiled, so this code is never used.)
|
|||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">asch</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="constant">NOW_ATOM_TRUE_TASK</span><span class="plain">:</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="constant">NOW_ATOM_FALSE_TASK</span><span class="plain">:</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">),</span>
|
||||
<span class="string">"being 'here' is not something which can be changed during play"</span><span class="plain">,</span>
|
||||
<span class="string">"so it cannot be brought about or cancelled out with 'now'."</span><span class="plain">);</span>
|
||||
<span class="identifier">asch</span><span class="element">.schema</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">; </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">asch</span><span class="plain">;</span>
|
||||
|
|
|
@ -79,7 +79,7 @@ which create routines which... and so on.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Calculus::Propositions::Deferred::compile_remaining_deferred is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function Calculus::Propositions::Deferred::compile_remaining_deferred is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<p class="endnote">The function Calculus::Propositions::Deferred::compilation_coroutine is used in 22/cs (<a href="22-cs.html#SP14">§14</a>).</p>
|
||||
|
||||
|
@ -216,7 +216,7 @@ wrong in the calling routine, where they are needed.
|
|||
<pre class="displaydefn">
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="functiontext">LocalVariables::are_we_using_table_lookup</span><span class="plain">()) && (!</span><span class="identifier">ct_locals_problem_thrown</span><span class="plain">)) {</span>
|
||||
<span class="identifier">ct_locals_problem_thrown</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantLookUpTableInDeferred</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantLookUpTableInDeferred</span><span class="plain">),</span>
|
||||
<span class="string">"I am not able to look up table entries in this complicated "</span>
|
||||
<span class="string">"condition"</span><span class="plain">,</span>
|
||||
<span class="string">"which seems to involve making a potentially large number "</span>
|
||||
|
@ -244,7 +244,7 @@ possible.)
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">negated_quantifier_found</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">),</span>
|
||||
<span class="string">"this involves a very complicated negative thought"</span><span class="plain">,</span>
|
||||
<span class="string">"which I'm not able to untangle. Perhaps you could rephrase "</span>
|
||||
<span class="string">"this more simply, or split it into more than one sentence?"</span><span class="plain">);</span>
|
||||
|
|
|
@ -68,7 +68,7 @@ all deferral requests are redeemed — they would then never be reached.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Calculus::Deferrals::allow_no_further_deferrals is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function Calculus::Deferrals::allow_no_further_deferrals is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP4"></a><b>§4. Deferral requests. </b>The following fills out the paperwork to request a deferred proposition.
|
||||
</p>
|
||||
|
@ -127,7 +127,7 @@ that the resulting routine will be called <code class="display"><span class="ext
|
|||
<span class="identifier">inter_name</span><span class="plain"> *</span><span class="functiontext">Calculus::Deferrals::compile_deferred_description_test</span><span class="plain">(</span><span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">spec</span><span class="plain">) {</span>
|
||||
<span class="reserved">pcalc_prop</span><span class="plain"> *</span><span class="identifier">prop</span><span class="plain"> = </span><span class="functiontext">Specifications::to_proposition</span><span class="plain">(</span><span class="identifier">spec</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Calculus::Propositions::contains_callings</span><span class="plain">(</span><span class="identifier">prop</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantCallDeferredDescs</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantCallDeferredDescs</span><span class="plain">),</span>
|
||||
<span class="string">"'called' can't be used when testing a description"</span><span class="plain">,</span>
|
||||
<span class="string">"since it would make a name for something which existed only "</span>
|
||||
<span class="string">"so temporarily that it couldn't be used anywhere else."</span><span class="plain">);</span>
|
||||
|
@ -661,7 +661,7 @@ does not have run-time object or value creation.
|
|||
<span class="reserved">switch</span><span class="plain">(</span><span class="identifier">pl</span><span class="plain">-</span><span class="element">>element</span><span class="plain">) {</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="constant">QUANTIFIER_ATOM</span><span class="plain">:</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Calculus::Atoms::is_existence_quantifier</span><span class="plain">(</span><span class="identifier">pl</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantForceExistence</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantForceExistence</span><span class="plain">),</span>
|
||||
<span class="string">"this is not explicit enough"</span><span class="plain">,</span>
|
||||
<span class="string">"and should set out definite relationships between specific "</span>
|
||||
<span class="string">"things, like 'now the cat is in the bag', not something "</span>
|
||||
|
@ -670,7 +670,7 @@ does not have run-time object or value creation.
|
|||
<span class="reserved">return</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Calculus::Atoms::is_now_assertable_quantifier</span><span class="plain">(</span><span class="identifier">pl</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantForceGeneralised</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantForceGeneralised</span><span class="plain">),</span>
|
||||
<span class="string">"this can't be made true with 'now'"</span><span class="plain">,</span>
|
||||
<span class="string">"because it is too vague about what it applies to. It's fine "</span>
|
||||
<span class="string">"to say 'now all the doors are open' or 'now none of the doors "</span>
|
||||
|
@ -682,7 +682,7 @@ does not have run-time object or value creation.
|
|||
<span class="identifier">quantifier_count</span><span class="plain">++;</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="constant">CALLED_ATOM</span><span class="plain">:</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantForceCalling</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantForceCalling</span><span class="plain">),</span>
|
||||
<span class="string">"a 'now' is not allowed to call names"</span><span class="plain">,</span>
|
||||
<span class="string">"and it wouldn't really make sense to do so anyway. 'if "</span>
|
||||
<span class="string">"a person (called the victim) is in the Trap Room' makes "</span>
|
||||
|
@ -739,7 +739,7 @@ from absolutely anywhere. Hence the following:
|
|||
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">q</span><span class="plain">) && (</span><span class="identifier">q</span><span class="plain"> != </span><span class="identifier">for_all_quantifier</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_spec</span><span class="plain">(2, </span><span class="identifier">spec</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In %1 you wrote the description '%2' in the context of a value, "</span>
|
||||
<span class="string">"but descriptions used that way are not allowed to talk about "</span>
|
||||
|
@ -761,7 +761,7 @@ from absolutely anywhere. Hence the following:
|
|||
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Offending proposition: $D\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">prop</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">example</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LocalInDescription</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LocalInDescription</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but descriptions used as values are not allowed to "</span>
|
||||
<span class="string">"contain references to temporary values (defined by 'let', or by loops, "</span>
|
||||
|
@ -977,7 +977,7 @@ defer it to a proposition with reason <code class="display"><span class="extract
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RandomImpossible</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RandomImpossible</span><span class="plain">),</span>
|
||||
<span class="string">"this asks to find a random choice from a range which is too "</span>
|
||||
<span class="string">"large or impractical"</span><span class="plain">,</span>
|
||||
<span class="string">"so can't be done. For instance, 'a random person' is fine - "</span>
|
||||
|
@ -1277,7 +1277,7 @@ until it returns 0, when the domain is exhausted.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CalledInRepeat</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CalledInRepeat</span><span class="plain">),</span>
|
||||
<span class="string">"this tries to use '(called ...)' to give names to values "</span>
|
||||
<span class="string">"arising in the course of working out what to repeat through"</span><span class="plain">,</span>
|
||||
<span class="string">"but this is not allowed. (Sorry: it's too hard to get right.)"</span><span class="plain">);</span>
|
||||
|
@ -1293,7 +1293,7 @@ until it returns 0, when the domain is exhausted.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadRepeatDomain</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadRepeatDomain</span><span class="plain">),</span>
|
||||
<span class="string">"this describes a collection of values which can't be repeated through"</span><span class="plain">,</span>
|
||||
<span class="string">"because the possible range is too large (or has no sensible ordering). "</span>
|
||||
<span class="string">"For instance, you can 'repeat with D running through doors' because "</span>
|
||||
|
@ -1595,7 +1595,7 @@ passes type-checking successfully.
|
|||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_text</span><span class="plain">(2, </span><span class="identifier">billing</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(3, </span><span class="identifier">EW</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In %1, you are asking for %2, but this should range over a "</span>
|
||||
<span class="string">"simpler description than '%3', please - it should not include any "</span>
|
||||
|
@ -1610,7 +1610,7 @@ passes type-checking successfully.
|
|||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_text</span><span class="plain">(2, </span><span class="identifier">billing</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(3, </span><span class="identifier">EW</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In %1, you are asking for %2, but '%3' looks as if it ranges "</span>
|
||||
<span class="string">"over only a single specific object, not a whole collection of "</span>
|
||||
|
|
|
@ -211,7 +211,7 @@ setting a global variable.
|
|||
<span class="reserved">if</span><span class="plain"> ((</span><span class="functiontext">NonlocalVariables::is_constant</span><span class="plain">(</span><span class="identifier">q</span><span class="plain">)) && (</span><span class="identifier">prevailing_mood</span><span class="plain"> == </span><span class="identifier">CERTAIN_CE</span><span class="plain">))</span>
|
||||
<span class="identifier">allowed</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">allowed</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">)</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantQualifyVariableValues</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantQualifyVariableValues</span><span class="plain">),</span>
|
||||
<span class="string">"a variable can only be given its value straightforwardly or "</span>
|
||||
<span class="string">"qualified by 'usually'"</span><span class="plain">,</span>
|
||||
<span class="string">"not with 'always', 'seldom' or 'never'."</span><span class="plain">);</span>
|
||||
|
@ -291,7 +291,7 @@ of both A and B.
|
|||
<span class="functiontext">Kinds::RunTime::interpret_test_equality</span><span class="plain">(</span><span class="identifier">st</span><span class="plain">[0], </span><span class="identifier">st</span><span class="plain">[1]));</span>
|
||||
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_count</span><span class="plain"> == 0) {</span>
|
||||
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"$0 and $0; $u and $u\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, &(</span><span class="identifier">asch</span><span class="plain">-</span><span class="element">>pt0</span><span class="plain">), &(</span><span class="identifier">asch</span><span class="plain">-</span><span class="element">>pt1</span><span class="plain">), </span><span class="identifier">st</span><span class="plain">[0], </span><span class="identifier">st</span><span class="plain">[1]);</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantCompareValues</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantCompareValues</span><span class="plain">),</span>
|
||||
<span class="string">"that would involve comparing things which don't mean "</span>
|
||||
<span class="string">"anything to me"</span><span class="plain">,</span>
|
||||
<span class="string">"so I'm lost."</span><span class="plain">);</span>
|
||||
|
@ -376,7 +376,7 @@ lantern is bright".
|
|||
<pre class="displaydefn">
|
||||
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">task</span><span class="plain">) {</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="constant">TEST_ATOM_TASK</span><span class="plain">:</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ResponseComparisonUnsafe</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ResponseComparisonUnsafe</span><span class="plain">),</span>
|
||||
<span class="string">"for complicated internal reasons this comparison isn't safe to perform"</span><span class="plain">,</span>
|
||||
<span class="string">"and might give you a falsely negative result. To avoid what might "</span>
|
||||
<span class="string">"be misleading, you aren't allowed to compare a response to text."</span><span class="plain">);</span>
|
||||
|
@ -435,7 +435,7 @@ lantern is bright".
|
|||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(2, </span><span class="identifier">st</span><span class="plain">[1]);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(3, </span><span class="identifier">st</span><span class="plain">[0]);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In the line %1, you seem to be asking me to put %2 into %3, "</span>
|
||||
<span class="string">"which can't safely be done."</span><span class="plain">);</span>
|
||||
|
@ -463,12 +463,12 @@ one that's more helpfully specific and return <code class="display"><span class=
|
|||
<pre class="displaydefn">
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Rvalues::to_instance</span><span class="plain">(</span><span class="identifier">asch</span><span class="plain">-</span><span class="element">>pt0.constant</span><span class="plain">)) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Kinds::Compare::le</span><span class="plain">(</span><span class="functiontext">Specifications::to_kind</span><span class="plain">(</span><span class="identifier">asch</span><span class="plain">-</span><span class="element">>pt0.constant</span><span class="plain">), </span><span class="identifier">K_object</span><span class="plain">))</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantEquateValues</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantEquateValues</span><span class="plain">),</span>
|
||||
<span class="string">"equality is not something I can change"</span><span class="plain">,</span>
|
||||
<span class="string">"so either those are already the same or are different, and I "</span>
|
||||
<span class="string">"can't alter matters."</span><span class="plain">);</span>
|
||||
<span class="reserved">else</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantChangeNamedConstant</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantChangeNamedConstant</span><span class="plain">),</span>
|
||||
<span class="string">"I can't change that"</span><span class="plain">,</span>
|
||||
<span class="string">"because it is a name for a constant value. Some named values, "</span>
|
||||
<span class="string">"like 'the score', can be changed, because they were defined "</span>
|
||||
|
|
|
@ -50,7 +50,7 @@
|
|||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">UNARY_MINUS_OPERATION</span><span class="plain">: </span><<span class="cwebmacro">Emit unary minus</span> <span class="cwebmacronumber">1.11</span>><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="constant">IMPLICIT_APPLICATION_OPERATION</span><span class="plain">: </span><<span class="cwebmacro">Emit function application</span> <span class="cwebmacronumber">1.13</span>><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">default</span><span class="plain">:</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">),</span>
|
||||
<span class="string">"this doesn't seem to be an arithmetic operation"</span><span class="plain">,</span>
|
||||
<span class="string">"suggesting a problem with some inline definition."</span><span class="plain">);</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
|
|
|
@ -223,6 +223,10 @@ kinds:
|
|||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Kinds::Knowledge::move_within</span><span class="plain">(</span><span class="identifier">kind</span><span class="plain"> *</span><span class="identifier">sub</span><span class="plain">, </span><span class="identifier">kind</span><span class="plain"> *</span><span class="identifier">super</span><span class="plain">) {</span>
|
||||
<span class="functiontext">InferenceSubjects::falls_within</span><span class="plain">(</span><span class="functiontext">Kinds::Knowledge::as_subject</span><span class="plain">(</span><span class="identifier">sub</span><span class="plain">), </span><span class="functiontext">Kinds::Knowledge::as_subject</span><span class="plain">(</span><span class="identifier">super</span><span class="plain">));</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Kinds::Knowledge::include_templates_for_kinds</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
|
||||
<span class="identifier">Kinds::Interpreter::include_templates_for_kinds</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">());</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
@ -235,6 +239,8 @@ kinds:
|
|||
|
||||
<p class="endnote">The function Kinds::Knowledge::move_within appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function Kinds::Knowledge::include_templates_for_kinds is used in 1/htc (<a href="1-htc.html#SP2_3">§2.3</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP7"></a><b>§7. Problems with kinds. </b></p>
|
||||
|
||||
|
||||
|
@ -246,17 +252,17 @@ kinds:
|
|||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Kinds::Knowledge::kinds_problem_handler</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">err_no</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="identifier">kind</span><span class="plain"> *</span><span class="identifier">K1</span><span class="plain">, </span><span class="identifier">kind</span><span class="plain"> *</span><span class="identifier">K2</span><span class="plain">) {</span>
|
||||
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">err_no</span><span class="plain">) {</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">DimensionRedundant_KINDERROR</span><span class="plain">:</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_DimensionRedundant</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_DimensionRedundant</span><span class="plain">),</span>
|
||||
<span class="string">"multiplication rules can only be given once"</span><span class="plain">,</span>
|
||||
<span class="string">"and this combination is already established."</span><span class="plain">);</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">DimensionNotBaseKOV_KINDERROR</span><span class="plain">:</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_DimensionNotBaseKOV</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_DimensionNotBaseKOV</span><span class="plain">),</span>
|
||||
<span class="string">"multiplication rules can only involve simple kinds of value"</span><span class="plain">,</span>
|
||||
<span class="string">"rather than complicated ones such as lists of other values."</span><span class="plain">);</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">NonDimensional_KINDERROR</span><span class="plain">:</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NonDimensional</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NonDimensional</span><span class="plain">),</span>
|
||||
<span class="string">"multiplication rules can only be given between kinds of "</span>
|
||||
<span class="string">"value which are known to be numerical"</span><span class="plain">,</span>
|
||||
<span class="string">"and not all of these are. Saying something like 'Pressure is a "</span>
|
||||
|
@ -266,7 +272,7 @@ kinds:
|
|||
<span class="string">"Inform will realise."</span><span class="plain">);</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">UnitSequenceOverflow_KINDERROR</span><span class="plain">:</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_UnitSequenceOverflow</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_UnitSequenceOverflow</span><span class="plain">),</span>
|
||||
<span class="string">"reading that sentence led me into calculating such a complicated "</span>
|
||||
<span class="string">"kind of value that I ran out of memory"</span><span class="plain">,</span>
|
||||
<span class="string">"which my programmer really didn't expect to happen. I think you "</span>
|
||||
|
@ -275,7 +281,7 @@ kinds:
|
|||
<span class="string">"weirdly tricky. Can you simplify?"</span><span class="plain">);</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">DimensionsInconsistent_KINDERROR</span><span class="plain">:</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_DimensionsInconsistent</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_DimensionsInconsistent</span><span class="plain">),</span>
|
||||
<span class="string">"this is inconsistent with what is already known about those kinds of value"</span><span class="plain">,</span>
|
||||
<span class="string">"all three of which already have well-established relationships - see the "</span>
|
||||
<span class="string">"Kinds index for more."</span><span class="plain">);</span>
|
||||
|
@ -285,7 +291,7 @@ kinds:
|
|||
<span class="identifier">Problems::quote_source</span><span class="plain">(2, </span><span class="identifier">pn</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(3, </span><span class="identifier">K1</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(4, </span><span class="identifier">K2</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_KindUnalterable</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_KindUnalterable</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but that seems to contradict %2, as %3 and %4 "</span>
|
||||
<span class="string">"are incompatible. (If %3 were a kind of %4 or vice versa "</span>
|
||||
|
@ -297,7 +303,7 @@ kinds:
|
|||
<span class="identifier">Problems::quote_source</span><span class="plain">(2, </span><span class="identifier">pn</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(3, </span><span class="identifier">K1</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(4, </span><span class="identifier">K2</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_KindsCircular</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_KindsCircular</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but that seems to contradict %2, as it would "</span>
|
||||
<span class="string">"make a circularity with %3 and %4 each being kinds of the "</span>
|
||||
|
@ -305,13 +311,13 @@ kinds:
|
|||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">LPCantScaleYet_KINDERROR</span><span class="plain">:</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LPCantScaleYet</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LPCantScaleYet</span><span class="plain">),</span>
|
||||
<span class="string">"this tries to scale up or down a value which so far has no point of "</span>
|
||||
<span class="string">"reference to scale from"</span><span class="plain">,</span>
|
||||
<span class="string">"which is impossible."</span><span class="plain">);</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">LPCantScaleTwice_KINDERROR</span><span class="plain">:</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LPCantScaleTwice</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LPCantScaleTwice</span><span class="plain">),</span>
|
||||
<span class="string">"this tries to specify the scaling for a kind of value whose "</span>
|
||||
<span class="string">"scaling is already established"</span><span class="plain">,</span>
|
||||
<span class="string">"which is impossible."</span><span class="plain">);</span>
|
||||
|
|
|
@ -199,14 +199,14 @@ chosen), but no problem message has been issued about this, or
|
|||
<span class="identifier">Problems::quote_wording_as_source</span><span class="plain">(1, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(2, </span><span class="identifier">K</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_text</span><span class="plain">(3, </span><span class="identifier">storage_name</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_EmptyKind2</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_EmptyKind2</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"I am unable to put any value into the %3 %1, which needs to be %2, "</span>
|
||||
<span class="string">"because the world does not contain %2."</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(2, </span><span class="identifier">K</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_EmptyKind</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_EmptyKind</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"I am unable to find %2 to use here, because the world does not "</span>
|
||||
<span class="string">"contain %2."</span><span class="plain">);</span>
|
||||
|
@ -228,7 +228,7 @@ chosen), but no problem message has been issued about this, or
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Wordings::nonempty</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Problems::quote_wording_as_source</span><span class="plain">(1, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(2, </span><span class="identifier">K</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"I am unable to create %1 with the kind of value '%2', "</span>
|
||||
<span class="string">"because this is a kind of value which is not allowed as "</span>
|
||||
|
@ -239,7 +239,7 @@ chosen), but no problem message has been issued about this, or
|
|||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(1, </span><span class="identifier">K</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"I am unable to create a value of the kind '%1' "</span>
|
||||
<span class="string">"because this is a kind of value which is not allowed as "</span>
|
||||
|
@ -263,7 +263,7 @@ chosen), but no problem message has been issued about this, or
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::quote_wording_as_source</span><span class="plain">(1, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"I am unable to start %1 off with any value, because the "</span>
|
||||
<span class="string">"instructions do not tell me what kind of value it should be "</span>
|
||||
|
@ -855,7 +855,7 @@ K, we have also seen its bases.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Kinds::RunTime::compile_structures is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function Kinds::RunTime::compile_structures is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP16_1"></a><b>§16.1. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Compile the runtime ID structure for this kind</span> <span class="cwebmacronumber">16.1</span>> =
|
||||
|
@ -967,7 +967,7 @@ K, we have also seen its bases.
|
|||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(2, </span><span class="identifier">K</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"While working on '%1', I needed to be able to make a default value "</span>
|
||||
<span class="string">"for the kind '%2', but there's no obvious way to make one."</span><span class="plain">);</span>
|
||||
|
@ -1057,7 +1057,7 @@ property values, table entries, list items) of pointer-value kinds:
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Kinds::RunTime::compile_heap_allocator is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function Kinds::RunTime::compile_heap_allocator is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP18_1"></a><b>§18.1. </b>By now, we know that we need at least <code class="display"><span class="extract">total_heap_allocation</span></code> bytes on the
|
||||
heap, but the initial heap size has to be a power of 2, so we compute the
|
||||
|
@ -1528,13 +1528,13 @@ each such kind, and needed at run-time.
|
|||
|
||||
<p class="endnote">The function Kinds::RunTime::emit appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function Kinds::RunTime::kind_declarations is used in 1/htc (<a href="1-htc.html#SP2_5">§2.5</a>).</p>
|
||||
<p class="endnote">The function Kinds::RunTime::kind_declarations is used in 1/htc (<a href="1-htc.html#SP2_4">§2.4</a>).</p>
|
||||
|
||||
<p class="endnote">The function Kinds::RunTime::compile_nnci is used in <a href="#SP18_1">§18.1</a>.</p>
|
||||
|
||||
<p class="endnote">The function Kinds::RunTime::compile_instance_counts is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
<p class="endnote">The function Kinds::RunTime::compile_instance_counts is used in 1/htc (<a href="1-htc.html#SP2_7">§2.7</a>).</p>
|
||||
|
||||
<p class="endnote">The function Kinds::RunTime::compile_data_type_support_routines is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function Kinds::RunTime::compile_data_type_support_routines is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP24_1"></a><b>§24.1. </b>A slightly bogus case first. If the source text declares a kind but never
|
||||
gives any enumerated values or literal patterns, then such values will never
|
||||
|
@ -2409,7 +2409,7 @@ Z-machine array space.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Kinds::RunTime::I7_Kind_Name_routine is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function Kinds::RunTime::I7_Kind_Name_routine is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP26"></a><b>§26. </b></p>
|
||||
|
||||
|
@ -2420,7 +2420,7 @@ Z-machine array space.
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Kinds::RunTime::target_VM_supports</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">VM_non_support_problem_issued</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
||||
<span class="identifier">VM_non_support_problem_issued</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_KindRequiresGlulx</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_KindRequiresGlulx</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(2, </span><span class="identifier">K</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
|
|
|
@ -92,7 +92,6 @@ a bitmap made up of the following modes:
|
|||
<span class="definitionkeyword">define</span> <span class="constant">BEGIN_DASH_MODE</span><span class="plain"> </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">s_dm</span><span class="plain"> = </span><span class="identifier">dash_mode</span><span class="plain">; </span><span class="identifier">kind</span><span class="plain"> **</span><span class="identifier">s_kvc</span><span class="plain"> = </span><span class="identifier">kind_of_var_to_create</span><span class="plain">; </span><span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">s_invl</span><span class="plain"> = </span><span class="identifier">Dash_ambiguity_list</span><span class="plain">;</span>
|
||||
<span class="definitionkeyword">define</span> <span class="identifier">DASH_MODE_ENTER</span><span class="plain">(</span><span class="identifier">mode</span><span class="plain">) </span><span class="identifier">dash_mode</span><span class="plain"> |= </span><span class="identifier">mode</span><span class="plain">;</span>
|
||||
<span class="definitionkeyword">define</span> <span class="identifier">DASH_MODE_CREATE</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">) </span><span class="identifier">kind_of_var_to_create</span><span class="plain"> = </span><span class="identifier">K</span><span class="plain">;</span>
|
||||
<span class="definitionkeyword">define</span> <span class="identifier">DASH_MODE_INVL</span><span class="plain">(</span><span class="identifier">invl</span><span class="plain">) </span><span class="identifier">Dash_ambiguity_list</span><span class="plain"> = </span><span class="identifier">invl</span><span class="plain">;</span>
|
||||
<span class="definitionkeyword">define</span> <span class="identifier">DASH_MODE_EXIT</span><span class="plain">(</span><span class="identifier">mode</span><span class="plain">) </span><span class="identifier">dash_mode</span><span class="plain"> &= (~</span><span class="identifier">mode</span><span class="plain">);</span>
|
||||
<span class="definitionkeyword">define</span> <span class="constant">END_DASH_MODE</span><span class="plain"> </span><span class="identifier">dash_mode</span><span class="plain"> = </span><span class="identifier">s_dm</span><span class="plain">; </span><span class="identifier">kind_of_var_to_create</span><span class="plain"> = </span><span class="identifier">s_kvc</span><span class="plain">; </span><span class="identifier">Dash_ambiguity_list</span><span class="plain"> = </span><span class="identifier">s_invl</span><span class="plain">;</span>
|
||||
<span class="definitionkeyword">define</span> <span class="identifier">TEST_DASH_MODE</span><span class="plain">(</span><span class="identifier">mode</span><span class="plain">) (</span><span class="identifier">dash_mode</span><span class="plain"> & </span><span class="identifier">mode</span><span class="plain">)</span>
|
||||
|
@ -368,7 +367,7 @@ to ensure that if we have
|
|||
<pre class="displaydefn">
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_count</span><span class="plain"> > </span><span class="identifier">backtraced_problem_count</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">p</span><span class="plain">) && (</span><span class="identifier">p</span><span class="plain">-</span><span class="element">>down</span><span class="plain">) &&</span>
|
||||
<span class="plain">(</span><span class="identifier">ParseTree::get_type</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">) == </span><span class="constant">INVOCATION_LIST_NT</span><span class="plain">)) {</span>
|
||||
<span class="plain">(</span><span class="identifier">ParseTree::get_type</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">) == </span><span class="identifier">INVOCATION_LIST_NT</span><span class="plain">)) {</span>
|
||||
<span class="identifier">it_is_not_worth_adding</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<<span class="cwebmacro">Backtrace what phrase definitions the type-checker was looking at</span> <span class="cwebmacronumber">10.1.1</span>><span class="plain">;</span>
|
||||
<span class="identifier">it_is_not_worth_adding</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
|
@ -427,7 +426,7 @@ from a text substitution.)
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="string">"*"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="string">"*"</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">to_show</span><span class="plain"> > 1)</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="string">"I was trying to match one of these phrases:"</span><span class="plain">);</span>
|
||||
<span class="reserved">else</span>
|
||||
|
@ -453,10 +452,10 @@ from a text substitution.)
|
|||
<span class="identifier">Problems::quote_number</span><span class="plain">(1, &</span><span class="identifier">shown</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_invocation</span><span class="plain">(2, </span><span class="identifier">inv</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">announce</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="string">"***"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="string">"***"</span><span class="plain">);</span>
|
||||
<span class="identifier">announce</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="string">"****"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="string">"****"</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">to_show</span><span class="plain"> > 1) </span><span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="string">"%1. %2"</span><span class="plain">);</span>
|
||||
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="string">"%2"</span><span class="plain">);</span>
|
||||
|
@ -482,7 +481,7 @@ from a text substitution.)
|
|||
<span class="identifier">itpt</span><span class="plain">-</span><span class="element">>already_described</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">any</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
||||
<span class="identifier">any</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="string">"*"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="string">"*"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="string">"I recognised:"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -502,7 +501,7 @@ from a text substitution.)
|
|||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::quote_wording_tinted_green</span><span class="plain">(1, </span><span class="identifier">itpt</span><span class="plain">-</span><span class="element">>problematic_text</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_spec</span><span class="plain">(2, </span><span class="identifier">itpt</span><span class="plain">-</span><span class="element">>as_parsed</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="string">"****"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="string">"****"</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">ParseTreeUsage::is_value</span><span class="plain">(</span><span class="identifier">itpt</span><span class="plain">-</span><span class="element">>as_parsed</span><span class="plain">)) {</span>
|
||||
<span class="identifier">kind</span><span class="plain"> *</span><span class="identifier">K</span><span class="plain"> = </span><span class="functiontext">Specifications::to_kind</span><span class="plain">(</span><span class="identifier">itpt</span><span class="plain">-</span><span class="element">>as_parsed</span><span class="plain">);</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">changed</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
|
@ -612,7 +611,7 @@ from a text substitution.)
|
|||
<span class="plain">}</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">unknowns</span><span class="plain"> > 0) {</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="string">"*"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="string">"*"</span><span class="plain">);</span>
|
||||
<span class="reserved">char</span><span class="plain"> *</span><span class="identifier">chunk</span><span class="plain"> = </span><span class="string">""</span><span class="plain">;</span>
|
||||
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">unknowns</span><span class="plain">) {</span>
|
||||
<span class="reserved">case</span><span class="plain"> 1: </span><span class="identifier">chunk</span><span class="plain"> = </span><span class="string">"The name '%1' doesn't yet exist."</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
|
||||
|
@ -649,7 +648,7 @@ from a text substitution.)
|
|||
<span class="plain">}</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">unknowns</span><span class="plain"> > 0) {</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="string">"*"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="string">"*"</span><span class="plain">);</span>
|
||||
<span class="reserved">char</span><span class="plain"> *</span><span class="identifier">chunk</span><span class="plain"> = </span><span class="string">""</span><span class="plain">;</span>
|
||||
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">unknowns</span><span class="plain">) {</span>
|
||||
<span class="reserved">case</span><span class="plain"> 1: </span><span class="identifier">chunk</span><span class="plain"> = </span><span class="string">"But I didn't recognise '%1'."</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
|
||||
|
@ -673,7 +672,7 @@ from a text substitution.)
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="string">"*"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="string">"*"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">" %PNote that Inform's kinds 'number' and 'real number' are not "</span>
|
||||
<span class="string">"interchangeable. A 'number' like 7 can be used where a 'real "</span>
|
||||
|
@ -950,7 +949,7 @@ extension, which made use of the old undocumented <code class="display"><span cl
|
|||
<span class="constant">THIS_IS_AN_ORDINARY_PROBLEM</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">-</span><span class="element">>down</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ValueAsStorageItem</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ValueAsStorageItem</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but '%2' is a value, not a place where a value is "</span>
|
||||
<span class="string">"stored. "</span>
|
||||
|
@ -976,7 +975,7 @@ extension, which made use of the old undocumented <code class="display"><span cl
|
|||
<span class="constant">THIS_IS_AN_ORDINARY_PROBLEM</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">-</span><span class="element">>down</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ValueAsTableReference</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ValueAsTableReference</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but '%2' is a value, not a reference to an entry "</span>
|
||||
<span class="string">"in a table."</span><span class="plain">);</span>
|
||||
|
@ -1002,7 +1001,7 @@ extension, which made use of the old undocumented <code class="display"><span cl
|
|||
<span class="identifier">Problems::quote_text</span><span class="plain">(3, </span><span class="string">"a kind of value"</span><span class="plain">);</span>
|
||||
<span class="reserved">else</span>
|
||||
<span class="functiontext">Problems::quote_kind_of</span><span class="plain">(3, </span><span class="identifier">p</span><span class="plain">-</span><span class="element">>down</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ExistingVarNotFound</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ExistingVarNotFound</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In the sentence %1, I was expecting that '%2' would be the "</span>
|
||||
<span class="string">"name of a temporary value, but it turned out to be %3."</span><span class="plain">);</span>
|
||||
|
@ -1026,7 +1025,7 @@ extension, which made use of the old undocumented <code class="display"><span cl
|
|||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">-</span><span class="element">>down</span><span class="plain">));</span>
|
||||
<span class="functiontext">Problems::quote_spec</span><span class="plain">(3, </span><span class="identifier">p</span><span class="plain">-</span><span class="element">>down</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_spec</span><span class="plain">(4, </span><span class="identifier">val</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NotExactValueWanted</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NotExactValueWanted</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In the sentence %1, I was expecting that '%2' would be the specific "</span>
|
||||
<span class="string">"value '%4'."</span><span class="plain">);</span>
|
||||
|
@ -1047,7 +1046,7 @@ extension, which made use of the old undocumented <code class="display"><span cl
|
|||
<span class="constant">THIS_IS_AN_ORDINARY_PROBLEM</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">-</span><span class="element">>down</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(...));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(...));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In the sentence %1, I was expecting that '%2' would be a phrase."</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
|
@ -1127,7 +1126,7 @@ species; and then to misuse that phrase.
|
|||
<span class="reserved">else</span>
|
||||
<span class="functiontext">Problems::quote_kind_of</span><span class="plain">(3, </span><span class="identifier">p</span><span class="plain">-</span><span class="element">>down</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(4, </span><span class="identifier">K</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_KindOfVariable</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_KindOfVariable</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In the sentence %1, I was expecting that '%2' would be a new "</span>
|
||||
<span class="string">"variable name (to hold %4), but it turned out to be %3."</span><span class="plain">);</span>
|
||||
|
@ -1198,10 +1197,10 @@ in (4I) either directly or via (4A). For everything else, it's (4S) for us.
|
|||
<span class="identifier">outcome</span><span class="plain"> = </span><span class="functiontext">Dash::typecheck_recursive</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">-</span><span class="element">>down</span><span class="plain">, </span><span class="identifier">context</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">);</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="constant">INVOCATION_LIST_NT</span><span class="plain">: </span><span class="reserved">case</span><span class="plain"> </span><span class="constant">INVOCATION_LIST_SAY_NT</span><span class="plain">: </span><span class="reserved">case</span><span class="plain"> </span><span class="identifier">AMBIGUITY_NT</span><span class="plain">:</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">INVOCATION_LIST_NT</span><span class="plain">: </span><span class="reserved">case</span><span class="plain"> </span><span class="constant">INVOCATION_LIST_SAY_NT</span><span class="plain">: </span><span class="reserved">case</span><span class="plain"> </span><span class="identifier">AMBIGUITY_NT</span><span class="plain">:</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">p</span><span class="plain">-</span><span class="element">>down</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><<span class="cwebmacro">Unknown found text occurs as a command</span> <span class="cwebmacronumber">11.9.1.3</span>><span class="plain">;</span>
|
||||
<span class="constant">BEGIN_DASH_MODE</span><span class="plain">;</span>
|
||||
<span class="identifier">DASH_MODE_INVL</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">);</span>
|
||||
<span class="identifier">Dash_ambiguity_list</span><span class="plain"> = </span><span class="identifier">p</span><span class="plain">;</span>
|
||||
<span class="identifier">outcome</span><span class="plain"> = </span><span class="functiontext">Dash::typecheck_recursive</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">-</span><span class="element">>down</span><span class="plain">, </span><span class="identifier">context</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">);</span>
|
||||
<span class="constant">END_DASH_MODE</span><span class="plain">;</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
|
@ -1490,7 +1489,7 @@ no way safely to adjudicate that at run-time.
|
|||
<pre class="displaydefn">
|
||||
<span class="constant">THIS_IS_AN_ORDINARY_PROBLEM</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_UnequalValueAmbiguity</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_UnequalValueAmbiguity</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The phrase %1 is ambiguous in a way that I can't disentangle. "</span>
|
||||
<span class="string">"It has more than one plausible interpretation, such that it "</span>
|
||||
|
@ -1671,7 +1670,7 @@ Room" is a number, because the kind of the property "carrying capacity" is
|
|||
<span class="identifier">ParseTree::set_kind_resulting</span><span class="plain">(</span><span class="identifier">inv</span><span class="plain">, </span><span class="functiontext">Properties::Valued::kind</span><span class="plain">(</span><span class="identifier">prn</span><span class="plain">));</span>
|
||||
<span class="reserved">else</span><span class="plain"> {</span>
|
||||
<span class="constant">THIS_IS_AN_INTERESTING_PROBLEM</span><span class="plain"> {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TotalEitherOr</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TotalEitherOr</span><span class="plain">),</span>
|
||||
<span class="string">"this seems to be an attempt to total up an either/or property"</span><span class="plain">,</span>
|
||||
<span class="string">"and by definition such a property has nothing to total."</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -1698,7 +1697,7 @@ with it.)
|
|||
<span class="identifier">LOG_DASH</span><span class="plain">(</span><span class="string">"(4I.a.1) failed as nonproperty"</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Kinds::get_construct</span><span class="plain">(</span><span class="identifier">ParseTree::get_kind_of_value</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">)) == </span><span class="identifier">CON_table_column</span><span class="plain">) {</span>
|
||||
<span class="constant">THIS_IS_AN_INTERESTING_PROBLEM</span><span class="plain"> {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TotalTableColumn</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TotalTableColumn</span><span class="plain">),</span>
|
||||
<span class="string">"this seems to be an attempt to total up the column of a table"</span><span class="plain">,</span>
|
||||
<span class="string">"whereas it's only legal to use 'total' for properties."</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -1797,7 +1796,7 @@ L and R are more definite.
|
|||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">REMAINDER_OPERATION</span><span class="plain">: </span><span class="identifier">Problems::quote_text</span><span class="plain">(6, </span><span class="string">"dividing"</span><span class="plain">); </span><span class="identifier">Problems::quote_text</span><span class="plain">(7, </span><span class="string">"by"</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">APPROXIMATION_OPERATION</span><span class="plain">: </span><span class="identifier">Problems::quote_text</span><span class="plain">(6, </span><span class="string">"rounding"</span><span class="plain">); </span><span class="identifier">Problems::quote_text</span><span class="plain">(7, </span><span class="string">"to"</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadArithmetic</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadArithmetic</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but that seems to involve %6 %4 ('%2') %7 %5 ('%3'), "</span>
|
||||
<span class="string">"which is not good arithmetic."</span><span class="plain">);</span>
|
||||
|
@ -1888,7 +1887,7 @@ instance, if <code class="display"><span class="extract">inv</span></code> is an
|
|||
<span class="reserved">if</span><span class="plain"> ((</span><span class="functiontext">Routines::Compile::disallow_let</span><span class="plain">()) && (</span><span class="functiontext">Phrases::TypeData::is_a_let_assignment</span><span class="plain">(</span><span class="identifier">ph</span><span class="plain">))) {</span>
|
||||
<span class="constant">THIS_IS_AN_INTERESTING_PROBLEM</span><span class="plain"> {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LetCreatedInIf</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LetCreatedInIf</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but when a temporary value is created "</span>
|
||||
<span class="string">"inside an 'if ..., ...' or an 'otherwise ...', it only "</span>
|
||||
|
@ -2013,7 +2012,7 @@ in <code class="display"><span class="extract">ith_token</span></code>, an invoc
|
|||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(3, </span><span class="identifier">ikind</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NameOfKindMismatch</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NameOfKindMismatch</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but although '%2' is the name of a kind, "</span>
|
||||
<span class="string">"it isn't the name of a kind of %3, which this phrase needs."</span><span class="plain">);</span>
|
||||
|
@ -2026,7 +2025,7 @@ in <code class="display"><span class="extract">ith_token</span></code>, an invoc
|
|||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(3, </span><span class="identifier">ikind</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadLocalKOV</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadLocalKOV</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but although '%2' is the name of a kind, "</span>
|
||||
<span class="string">"it isn't a definite kind and is instead a general "</span>
|
||||
|
@ -2044,7 +2043,7 @@ in <code class="display"><span class="extract">ith_token</span></code>, an invoc
|
|||
<span class="constant">THIS_IS_AN_ORDINARY_PROBLEM</span><span class="plain"> {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">ith_token</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NameOfKindIsnt</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NameOfKindIsnt</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but although '%2' does have a meaning, "</span>
|
||||
<span class="string">"it isn't the name of a kind, which this phrase needs."</span><span class="plain">);</span>
|
||||
|
@ -2154,7 +2153,7 @@ against a definition like:
|
|||
<span class="constant">THIS_IS_A_GROSSER_THAN_GROSS_PROBLEM</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In the line %1, you seem to be using '%2' to produce a value, but "</span>
|
||||
<span class="string">"it's not clear what kind of value this will be. It seems to use "</span>
|
||||
|
@ -2400,7 +2399,7 @@ this case in the type-checker is never exercised.
|
|||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">target</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(3, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">new_value</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">)); </span> <span class="comment">the parser seems not to allow these</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">)); </span> <span class="comment">the parser seems not to allow these</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, asking to change the object '%2'. This would "</span>
|
||||
<span class="string">"make sense if '%3' were an either/or property like 'open' "</span>
|
||||
|
@ -2415,7 +2414,7 @@ this case in the type-checker is never exercised.
|
|||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">target</span><span class="plain">));</span>
|
||||
<span class="functiontext">Problems::quote_property</span><span class="plain">(3, </span><span class="identifier">prn</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but '%2' is not allowed to have the property '%3'."</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
|
@ -2454,7 +2453,7 @@ literal can mean are too generous.)
|
|||
<span class="identifier">kind_found</span><span class="plain"> = </span><span class="functiontext">Specifications::to_kind</span><span class="plain">(</span><span class="identifier">new_value</span><span class="plain">);</span>
|
||||
|
||||
<span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">new_invl</span><span class="plain"> = </span><span class="identifier">new_value</span><span class="plain">-</span><span class="element">>down</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ParseTree::is</span><span class="plain">(</span><span class="identifier">new_invl</span><span class="plain">, </span><span class="constant">INVOCATION_LIST_NT</span><span class="plain">)) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ParseTree::is</span><span class="plain">(</span><span class="identifier">new_invl</span><span class="plain">, </span><span class="identifier">INVOCATION_LIST_NT</span><span class="plain">)) {</span>
|
||||
<span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">new_inv</span><span class="plain">;</span>
|
||||
<span class="identifier">LOOP_THROUGH_ALTERNATIVES</span><span class="plain">(</span><span class="identifier">new_inv</span><span class="plain">, </span><span class="identifier">new_invl</span><span class="plain">)</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Dash::test_flag</span><span class="plain">(</span><span class="identifier">new_inv</span><span class="plain">, </span><span class="constant">PASSED_DASHFLAG</span><span class="plain">)) </span><span class="reserved">break</span><span class="plain">;</span>
|
||||
|
@ -2471,7 +2470,7 @@ literal can mean are too generous.)
|
|||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(3, </span><span class="functiontext">Specifications::to_kind</span><span class="plain">(</span><span class="identifier">target</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(4, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">new_value</span><span class="plain">));</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(5, </span><span class="functiontext">Specifications::to_kind</span><span class="plain">(</span><span class="identifier">new_value</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ChangeToWrongValue</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ChangeToWrongValue</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but '%2' is supposed to be "</span>
|
||||
<span class="string">"%6 %3, so it cannot be set equal to %4, whose kind is %5."</span><span class="plain">);</span>
|
||||
|
@ -2624,7 +2623,7 @@ loops, or other control structures; for instance,
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Frames::Blocks::inside_a_loop_body</span><span class="plain">() == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
||||
<span class="constant">THIS_IS_AN_INTERESTING_PROBLEM</span><span class="plain"> {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantUseOutsideLoop</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantUseOutsideLoop</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"%1 makes sense only inside a 'while' or 'repeat' loop."</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
|
@ -2638,7 +2637,7 @@ loops, or other control structures; for instance,
|
|||
<span class="constant">THIS_IS_AN_INTERESTING_PROBLEM</span><span class="plain"> {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wide_text</span><span class="plain">(2, </span><span class="identifier">required</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantUseOutsideStructure</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantUseOutsideStructure</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"%1 makes sense only inside a '%2' block."</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
|
@ -2664,7 +2663,7 @@ loops, or other control structures; for instance,
|
|||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">ph</span><span class="plain">) && (</span><span class="identifier">ph</span><span class="plain">-</span><span class="element">>type_data.now_deprecated</span><span class="plain">)) {</span>
|
||||
<span class="constant">THIS_IS_AN_INTERESTING_PROBLEM</span><span class="plain"> {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">)); </span> <span class="comment">too moving a target to test</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">)); </span> <span class="comment">too moving a target to test</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"'%1' uses a phrase which is now deprecated: you should rephrase "</span>
|
||||
<span class="string">"to avoid the need for it. I'd normally allow this, but you have "</span>
|
||||
|
@ -2787,7 +2786,7 @@ and allowed only in phrases using the <code class="display"><span class="extract
|
|||
<span class="plain">(</span><span class="identifier">kind_needed</span><span class="plain">) &&</span>
|
||||
<span class="plain">(!(</span><span class="identifier">ParseTree::is</span><span class="plain">(</span><span class="identifier">context</span><span class="plain">, </span><span class="constant">LVALUE_TR_CONTEXT_NT</span><span class="plain">)))) {</span>
|
||||
<span class="constant">THIS_IS_A_GROSSER_THAN_GROSS_PROBLEM</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_InexplicitTableEntryAsValue</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_InexplicitTableEntryAsValue</span><span class="plain">),</span>
|
||||
<span class="string">"this form of table entry can only be used in certain special phrases"</span><span class="plain">,</span>
|
||||
<span class="string">"because it doesn't explicitly refer to a single value. (You can see "</span>
|
||||
<span class="string">"which phrases in the Phrasebook index: it's allowed wherever a 'table "</span>
|
||||
|
@ -2815,14 +2814,14 @@ and allowed only in phrases using the <code class="display"><span class="extract
|
|||
<span class="identifier">kind</span><span class="plain"> *</span><span class="identifier">K2</span><span class="plain"> = </span><span class="functiontext">Specifications::to_kind</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">-</span><span class="element">>down</span><span class="plain">-</span><span class="element">>next</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Kinds::unary_construction_material</span><span class="plain">(</span><span class="identifier">K1</span><span class="plain">) == </span><span class="identifier">NULL</span><span class="plain">) {</span>
|
||||
<span class="constant">THIS_IS_A_GROSSER_THAN_GROSS_PROBLEM</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_EntryOfNonList</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_EntryOfNonList</span><span class="plain">),</span>
|
||||
<span class="string">"that doesn't make sense to me as a list entry"</span><span class="plain">,</span>
|
||||
<span class="string">"since the entry is taken from something which isn't a list."</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">NEVER_MATCH</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Kinds::Compare::eq</span><span class="plain">(</span><span class="identifier">K2</span><span class="plain">, </span><span class="identifier">K_number</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
||||
<span class="constant">THIS_IS_A_GROSSER_THAN_GROSS_PROBLEM</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NonNumericListEntry</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NonNumericListEntry</span><span class="plain">),</span>
|
||||
<span class="string">"that doesn't make sense to me as a list entry"</span><span class="plain">,</span>
|
||||
<span class="string">"because the indication of which entry is not a number. "</span>
|
||||
<span class="string">"For instance, 'entry 3 of L' is allowed, but not 'entry "</span>
|
||||
|
@ -2892,7 +2891,7 @@ a property when recovering from other problems.
|
|||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(3, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">the_property</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In the sentence %1, it looks as if you intend '%2' to be a property "</span>
|
||||
<span class="string">"of something, but there is no such property as '%3'."</span><span class="plain">);</span>
|
||||
|
@ -2913,7 +2912,7 @@ a property when recovering from other problems.
|
|||
<span class="constant">THIS_IS_A_GROSSER_THAN_GROSS_PROBLEM</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_EitherOrAsValue</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_EitherOrAsValue</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In the sentence %1, it looks as if you intend '%2' to be the value "</span>
|
||||
<span class="string">"of a property of something, but that property has no value: it's "</span>
|
||||
|
@ -2943,7 +2942,7 @@ a property when recovering from other problems.
|
|||
<span class="identifier">Problems::quote_wording</span><span class="plain">(3, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">the_owner</span><span class="plain">));</span>
|
||||
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">owner_quoted</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Owner tree is $T\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">the_owner</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_PropertyOfKind2</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_PropertyOfKind2</span><span class="plain">));</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">owner_quoted</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">p</span><span class="plain">)))</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
|
@ -2989,7 +2988,7 @@ a property when recovering from other problems.
|
|||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">prn</span><span class="plain">-</span><span class="element">>name</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_subject</span><span class="plain">(3, </span><span class="identifier">owning_subject</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LookedUpForbiddenProperty</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LookedUpForbiddenProperty</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In the sentence %1, you seem to be looking up the '%2' property, "</span>
|
||||
<span class="string">"but '%3' is not allowed to have that property. "</span><span class="plain">);</span>
|
||||
|
@ -3021,7 +3020,7 @@ a property when recovering from other problems.
|
|||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">Kinds::get_construct</span><span class="plain">(</span><span class="identifier">col_kind</span><span class="plain">) != </span><span class="identifier">CON_table_column</span><span class="plain">) ||</span>
|
||||
<span class="plain">(</span><span class="identifier">col_contents_kind</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)) {</span>
|
||||
<span class="constant">THIS_IS_A_GROSSER_THAN_GROSS_PROBLEM</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">),</span>
|
||||
<span class="string">"that doesn't make sense to me as a table entry"</span><span class="plain">,</span>
|
||||
<span class="string">"since the entry is taken from something which isn't a table."</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">NEVER_MATCH</span><span class="plain">;</span>
|
||||
|
@ -3031,7 +3030,7 @@ a property when recovering from other problems.
|
|||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(2, </span><span class="identifier">col_contents_kind</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(3, </span><span class="identifier">key_kind</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TableCorrFruitless</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TableCorrFruitless</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In the sentence %1, you seem to be looking up a corresponding "</span>
|
||||
<span class="string">"entry in a table: but it's fruitless to go looking for %3 "</span>
|
||||
|
@ -3055,13 +3054,13 @@ a property when recovering from other problems.
|
|||
<span class="constant">THIS_IS_A_GROSS_PROBLEM</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (<</span><span class="identifier">structural</span><span class="plain">-</span><span class="reserved">phrase</span><span class="plain">-</span><span class="identifier">problem</span><span class="plain">-</span><span class="identifier">diagnosis</span><span class="plain">>(</span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">)) == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Wordings::mismatched_brackets</span><span class="plain">(</span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">))) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_UnpairedBrackets</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_UnpairedBrackets</span><span class="plain">),</span>
|
||||
<span class="string">"this is a phrase which I don't recognise"</span><span class="plain">,</span>
|
||||
<span class="string">"perhaps because it uses brackets '(' and ')' or braces '{' and '}' "</span>
|
||||
<span class="string">"in a way that doesn't make sense to me. Each open '(' or '{' has "</span>
|
||||
<span class="string">"to have a matching ')' or '}'."</span><span class="plain">);</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_UnknownPhrase</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_UnknownPhrase</span><span class="plain">),</span>
|
||||
<span class="string">"this is a phrase which I don't recognise"</span><span class="plain">,</span>
|
||||
<span class="string">"possibly because it is one you meant to define but never got round "</span>
|
||||
<span class="string">"to, or because the wording is wrong (see the Phrasebook section of "</span>
|
||||
|
@ -3096,7 +3095,7 @@ up on misuse of structural phrases.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_WrongContinue</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_WrongContinue</span><span class="plain">),</span>
|
||||
<span class="string">"this is a phrase which I don't recognise"</span><span class="plain">,</span>
|
||||
<span class="string">"and which isn't defined. Perhaps you wanted the phrase which "</span>
|
||||
<span class="string">"would skip to the next repetition of a loop, since that's "</span>
|
||||
|
@ -3304,7 +3303,7 @@ of a relation.
|
|||
<span class="constant">THIS_IS_AN_ORDINARY_PROBLEM</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">initial_value</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The phrase %1 tries to use 'let' to give a temporary name to a value, "</span>
|
||||
<span class="string">"but the value ('%2') is one that I can't understand."</span><span class="plain">);</span>
|
||||
|
@ -3333,7 +3332,7 @@ relevant code to issue a better problem message if it can.
|
|||
<span class="functiontext">Lists::check_one</span><span class="plain">(</span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">initial_value</span><span class="plain">));</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">pc</span><span class="plain"> == </span><span class="identifier">problem_count</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantLetEmptyList</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantLetEmptyList</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The phrase %1 tries to use 'let' to give a temporary name to the "</span>
|
||||
<span class="string">"empty list '{ }', but because it's empty, I can't tell what kind of "</span>
|
||||
|
@ -3359,7 +3358,7 @@ relevant code to issue a better problem message if it can.
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="constant">THIS_IS_AN_ORDINARY_PROBLEM</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">),</span>
|
||||
<span class="string">"this isn't a definite kind"</span><span class="plain">,</span>
|
||||
<span class="string">"and is instead a general description which might apply to many "</span>
|
||||
<span class="string">"different kinds, so I can't see how to create this named value. "</span>
|
||||
|
@ -3532,7 +3531,7 @@ intended and to report the problem with that one.
|
|||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">PW</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(3, </span><span class="identifier">K</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(4, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadIntermediateKind</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadIntermediateKind</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In %1, the phrase '%2' doesn't seem to fit: I was hoping it would "</span>
|
||||
<span class="string">"be %4, but in fact it's %3."</span><span class="plain">);</span>
|
||||
|
@ -3549,7 +3548,7 @@ intended and to report the problem with that one.
|
|||
<span class="constant">END_DASH_MODE</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_count</span><span class="plain"> == 0)</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">),</span>
|
||||
<span class="string">"the ingredients in this phrase do not fit it"</span><span class="plain">,</span>
|
||||
<span class="string">"and I am confused enough by this that I can't give a very helpful "</span>
|
||||
<span class="string">"problem message. Sorry about that."</span><span class="plain">);</span>
|
||||
|
@ -3566,7 +3565,7 @@ intended and to report the problem with that one.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_AllInvsFailed</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_AllInvsFailed</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, which I tried to match against several possible phrase "</span>
|
||||
|
@ -3597,7 +3596,7 @@ unrecognised.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::sentence_in_detail_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_SayAList</span><span class="plain">), </span><span class="identifier">W</span><span class="plain">,</span>
|
||||
<span class="identifier">Problems::Issue::sentence_in_detail_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_SayAList</span><span class="plain">), </span><span class="identifier">W</span><span class="plain">,</span>
|
||||
<span class="string">"this asked to say 'a list of...'"</span><span class="plain">,</span>
|
||||
<span class="string">"which I read as being a general description applying to some "</span>
|
||||
<span class="string">"lists and not others, so it's not something which can be said. "</span>
|
||||
|
@ -3615,7 +3614,7 @@ unrecognised.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::sentence_in_detail_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">), </span><span class="identifier">W</span><span class="plain">,</span>
|
||||
<span class="identifier">Problems::Issue::sentence_in_detail_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">), </span><span class="identifier">W</span><span class="plain">,</span>
|
||||
<span class="string">"this asked to say something which I do not recognise"</span><span class="plain">,</span>
|
||||
<span class="string">"either as a value or as one of the possible text substitutions."</span><span class="plain">);</span>
|
||||
</pre>
|
||||
|
@ -3792,7 +3791,7 @@ us with the air of having just made a great discovery; well, you can't have
|
|||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">));</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(3, </span><span class="identifier">kind_expected</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NothingForSomething</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NothingForSomething</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but '%2' is literally no thing, and it consequently does "</span>
|
||||
<span class="string">"not count as %3."</span><span class="plain">);</span>
|
||||
|
@ -3879,7 +3878,7 @@ helpful about what exactly is wrong.
|
|||
<span class="functiontext">Dash::clear_validation_case</span><span class="plain">();</span>
|
||||
<span class="plain"><</span><span class="identifier">action</span><span class="plain">-</span><span class="identifier">pattern</span><span class="plain">>(</span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">));</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Dash::get_validation_case</span><span class="plain">(&</span><span class="identifier">spec</span><span class="plain">, &</span><span class="identifier">K</span><span class="plain">, &</span><span class="identifier">K2</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_UnknownTryAction1</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_UnknownTryAction1</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(3, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">spec</span><span class="plain">));</span>
|
||||
|
@ -3892,7 +3891,7 @@ helpful about what exactly is wrong.
|
|||
<span class="string">"made sense, but it turned out to be %5."</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_UnknownTryAction2</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_UnknownTryAction2</span><span class="plain">),</span>
|
||||
<span class="string">"this is not an action I recognise"</span><span class="plain">,</span>
|
||||
<span class="string">"or else is malformed in a way I can't see how to sort out."</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -3931,7 +3930,7 @@ substitution or not.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_SayComma</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_SayComma</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In the line %1, I was expecting that '%2' would be something to "</span>
|
||||
<span class="string">"'say', but unexpectedly it began with a comma. The usual form is "</span>
|
||||
|
@ -3950,7 +3949,7 @@ substitution or not.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_SayUnicode</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_SayUnicode</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In the line %1, I was expecting that '%2' would be something to "</span>
|
||||
<span class="string">"'say', but it didn't look like any form of 'say' that I know. "</span>
|
||||
|
@ -3976,7 +3975,7 @@ substitution or not.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_SayElseMisplaced</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_SayElseMisplaced</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In the line %1, I was expecting that '%2' would be something to "</span>
|
||||
<span class="string">"'say', but unexpectedly I found an 'otherwise' (or 'else'). That "</span>
|
||||
|
@ -3995,7 +3994,7 @@ substitution or not.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_SayUnknownCondition</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_SayUnknownCondition</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In the line %1, I was expecting that '%2' would be something to "</span>
|
||||
<span class="string">"'say', but it didn't look like any form of 'say' that I know. So "</span>
|
||||
|
@ -4028,7 +4027,7 @@ substitution or not.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_SayUnknown</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_SayUnknown</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In the line %1, I was expecting that '%2' would be something to "</span>
|
||||
<span class="string">"'say', but it didn't look like any form of 'say' that I know. So "</span>
|
||||
|
@ -4075,7 +4074,7 @@ the clauses, summing up their status in turn:
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CompoundConditionFailed</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CompoundConditionFailed</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In the sentence %1, I was expecting that '%2' would be a condition. "</span>
|
||||
<span class="string">"It didn't make sense as one long phrase, but because it was divided up by "</span>
|
||||
|
@ -4142,7 +4141,7 @@ common misunderstanding.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NumberOfTurns</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NumberOfTurns</span><span class="plain">));</span>
|
||||
<<span class="cwebmacro">Issue the generic unknown wording message</span> <span class="cwebmacronumber">21.1.1</span>><span class="plain">;</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"%PPerhaps by 'turns' you meant the number of turns of play to date? "</span>
|
||||
|
@ -4160,7 +4159,7 @@ common misunderstanding.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_OutOfPlay</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_OutOfPlay</span><span class="plain">));</span>
|
||||
<<span class="cwebmacro">Issue the generic unknown wording message</span> <span class="cwebmacronumber">21.1.1</span>><span class="plain">;</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"%PPeople sometimes say that things or people removed from all "</span>
|
||||
|
@ -4182,7 +4181,7 @@ common misunderstanding.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_OptionlessOption</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_OptionlessOption</span><span class="plain">));</span>
|
||||
<<span class="cwebmacro">Issue the generic unknown wording message</span> <span class="cwebmacronumber">21.1.1</span>><span class="plain">;</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"%PThe names of use options, on the rare occasions when they "</span>
|
||||
|
@ -4203,7 +4202,7 @@ common misunderstanding.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ActivityOf</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ActivityOf</span><span class="plain">));</span>
|
||||
<<span class="cwebmacro">Issue the generic unknown wording message</span> <span class="cwebmacronumber">21.1.1</span>><span class="plain">;</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"%PActivity names rarely end with 'of': for instance, when we talk "</span>
|
||||
|
@ -4222,7 +4221,7 @@ common misunderstanding.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_MidTextUnicode</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_MidTextUnicode</span><span class="plain">));</span>
|
||||
<<span class="cwebmacro">Issue the generic unknown wording message</span> <span class="cwebmacronumber">21.1.1</span>><span class="plain">;</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"%PMaybe you intended this to produce a Unicode character? "</span>
|
||||
|
@ -4246,7 +4245,7 @@ common misunderstanding.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_UnknownCondition</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_UnknownCondition</span><span class="plain">));</span>
|
||||
<<span class="cwebmacro">Issue the generic unknown wording message</span> <span class="cwebmacronumber">21.1.1</span>><span class="plain">;</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"%PNames which end in 'condition' often represent the current "</span>
|
||||
|
@ -4269,7 +4268,7 @@ common misunderstanding.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ActivityWithFor</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ActivityWithFor</span><span class="plain">));</span>
|
||||
<<span class="cwebmacro">Issue the generic unknown wording message</span> <span class="cwebmacronumber">21.1.1</span>><span class="plain">;</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"%PWere you by any chance meaning to refer to an activity by name, "</span>
|
||||
|
@ -4288,7 +4287,7 @@ common misunderstanding.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_Unknown</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_Unknown</span><span class="plain">));</span>
|
||||
<<span class="cwebmacro">Issue the generic unknown wording message</span> <span class="cwebmacronumber">21.1.1</span>><span class="plain">;</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
</pre>
|
||||
|
@ -4519,7 +4518,7 @@ action value, which is a specific action.
|
|||
<span class="constant">THIS_IS_A_GROSSER_THAN_GROSS_PROBLEM</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ActionNotSpecific</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ActionNotSpecific</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but '%2' is too vague to describe a specific action. "</span>
|
||||
<span class="string">"%PIt has to be an exact instruction about what is being done, and "</span>
|
||||
|
@ -4532,7 +4531,7 @@ action value, which is a specific action.
|
|||
<span class="constant">THIS_IS_A_GROSSER_THAN_GROSS_PROBLEM</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ActionTooSpecific</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ActionTooSpecific</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but '%2' imposes too many restrictions on the "</span>
|
||||
<span class="string">"action to be carried out, by saying something about the "</span>
|
||||
|
@ -4657,7 +4656,7 @@ it to a constant value, using the "description of..." constructor.
|
|||
<span class="constant">THIS_IS_AN_INTERESTING_PROBLEM</span><span class="plain"> {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadQuantifierInDescription</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadQuantifierInDescription</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In %1 you wrote the description '%2' in the context of a value, "</span>
|
||||
<span class="string">"but descriptions used that way are not allowed to talk about "</span>
|
||||
|
@ -4691,7 +4690,7 @@ defined a phrase for only one case:
|
|||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">));</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(3, </span><span class="identifier">K</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(4, </span><span class="identifier">domain</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In the line %1, the text '%2' seems to be a description of %3, but "</span>
|
||||
<span class="string">"a description of %4 was required."</span><span class="plain">);</span>
|
||||
|
@ -4720,7 +4719,7 @@ any universal quantifier ("all", etc.) is removed.
|
|||
<span class="constant">THIS_IS_AN_ORDINARY_PROBLEM</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In the line %1, the text '%2' is given where a description of a collection "</span>
|
||||
<span class="string">"of things or values was required. For instance, 'rooms which contain "</span>
|
||||
|
@ -4754,7 +4753,7 @@ have made an understandable confusion.
|
|||
<span class="constant">THIS_IS_AN_ORDINARY_PROBLEM</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">)); </span> <span class="comment">screened out at definition time</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">)); </span> <span class="comment">screened out at definition time</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In the line %1, '%2' ought to be a value, but isn't - there must be "</span>
|
||||
<span class="string">"something fishy about the way it was created. %P"</span>
|
||||
|
@ -4870,14 +4869,14 @@ it says the value has the wrong kind.
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ParseTree::is</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">, </span><span class="constant">LOCAL_VARIABLE_NT</span><span class="plain">)) {</span>
|
||||
<span class="reserved">local_variable</span><span class="plain"> *</span><span class="identifier">lvar</span><span class="plain"> = </span><span class="identifier">ParseTree::get_constant_local_variable</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(4, </span><span class="functiontext">LocalVariables::kind</span><span class="plain">(</span><span class="identifier">lvar</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LocalMismatch</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LocalMismatch</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but '%2' is a temporary name for %4 (created by 'let' "</span>
|
||||
<span class="string">"or 'repeat'), whereas I was expecting to find %3 there."</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Kinds::Compare::eq</span><span class="plain">(</span><span class="identifier">kind_expected</span><span class="plain">, </span><span class="identifier">K_sayable_value</span><span class="plain">)) {</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(4, </span><span class="functiontext">Specifications::to_kind</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_AllSayInvsFailed</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_AllSayInvsFailed</span><span class="plain">));</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Wordings::empty</span><span class="plain">(</span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">)))</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but that only works for sayable values, that is, "</span>
|
||||
|
@ -4893,7 +4892,7 @@ it says the value has the wrong kind.
|
|||
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Found: $u; Expected: $u\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="functiontext">Specifications::to_kind</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">),</span>
|
||||
<span class="identifier">kind_expected</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(4, </span><span class="functiontext">Specifications::to_kind</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TypeMismatch</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TypeMismatch</span><span class="plain">));</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Wordings::empty</span><span class="plain">(</span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">)))</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but that has the wrong kind of value: %4 rather than %3."</span><span class="plain">);</span>
|
||||
|
@ -4951,7 +4950,7 @@ same species as well.
|
|||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">));</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(3, </span><span class="identifier">kind_expected</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind_of</span><span class="plain">(4, </span><span class="identifier">p</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_GenericDescription</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_GenericDescription</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but '%2' is used in a context where I'd expect to see "</span>
|
||||
<span class="string">"a (single) specific example of %3. Although what you wrote did "</span>
|
||||
|
@ -4965,7 +4964,7 @@ same species as well.
|
|||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">));</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(3, </span><span class="identifier">kind_expected</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind_of</span><span class="plain">(4, </span><span class="identifier">p</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LiteralDescriptionAsValue</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LiteralDescriptionAsValue</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but '%2' is used in a context where I'd expect to see "</span>
|
||||
<span class="string">"a (single) specific example of %3, not a description."</span><span class="plain">);</span>
|
||||
|
@ -5002,7 +5001,7 @@ resorts when it has nothing more specific to say.
|
|||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">));</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(3, </span><span class="identifier">kind_expected</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind_of</span><span class="plain">(4, </span><span class="identifier">p</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">)); </span> <span class="comment">at any rate I haven't seen it lately</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">)); </span> <span class="comment">at any rate I haven't seen it lately</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but '%2' seems to be %4, whereas I was expecting to "</span>
|
||||
<span class="string">"find %3 there."</span><span class="plain">);</span>
|
||||
|
|
|
@ -1200,7 +1200,7 @@ in several contexts by using a tilde: <code class="display"><span class="extract
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">parity</span><span class="plain"> == 1) {</span>
|
||||
<span class="functiontext">Emit::holster</span><span class="plain">(</span><span class="identifier">VH</span><span class="plain">, </span><span class="functiontext">Properties::iname</span><span class="plain">(</span><span class="identifier">prn_to_eval</span><span class="plain">));</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">Untestable</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">Untestable</span><span class="plain">),</span>
|
||||
<span class="string">"this refers to an either-or property with a negative "</span>
|
||||
<span class="string">"that I can't unravel'"</span><span class="plain">,</span>
|
||||
<span class="string">"which normally never happens. (Are you using 'change' "</span>
|
||||
|
|
|
@ -83,7 +83,7 @@ possible values these are.)
|
|||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(2, </span><span class="identifier">common_kind</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(3, </span><span class="identifier">CKW</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(4, </span><span class="identifier">NKW</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_MixedExistingConstants</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_MixedExistingConstants</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In %1, one of the values you supply as a possibility is '%3', "</span>
|
||||
<span class="string">"but this already has a meaning (as %2). This might be okay if "</span>
|
||||
|
@ -92,7 +92,7 @@ possible values these are.)
|
|||
<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">prn</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(2, </span><span class="identifier">common_kind</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">)); </span> <span class="comment">because it won't parse</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">)); </span> <span class="comment">because it won't parse</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In %1, every value you supply as a possibility is %2. "</span>
|
||||
<span class="string">"That would be okay if it were a property which is a condition "</span>
|
||||
|
|
|
@ -70,7 +70,7 @@ and <code class="display"><span class="extract">stored_in_negation</span></code>
|
|||
<pre class="display">
|
||||
<span class="reserved">property</span><span class="plain"> *</span><span class="functiontext">Properties::EitherOr::obtain</span><span class="plain">(</span><span class="identifier">wording</span><span class="plain"> </span><span class="identifier">W</span><span class="plain">, </span><span class="reserved">inference_subject</span><span class="plain"> *</span><span class="identifier">infs</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (<</span><span class="identifier">k</span><span class="plain">-</span><span class="identifier">kind</span><span class="plain">>(</span><span class="identifier">W</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_KindAdjectiveClash</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_KindAdjectiveClash</span><span class="plain">),</span>
|
||||
<span class="string">"this tries to create a new either/or adjective with the same name "</span>
|
||||
<span class="string">"as an existing kind"</span><span class="plain">,</span>
|
||||
<span class="string">"which isn't allowed. For example, 'A hopper can be a container.' is "</span>
|
||||
|
@ -167,7 +167,7 @@ around), but not to break one.
|
|||
<span class="functiontext">Problems::quote_property</span><span class="plain">(4, </span><span class="identifier">neg</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_property</span><span class="plain">(5, </span><span class="identifier">neg</span><span class="plain">-</span><span class="element">>negation</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BrokenNegationPair</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BrokenNegationPair</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In %1, you proposed to set up the properties '%2' and '%3' as "</span>
|
||||
<span class="string">"opposites of each other. But I can't allow that, because '%4' "</span>
|
||||
|
|
|
@ -291,7 +291,7 @@ For now, though, we make a parallel decision here.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Properties::Emit::allocate_attributes is used in 1/htc (<a href="1-htc.html#SP2_6">§2.6</a>).</p>
|
||||
<p class="endnote">The function Properties::Emit::allocate_attributes is used in 1/htc (<a href="1-htc.html#SP2_5">§2.5</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP3_1"></a><b>§3.1. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Any either/or property which some value can hold is ineligible</span> <span class="cwebmacronumber">3.1</span>> =
|
||||
|
|
|
@ -183,7 +183,7 @@ definition structure stands incomplete for a while. Filling it in is called
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Properties::Measurement::validate_definitions is used in 1/htc (<a href="1-htc.html#SP2_7">§2.7</a>).</p>
|
||||
<p class="endnote">The function Properties::Measurement::validate_definitions is used in 1/htc (<a href="1-htc.html#SP2_6">§2.6</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP8"></a><b>§8. </b>Where:
|
||||
</p>
|
||||
|
@ -217,7 +217,7 @@ definition structure stands incomplete for a while. Filling it in is called
|
|||
<span class="identifier">mdef</span><span class="plain">-</span><span class="element">>prop</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Validating mdef with headword %W... <%W>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">,</span>
|
||||
<span class="identifier">mdef</span><span class="plain">-</span><span class="element">>headword</span><span class="plain">, </span><span class="identifier">mdef</span><span class="plain">-</span><span class="element">>name_of_property_to_compare</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::definition_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_GradingUnknownProperty</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::definition_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_GradingUnknownProperty</span><span class="plain">),</span>
|
||||
<span class="identifier">mdef</span><span class="plain">-</span><span class="element">>measurement_node</span><span class="plain">,</span>
|
||||
<span class="string">"that definition involves an unknown property"</span><span class="plain">,</span>
|
||||
<span class="string">"assuming it was meant to be a definition in the form 'Definition: "</span>
|
||||
|
@ -248,7 +248,7 @@ and issue a problem.
|
|||
<span class="identifier">mdef</span><span class="plain">-</span><span class="element">>region_threshold</span><span class="plain"> = </span><span class="functiontext">Rvalues::to_encoded_notation</span><span class="plain">(<<</span><span class="identifier">rp</span><span class="plain">>>);</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">Kinds::Behaviour::is_quasinumerical</span><span class="plain">(</span><span class="identifier">mdef</span><span class="plain">-</span><span class="element">>region_kind</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) &&</span>
|
||||
<span class="plain">(</span><span class="identifier">mdef</span><span class="plain">-</span><span class="element">>region_shape</span><span class="plain"> != </span><span class="constant">MEASURE_T_EXACTLY</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Problems::Issue::definition_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_GradingNonarithmeticKOV</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::definition_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_GradingNonarithmeticKOV</span><span class="plain">),</span>
|
||||
<span class="identifier">mdef</span><span class="plain">-</span><span class="element">>measurement_node</span><span class="plain">,</span>
|
||||
<span class="string">"the property value given here has a kind which can't be "</span>
|
||||
<span class="string">"subject to numerical comparisons"</span><span class="plain">,</span>
|
||||
|
@ -259,7 +259,7 @@ and issue a problem.
|
|||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Kinds::Compare::compatible</span><span class="plain">(</span><span class="identifier">mdef</span><span class="plain">-</span><span class="element">>region_kind</span><span class="plain">,</span>
|
||||
<span class="functiontext">Properties::Valued::kind</span><span class="plain">(</span><span class="identifier">mdef</span><span class="plain">-</span><span class="element">>prop</span><span class="plain">)) != </span><span class="identifier">ALWAYS_MATCH</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::Issue::definition_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_GradingWrongKOV</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::definition_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_GradingWrongKOV</span><span class="plain">),</span>
|
||||
<span class="identifier">mdef</span><span class="plain">-</span><span class="element">>measurement_node</span><span class="plain">,</span>
|
||||
<span class="string">"the property value given here is the wrong kind"</span><span class="plain">,</span>
|
||||
<span class="string">"and does not match the property being looked at."</span><span class="plain">);</span>
|
||||
|
@ -268,7 +268,7 @@ and issue a problem.
|
|||
<span class="plain">}</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
||||
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Can't get literal from <%W>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">mdef</span><span class="plain">-</span><span class="element">>region_threshold_text</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::definition_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_GradingNonLiteral</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::definition_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_GradingNonLiteral</span><span class="plain">),</span>
|
||||
<span class="identifier">mdef</span><span class="plain">-</span><span class="element">>measurement_node</span><span class="plain">,</span>
|
||||
<span class="string">"that definition is wrongly phrased"</span><span class="plain">,</span>
|
||||
<span class="string">"assuming it was meant to be a grading adjective like 'Definition: a "</span>
|
||||
|
@ -341,7 +341,7 @@ always to match <property-name>, and the text in the range must match
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::definition_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_GradingMisphrased</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::definition_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_GradingMisphrased</span><span class="plain">),</span>
|
||||
<span class="identifier">NounPhrases::new_raw</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">),</span>
|
||||
<span class="string">"that definition is wrongly phrased"</span><span class="plain">,</span>
|
||||
<span class="string">"assuming it was meant to be a grading adjective like 'Definition: a "</span>
|
||||
|
@ -390,7 +390,7 @@ always to match <property-name>, and the text in the range must match
|
|||
<pre class="displaydefn">
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Wordings::length</span><span class="plain">(</span><span class="identifier">AW</span><span class="plain">) > 1) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">shape</span><span class="plain"> != </span><span class="constant">MEASURE_T_EXACTLY</span><span class="plain">)</span>
|
||||
<span class="identifier">Problems::Issue::definition_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_MultiwordGrading</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::definition_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_MultiwordGrading</span><span class="plain">),</span>
|
||||
<span class="identifier">q</span><span class="plain">, </span><span class="string">"a grading adjective must be a single word"</span><span class="plain">,</span>
|
||||
<span class="string">"as in 'Definition: a container is large if its carrying capacity is "</span>
|
||||
<span class="string">"10 or more.': 'fairly large' would not be allowed because it would "</span>
|
||||
|
@ -400,7 +400,7 @@ always to match <property-name>, and the text in the range must match
|
|||
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Wordings::nonempty</span><span class="plain">(</span><span class="identifier">CALLW</span><span class="plain">)) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">shape</span><span class="plain"> != </span><span class="constant">MEASURE_T_EXACTLY</span><span class="plain">)</span>
|
||||
<span class="identifier">Problems::Issue::definition_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_GradingCalled</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::definition_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_GradingCalled</span><span class="plain">),</span>
|
||||
<span class="identifier">q</span><span class="plain">, </span><span class="string">"callings are not allowed when defining grading adjectives"</span><span class="plain">,</span>
|
||||
<span class="string">"so 'Definition: a container is large if its carrying capacity is 10 "</span>
|
||||
<span class="string">"or more.' is fine, but so 'Definition: a container (called the bag) "</span>
|
||||
|
@ -411,7 +411,7 @@ always to match <property-name>, and the text in the range must match
|
|||
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">sense</span><span class="plain"> != 1) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">shape</span><span class="plain"> != </span><span class="constant">MEASURE_T_EXACTLY</span><span class="plain">)</span>
|
||||
<span class="identifier">Problems::Issue::definition_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_GradingUnless</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::definition_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_GradingUnless</span><span class="plain">),</span>
|
||||
<span class="identifier">q</span><span class="plain">, </span><span class="string">"'unless' is not allowed when defining grading adjectives"</span><span class="plain">,</span>
|
||||
<span class="string">"so 'Definition: a container is large if its carrying capacity is 10 "</span>
|
||||
<span class="string">"or more.' is fine, but so 'Definition: a container is modest unless "</span>
|
||||
|
@ -523,7 +523,7 @@ can't normally be unravelled at compile time.
|
|||
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">, </span><span class="string">" To decide which object is %N ( S - description of objects ) "</span><span class="plain">,</span>
|
||||
<span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">mdef</span><span class="plain">-</span><span class="element">>superlative</span><span class="plain">));</span>
|
||||
<span class="identifier">Sentences::make_node</span><span class="plain">(</span>
|
||||
<span class="identifier">Sentences::make_node</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(),</span>
|
||||
<span class="identifier">Feeds::feed_stream</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">),</span>
|
||||
<span class="character">':'</span><span class="plain">);</span>
|
||||
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">);</span>
|
||||
|
@ -543,7 +543,7 @@ can't normally be unravelled at compile time.
|
|||
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">, </span><span class="string">" (- {-primitive-definition:extremal%s%W} -) "</span><span class="plain">,</span>
|
||||
<span class="functiontext">Properties::Measurement::strict_comparison</span><span class="plain">(</span><span class="identifier">mdef</span><span class="plain">-</span><span class="element">>region_shape</span><span class="plain">),</span>
|
||||
<span class="identifier">mdef</span><span class="plain">-</span><span class="element">>name_of_property_to_compare</span><span class="plain">);</span>
|
||||
<span class="identifier">Sentences::make_node</span><span class="plain">(</span><span class="identifier">Feeds::feed_stream</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">), </span><span class="character">'.'</span><span class="plain">);</span>
|
||||
<span class="identifier">Sentences::make_node</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">Feeds::feed_stream</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">), </span><span class="character">'.'</span><span class="plain">);</span>
|
||||
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">);</span>
|
||||
</pre>
|
||||
|
||||
|
@ -661,7 +661,7 @@ can't normally be unravelled at compile time.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Properties::Measurement::compile_MADJ_routines is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function Properties::Measurement::compile_MADJ_routines is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP14"></a><b>§14. Comparative forms. </b>For timing reasons, these are made all at once, and later than when the headword
|
||||
adjectives and superlatives are made.
|
||||
|
|
|
@ -132,7 +132,7 @@ and it seems best to reject the extra complexity needed.
|
|||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_property</span><span class="plain">(2, </span><span class="identifier">prn</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(3, </span><span class="identifier">K</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_AnomalousProperty</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_AnomalousProperty</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"Sorry, but I'm going to have to disallow the sentence %1, even "</span>
|
||||
<span class="string">"though it asks for something reasonable. A very small number "</span>
|
||||
|
|
|
@ -174,7 +174,7 @@ either/or property where a valued property is wanted, or vice versa.
|
|||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">unfortunate</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((<</span><span class="identifier">k</span><span class="plain">-</span><span class="identifier">kind</span><span class="plain">>(</span><span class="identifier">W</span><span class="plain">)) && (<<</span><span class="identifier">rp</span><span class="plain">>> == </span><span class="identifier">K_value</span><span class="plain">)) {</span>
|
||||
<span class="identifier">unfortunate</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">),</span>
|
||||
<span class="string">"the single word 'value' cannot be used as the name of a property"</span><span class="plain">,</span>
|
||||
<span class="string">"because it has a much broader meaning already. Inform uses the "</span>
|
||||
<span class="string">"word 'value' to mean any number, time of day, name of something, "</span>
|
||||
|
@ -184,7 +184,7 @@ either/or property where a valued property is wanted, or vice versa.
|
|||
<span class="string">"room number' would be fine."</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Wordings::length</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">) > </span><span class="identifier">MAX_WORDS_IN_ASSEMBLAGE</span><span class="plain">-2) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_PropertyNameTooLong</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_PropertyNameTooLong</span><span class="plain">),</span>
|
||||
<span class="string">"this is too long a name for a single property to have"</span><span class="plain">,</span>
|
||||
<span class="string">"and would become unwieldy."</span><span class="plain">);</span>
|
||||
<span class="identifier">W</span><span class="plain"> = </span><span class="identifier">Wordings::truncate</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">, </span><span class="identifier">MAX_WORDS_IN_ASSEMBLAGE</span><span class="plain">-2);</span>
|
||||
|
@ -193,7 +193,7 @@ either/or property where a valued property is wanted, or vice versa.
|
|||
<span class="identifier">unfortunate</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_PropertyNameUnsuitable</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_PropertyNameUnsuitable</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The sentence %1 seems to create a new property called '%2', but "</span>
|
||||
<span class="string">"this is not a good name, and I think I must have misread what "</span>
|
||||
|
@ -232,7 +232,7 @@ something.
|
|||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind_of</span><span class="plain">(3, </span><span class="identifier">spec</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_PropertyNameClash</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_PropertyNameClash</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but '%2' is not free to be the name of a fresh "</span>
|
||||
<span class="string">"property: it already has a meaning (as %3)."</span><span class="plain">);</span>
|
||||
|
@ -793,14 +793,14 @@ to sentences like:
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">prn</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NonPropertyTranslated</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NonPropertyTranslated</span><span class="plain">),</span>
|
||||
<span class="string">"this property does not exist"</span><span class="plain">,</span>
|
||||
<span class="string">"so cannot be translated."</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">prn</span><span class="plain">-</span><span class="element">>translated</span><span class="plain">) &&</span>
|
||||
<span class="plain">(</span><span class="identifier">Str::eq_wide_string</span><span class="plain">(</span><span class="identifier">Produce::get_translation</span><span class="plain">(</span><span class="functiontext">Properties::iname</span><span class="plain">(</span><span class="identifier">prn</span><span class="plain">)), </span><span class="identifier">text</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TranslatedTwice</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TranslatedTwice</span><span class="plain">),</span>
|
||||
<span class="string">"this property has already been translated"</span><span class="plain">,</span>
|
||||
<span class="string">"so there must be some duplication somewhere."</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain">;</span>
|
||||
|
@ -1084,11 +1084,11 @@ we find it, we compile it and return <code class="display"><span class="extract"
|
|||
|
||||
<p class="endnote">The function Properties::emit_single is used in 27/ei (<a href="27-ei.html#SP3">§3</a>).</p>
|
||||
|
||||
<p class="endnote">The function Properties::emit is used in 1/htc (<a href="1-htc.html#SP2_6">§2.6</a>).</p>
|
||||
<p class="endnote">The function Properties::emit is used in 1/htc (<a href="1-htc.html#SP2_5">§2.5</a>).</p>
|
||||
|
||||
<p class="endnote">The function Properties::emit_default_values appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function Properties::annotate_attributes is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
<p class="endnote">The function Properties::annotate_attributes is used in 1/htc (<a href="1-htc.html#SP2_7">§2.7</a>).</p>
|
||||
|
||||
<p class="endnote">The function Properties::emit_instance_permissions is used in 5/ins (<a href="5-ins.html#SP34">§34</a>).</p>
|
||||
|
||||
|
|
|
@ -127,7 +127,7 @@ that the two can never fall out of step.
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="plain">*</span><span class="identifier">X</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RelationWithEitherOrProperty</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RelationWithEitherOrProperty</span><span class="plain">),</span>
|
||||
<span class="string">"verbs can only set properties with values"</span><span class="plain">,</span>
|
||||
<span class="string">"not either/or properties like this one."</span><span class="plain">);</span>
|
||||
</pre>
|
||||
|
@ -143,7 +143,7 @@ that the two can never fall out of step.
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="plain">*</span><span class="identifier">X</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RelationWithBadProperty</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RelationWithBadProperty</span><span class="plain">),</span>
|
||||
<span class="string">"that doesn't seem to be a property"</span><span class="plain">,</span>
|
||||
<span class="string">"perhaps because you haven't defined it yet?"</span><span class="plain">);</span>
|
||||
</pre>
|
||||
|
|
|
@ -69,7 +69,7 @@ possibility by widening the kind, when this can be done.)
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadKOVForRelationProperty</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadKOVForRelationProperty</span><span class="plain">),</span>
|
||||
<span class="string">"that property already exists and contains a kind of value incompatible with "</span>
|
||||
<span class="string">"what we need here"</span><span class="plain">,</span>
|
||||
<span class="string">"so you will need to give it a different name."</span><span class="plain">);</span>
|
||||
|
@ -173,7 +173,7 @@ to the end user.
|
|||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">Kinds::Behaviour::definite</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) && (</span><span class="identifier">prn</span><span class="plain">-</span><span class="element">>do_not_compile</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(1, </span><span class="identifier">prn</span><span class="plain">-</span><span class="element">>name</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(2, </span><span class="identifier">K</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_PropertyIndefinite</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_PropertyIndefinite</span><span class="plain">));</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">current_sentence</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(3, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
|
@ -340,7 +340,7 @@ storage methods at run-time if we wanted.)
|
|||
<span class="identifier">current_sentence</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Kinds::RunTime::compile_default_value_vh</span><span class="plain">(</span><span class="identifier">VH</span><span class="plain">, </span><span class="identifier">K</span><span class="plain">, </span><span class="identifier">prn</span><span class="plain">-</span><span class="element">>name</span><span class="plain">, </span><span class="string">"property"</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(1, </span><span class="identifier">prn</span><span class="plain">-</span><span class="element">>name</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_PropertyUninitialisable</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_PropertyUninitialisable</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"I am unable to put any value into the property '%1', because "</span>
|
||||
<span class="string">"it seems to have a kind of value which has no actual values."</span><span class="plain">);</span>
|
||||
|
|
|
@ -64,7 +64,7 @@ aren't allowed to add I7-accessible properties.)
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function World::complete is used in 1/htc (<a href="1-htc.html#SP2_6">§2.6</a>).</p>
|
||||
<p class="endnote">The function World::complete is used in 1/htc (<a href="1-htc.html#SP2_5">§2.5</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP1_1"></a><b>§1.1. </b>The model world is a broth with many cooks. On the one hand, we have the
|
||||
various different INFSs, with their different needs — a various-to-various
|
||||
|
@ -304,7 +304,7 @@ about the Portal, to stand.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function World::complete_additions is used in 1/htc (<a href="1-htc.html#SP2_7">§2.7</a>).</p>
|
||||
<p class="endnote">The function World::complete_additions is used in 1/htc (<a href="1-htc.html#SP2_6">§2.6</a>).</p>
|
||||
|
||||
<hr class="tocbar">
|
||||
<ul class="toc"><li><a href="16-in.html">Back to 'Inferences'</a></li><li><a href="16-cmw2.html">Continue with 'Compile Model World'</a></li></ul><hr class="tocbar">
|
||||
|
|
|
@ -60,7 +60,7 @@ to write anything, then put the same question to the subjects.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function World::Compile::compile is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function World::Compile::compile is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<hr class="tocbar">
|
||||
<ul class="toc"><li><a href="16-cmw.html">Back to 'Complete Model World'</a></li><li><a href="16-ic.html">Continue with 'Instance Counting'</a></li></ul><hr class="tocbar">
|
||||
|
|
|
@ -101,7 +101,7 @@ organised as linked lists; hence the <code class="display"><span class="extract"
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The structure inference is accessed in 3/pd, 5/lp, 5/ut, 5/un, 5/ins, 6/rlt, 6/nv, 7/ss, 7/hdn, 7/ns, 7/oaf, 7/rs, 8/ie, 9/tfa, 9/tbath, 9/rpt, 9/tc, 9/ma, 9/rk, 9/ass, 9/imp, 9/pd, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/cp, 16/is, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/tti, 26/pc, 26/ts, 27/cm and here.</p>
|
||||
<p class="endnote">The structure inference is accessed in 3/pd, 5/lp, 5/ut, 5/un, 5/ins, 6/rlt, 6/nv, 7/ns, 7/oaf, 7/rs, 9/tfa, 9/tbath, 9/rpt, 9/tc, 9/ma, 9/rk, 9/ass, 9/imp, 9/pd, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/cp, 16/is, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/tti, 26/pc, 26/ts, 27/cm and here.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP7"></a><b>§7. Creation. </b>The following routine coins a newly minted inference which is not yet attached
|
||||
to any subject: but it will not stay unattached for long. Note that if nothing
|
||||
|
@ -410,7 +410,7 @@ knowledge means that the inferences must have a certainty of likely or better.
|
|||
<span class="functiontext">Problems::quote_property</span><span class="plain">(2, </span><span class="identifier">prn</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(3, </span><span class="identifier">VK</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(4, </span><span class="identifier">PK</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LateInferenceProblem</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LateInferenceProblem</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but that tries to set the value of the '%2' "</span>
|
||||
<span class="string">"property to %3 - which must be wrong because this property "</span>
|
||||
|
@ -473,7 +473,7 @@ knowledge means that the inferences must have a certainty of likely or better.
|
|||
|
||||
<p class="endnote">The function World::Inferences::verify_prop_states is used in 16/is (<a href="16-is.html#SP30">§30</a>).</p>
|
||||
|
||||
<p class="endnote">The function World::Inferences::get_prop_state is used in 3/nl (<a href="3-nl.html#SP7">§7</a>).</p>
|
||||
<p class="endnote">The function World::Inferences::get_prop_state is used in 3/nl (<a href="3-nl.html#SP6">§6</a>).</p>
|
||||
|
||||
<p class="endnote">The function World::Inferences::get_prop_state_at appears nowhere else.</p>
|
||||
|
||||
|
@ -1021,7 +1021,7 @@ and so clashed are impossible.)
|
|||
<span class="functiontext">Problems::quote_subject</span><span class="plain">(4, </span><span class="identifier">infs</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_spec</span><span class="plain">(5, </span><span class="identifier">i</span><span class="plain">-</span><span class="element">>inferred_property_value</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_spec</span><span class="plain">(6, </span><span class="identifier">list</span><span class="plain">-</span><span class="element">>inferred_property_value</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RelationContradiction2</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RelationContradiction2</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"I'm finding a contradiction at the sentence %1, "</span>
|
||||
<span class="string">"because it means I can't set up %3. "</span>
|
||||
|
@ -1036,7 +1036,7 @@ and so clashed are impossible.)
|
|||
<span class="functiontext">Problems::quote_subject</span><span class="plain">(4, </span><span class="identifier">infs</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_spec</span><span class="plain">(5, </span><span class="identifier">i</span><span class="plain">-</span><span class="element">>inferred_property_value</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_spec</span><span class="plain">(6, </span><span class="identifier">list</span><span class="plain">-</span><span class="element">>inferred_property_value</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RelationContradiction</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RelationContradiction</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"I'm finding a contradiction at the sentences %1 and %2, "</span>
|
||||
<span class="string">"because between them they set up rival versions of %3. "</span>
|
||||
|
|
|
@ -398,7 +398,7 @@ track of the content of each response.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Strings::compile_responses is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function Strings::compile_responses is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP7_1"></a><b>§7.1. </b>Note that each rule is allowed to tell us that it already has a better
|
||||
text for the response than the one we first created.
|
||||
|
@ -532,7 +532,7 @@ divided up by the extensions containing the rules which produce them.
|
|||
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">marker</span><span class="plain"> = 0; </span><span class="identifier">marker</span><span class="plain"> < 26; </span><span class="identifier">marker</span><span class="plain">++)</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Rules::rule_defines_response</span><span class="plain">(</span><span class="identifier">R</span><span class="plain">, </span><span class="identifier">marker</span><span class="plain">)) {</span>
|
||||
<span class="identifier">tally</span><span class="plain">++;</span>
|
||||
<span class="identifier">inform_extension</span><span class="plain"> *</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">SourceFiles::get_extension_corresponding</span><span class="plain">(</span>
|
||||
<span class="identifier">inform_extension</span><span class="plain"> *</span><span class="identifier">E</span><span class="plain"> = </span><span class="identifier">Extensions::corresponding_to</span><span class="plain">(</span>
|
||||
<span class="identifier">Lexer::file_of_origin</span><span class="plain">(</span><span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">R</span><span class="plain">-</span><span class="element">>name</span><span class="plain">)));</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">E</span><span class="plain"> == </span><span class="identifier">group_E</span><span class="plain">) </span><<span class="cwebmacro">Start a possible run of matches</span> <span class="cwebmacronumber">7.3.1.1</span>>
|
||||
<span class="reserved">else</span><span class="plain"> </span><<span class="cwebmacro">End a possible run of matches</span> <span class="cwebmacronumber">7.3.1.2</span>><span class="plain">;</span>
|
||||
|
@ -745,13 +745,13 @@ text needs to be printed in a particular way.
|
|||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">code</span><span class="plain"> = <<</span><span class="identifier">r</span><span class="plain">>>;</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">rule_being_compiled</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) ||</span>
|
||||
<span class="plain">(</span><span class="functiontext">Rules::rule_is_named</span><span class="plain">(</span><span class="identifier">rule_being_compiled</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ResponseContextWrong</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ResponseContextWrong</span><span class="plain">),</span>
|
||||
<span class="string">"lettered responses can only be used in named rules"</span><span class="plain">,</span>
|
||||
<span class="string">"not in any of the other contexts in which quoted text can appear."</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Rules::rule_defines_response</span><span class="plain">(</span><span class="identifier">rule_being_compiled</span><span class="plain">, </span><span class="identifier">code</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ResponseDuplicated</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ResponseDuplicated</span><span class="plain">),</span>
|
||||
<span class="string">"this duplicates a response letter"</span><span class="plain">,</span>
|
||||
<span class="string">"which is not allowed: if a bracketed letter like (A) is used to mark "</span>
|
||||
<span class="string">"some text as a response, then it can only occur once in its rule."</span><span class="plain">);</span>
|
||||
|
|
|
@ -375,7 +375,7 @@ different for compilation purposes.
|
|||
<span class="reserved">literal_text</span><span class="plain"> *</span><span class="identifier">lt</span><span class="plain"> = </span><span class="functiontext">Strings::TextLiterals::compile_literal</span><span class="plain">(</span><span class="identifier">VH</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">lt</span><span class="plain">) </span><span class="identifier">lt</span><span class="plain">-</span><span class="element">>as_boxed_quotation</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">else</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_EmptyQuotationBox</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_EmptyQuotationBox</span><span class="plain">),</span>
|
||||
<span class="string">"a boxed quotation can't be empty"</span><span class="plain">,</span>
|
||||
<span class="string">"though I suppose you could make it consist of just a few spaces "</span>
|
||||
<span class="string">"to get a similar effect if you really needed to."</span><span class="plain">);</span>
|
||||
|
@ -437,7 +437,7 @@ number <code class="display"><span class="extract">-1</span></code>).
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Strings::TextLiterals::compile is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function Strings::TextLiterals::compile is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<p class="endnote">The function Strings::TextLiterals::traverse_lts appears nowhere else.</p>
|
||||
|
||||
|
|
|
@ -162,7 +162,7 @@ to do but panic.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Strings::TextSubstitutions::allow_no_further_text_subs is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function Strings::TextSubstitutions::allow_no_further_text_subs is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP7"></a><b>§7. </b>For some years these were compiled to routines verbosely called
|
||||
<code class="display"><span class="extract">text_routine_1</span></code> and so on, but no longer:
|
||||
|
@ -429,11 +429,11 @@ a request for a new text substitution to be compiled later...
|
|||
<span class="identifier">Produce::up</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">());</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">ts_code_block</span><span class="plain"> = </span><span class="identifier">ParseTree::new</span><span class="plain">(</span><span class="constant">ROUTINE_NT</span><span class="plain">);</span>
|
||||
<span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">ts_code_block</span><span class="plain"> = </span><span class="identifier">ParseTree::new</span><span class="plain">(</span><span class="identifier">ROUTINE_NT</span><span class="plain">);</span>
|
||||
<span class="identifier">ParseTree::set_module</span><span class="plain">(</span><span class="identifier">ts_code_block</span><span class="plain">, </span><span class="identifier">ts</span><span class="plain">-</span><span class="element">>belongs_to_module</span><span class="plain">);</span>
|
||||
<span class="identifier">compilation_module</span><span class="plain"> *</span><span class="identifier">cm</span><span class="plain"> = </span><span class="functiontext">Modules::current</span><span class="plain">();</span>
|
||||
<span class="functiontext">Modules::set_current_to</span><span class="plain">(</span><span class="identifier">ts</span><span class="plain">-</span><span class="element">>belongs_to_module</span><span class="plain">);</span>
|
||||
<span class="identifier">ts_code_block</span><span class="plain">-</span><span class="element">>down</span><span class="plain"> = </span><span class="identifier">ParseTree::new</span><span class="plain">(</span><span class="constant">INVOCATION_LIST_NT</span><span class="plain">);</span>
|
||||
<span class="identifier">ts_code_block</span><span class="plain">-</span><span class="element">>down</span><span class="plain"> = </span><span class="identifier">ParseTree::new</span><span class="plain">(</span><span class="identifier">INVOCATION_LIST_NT</span><span class="plain">);</span>
|
||||
<span class="identifier">ParseTree::set_text</span><span class="plain">(</span><span class="identifier">ts_code_block</span><span class="plain">-</span><span class="element">>down</span><span class="plain">, </span><span class="identifier">ts</span><span class="plain">-</span><span class="element">>unsubstituted_text</span><span class="plain">);</span>
|
||||
<span class="identifier">ParseTree::annotate_int</span><span class="plain">(</span><span class="identifier">ts_code_block</span><span class="plain">-</span><span class="element">>down</span><span class="plain">, </span><span class="constant">from_text_substitution_ANNOT</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">);</span>
|
||||
<span class="functiontext">Sentences::RuleSubtrees::parse_routine_structure</span><span class="plain">(</span><span class="identifier">ts_code_block</span><span class="plain">);</span>
|
||||
|
|
|
@ -278,7 +278,7 @@ incomparable, and "thing" being the max of "person" and "door").
|
|||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">spec</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadConstantListEntry</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadConstantListEntry</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The constant list %1 contains an entry '%2' which isn't any "</span>
|
||||
<span class="string">"form of constant I'm able to read."</span><span class="plain">);</span>
|
||||
|
@ -301,7 +301,7 @@ incomparable, and "thing" being the max of "person" and "door").
|
|||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">spec</span><span class="plain">));</span>
|
||||
<span class="functiontext">Problems::quote_spec</span><span class="plain">(3, </span><span class="identifier">spec</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NonconstantConstantListEntry</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NonconstantConstantListEntry</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The constant list %1 contains an entry '%2' which does make sense, "</span>
|
||||
<span class="string">"but isn't a constant (it's %3). Only constants can appear as entries in "</span>
|
||||
|
@ -323,7 +323,7 @@ incomparable, and "thing" being the max of "person" and "door").
|
|||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">spec</span><span class="plain">));</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(3, </span><span class="identifier">E</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(4, </span><span class="identifier">previous_K</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_IncompatibleConstantListEntry</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_IncompatibleConstantListEntry</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The constant list %1 contains an entry '%2' whose kind is '%3', but "</span>
|
||||
<span class="string">"that's not compatible with the kind I had established from looking at "</span>
|
||||
|
@ -378,7 +378,7 @@ problem messages out into the open —
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Lists::check is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function Lists::check is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP11"></a><b>§11. </b>That leaves just the compilation of lists at run-time. This used to be a
|
||||
complex dance with initialisation code interleaved with heap construction,
|
||||
|
@ -439,7 +439,7 @@ so there was once a two-page explanation here, but it is now blessedly simple.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Lists::compile is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function Lists::compile is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP12_1"></a><b>§12.1. </b>These are I6 word arrays, with the contents:
|
||||
</p>
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Tables::Support::compile is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function Tables::Support::compile is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP1_1"></a><b>§1.1. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Compile the data structures for entry storage</span> <span class="cwebmacronumber">1.1</span>> =
|
||||
|
@ -496,7 +496,7 @@ table values and prints the (title-cased) name of the one which matches.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Tables::Support::compile_print_table_names is used in 1/htc (<a href="1-htc.html#SP2_7">§2.7</a>).</p>
|
||||
<p class="endnote">The function Tables::Support::compile_print_table_names is used in 1/htc (<a href="1-htc.html#SP2_6">§2.6</a>).</p>
|
||||
|
||||
<hr class="tocbar">
|
||||
<ul class="toc"><li><a href="19-tb.html">Back to 'Tables'</a></li><li><a href="19-tod.html">Continue with 'Tables of Definitions'</a></li></ul><hr class="tocbar">
|
||||
|
|
|
@ -71,7 +71,7 @@ column ID numbers used at run-time.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The structure table_contribution is accessed in 3/pd, 5/lp, 5/ut, 5/un, 5/ins, 6/rlt, 6/nv, 7/ss, 7/hdn, 7/ns, 7/oaf, 7/rs, 8/ie, 9/tfa, 9/tbath, 9/rpt, 9/tc, 9/ma, 9/rk, 9/ass, 9/imp, 9/pd, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/cp, 16/is, 16/in, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/tti, 26/pc, 26/ts, 27/cm and here.</p>
|
||||
<p class="endnote">The structure table_contribution is accessed in 3/pd, 5/lp, 5/ut, 5/un, 5/ins, 6/rlt, 6/nv, 7/ns, 7/oaf, 7/rs, 9/tfa, 9/tbath, 9/rpt, 9/tc, 9/ma, 9/rk, 9/ass, 9/imp, 9/pd, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/cp, 16/is, 16/in, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/tti, 26/pc, 26/ts, 27/cm and here.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP4"></a><b>§4. </b>These are convenient during parsing.
|
||||
</p>
|
||||
|
@ -98,7 +98,7 @@ is why the following sentence handler is null:
|
|||
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">sentence_handler</span><span class="plain"> </span><span class="identifier">TABLE_SH_handler</span><span class="plain"> = { </span><span class="constant">TABLE_NT</span><span class="plain">, -1, 0, </span><span class="identifier">NULL</span><span class="plain"> };</span>
|
||||
<span class="reserved">sentence_handler</span><span class="plain"> </span><span class="identifier">TABLE_SH_handler</span><span class="plain"> = { </span><span class="identifier">TABLE_NT</span><span class="plain">, -1, 0, </span><span class="identifier">NULL</span><span class="plain"> };</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
@ -111,17 +111,17 @@ established names of tables and columns:
|
|||
|
||||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Tables::traverse_to_create</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
|
||||
<span class="identifier">ParseTree::traverse</span><span class="plain">(</span><span class="functiontext">Tables::visit_to_create</span><span class="plain">);</span>
|
||||
<span class="identifier">ParseTree::traverse</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="functiontext">Tables::visit_to_create</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Tables::visit_to_create</span><span class="plain">(</span><span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">p</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ParseTree::get_type</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">) == </span><span class="constant">TABLE_NT</span><span class="plain">)</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ParseTree::get_type</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">) == </span><span class="identifier">TABLE_NT</span><span class="plain">)</span>
|
||||
<span class="functiontext">Tables::create_table</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Tables::traverse_to_create is used in 1/htc (<a href="1-htc.html#SP2_4">§2.4</a>).</p>
|
||||
<p class="endnote">The function Tables::traverse_to_create is used in 1/htc (<a href="1-htc.html#SP2_3">§2.3</a>).</p>
|
||||
|
||||
<p class="endnote">The function Tables::visit_to_create appears nowhere else.</p>
|
||||
|
||||
|
@ -148,7 +148,7 @@ see below.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Tables::traverse_to_stock is used in 1/htc (<a href="1-htc.html#SP2_5">§2.5</a>, <a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
<p class="endnote">The function Tables::traverse_to_stock is used in 1/htc (<a href="1-htc.html#SP2_4">§2.4</a>, <a href="1-htc.html#SP2_7">§2.7</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP8"></a><b>§8. </b>Last and least: a traverse existing just to issue a problem message in a
|
||||
case which Inform can often cope with, but which the experience of users
|
||||
|
@ -164,7 +164,7 @@ suggests is never a good idea.
|
|||
<span class="plain">(</span><span class="identifier">Kinds::Compare::lt</span><span class="plain">(<<</span><span class="identifier">rp</span><span class="plain">>>, </span><span class="identifier">K_object</span><span class="plain">))) {</span>
|
||||
<span class="functiontext">Problems::quote_table</span><span class="plain">(1, </span><span class="identifier">t</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">t</span><span class="plain">-</span><span class="element">>table_name_text</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TableCoincidesWithKind</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TableCoincidesWithKind</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The name %1 will have to be disallowed because '%2' is also the "</span>
|
||||
<span class="string">"name of a kind, or of the plural of a kind. (For instance, writing "</span>
|
||||
|
@ -177,7 +177,7 @@ suggests is never a good idea.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Tables::check_tables_for_kind_clashes is used in 1/htc (<a href="1-htc.html#SP2_7">§2.7</a>).</p>
|
||||
<p class="endnote">The function Tables::check_tables_for_kind_clashes is used in 1/htc (<a href="1-htc.html#SP2_6">§2.6</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP9"></a><b>§9. Table basics. </b>The following makes a blank structure for a table, but it isn't valid until
|
||||
some of these fields have been properly filled in.
|
||||
|
@ -389,7 +389,7 @@ two forms in any case.
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="plain">*</span><span class="identifier">X</span><span class="plain"> = </span><span class="constant">TABLE_HAS_ONLY_NAME</span><span class="plain">; </span> <span class="comment">for recovery</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TableMisnamed</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TableMisnamed</span><span class="plain">),</span>
|
||||
<span class="string">"this isn't allowed as the name of a Table"</span><span class="plain">,</span>
|
||||
<span class="string">"since a table is required either to have a number, or to be a table 'of' "</span>
|
||||
<span class="string">"something (or both). For example: 'Table 5', 'Table of Blue Meanies', and "</span>
|
||||
|
@ -490,7 +490,7 @@ table and then destroy the temporary one made here.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">),</span>
|
||||
<span class="string">"this table does not strictly speaking start a paragraph"</span><span class="plain">,</span>
|
||||
<span class="string">"and I'm afraid we need to speak strictly here. Even a comment coming before "</span>
|
||||
<span class="string">"the start of the table is too much."</span><span class="plain">);</span>
|
||||
|
@ -541,7 +541,7 @@ table and then destroy the temporary one made here.
|
|||
<pre class="displaydefn">
|
||||
<span class="reserved">if</span><span class="plain"> (<</span><span class="identifier">s</span><span class="plain">-</span><span class="identifier">type</span><span class="plain">-</span><span class="identifier">expression</span><span class="plain">-</span><span class="identifier">or</span><span class="plain">-</span><span class="identifier">value</span><span class="plain">>(</span><span class="identifier">t</span><span class="plain">-</span><span class="element">>table_name_text</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Problems::quote_wording_as_source</span><span class="plain">(1, </span><span class="identifier">t</span><span class="plain">-</span><span class="element">>table_name_text</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TableNameAmbiguous</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TableNameAmbiguous</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The table name %1 will have to be disallowed as it is text which "</span>
|
||||
<span class="string">"already has a meaning to Inform. For instance, creating the 'Table "</span>
|
||||
|
@ -619,7 +619,7 @@ number only, that must. Suppose that "Table 2 - Trees" already exists. Then:
|
|||
<pre class="displaydefn">
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">existing_table_with_same_name</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
|
||||
<span class="functiontext">Problems::quote_table</span><span class="plain">(1, </span><span class="identifier">t</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TableNotContinuation</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TableNotContinuation</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"It looks as if %1 is meant to be related to an existing table, "</span>
|
||||
<span class="string">"but I can't find one if it is. %P"</span>
|
||||
|
@ -645,7 +645,7 @@ number only, that must. Suppose that "Table 2 - Trees" already exists. Then:
|
|||
<span class="functiontext">Problems::quote_table</span><span class="plain">(1, </span><span class="identifier">t</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_table</span><span class="plain">(2, </span><span class="identifier">existing_table_with_same_name</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(3, </span><span class="identifier">HW</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TableNameDuplicate</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TableNameDuplicate</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"I can't create %1 because its name overlaps with one that already "</span>
|
||||
<span class="string">"exists: %2. %P"</span>
|
||||
|
@ -813,7 +813,7 @@ a node in the parse tree representing the column's use within this table.
|
|||
<span class="string">"only %6.)"</span><span class="plain">);</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
||||
<span class="identifier">ParseTree::annotate_int</span><span class="plain">(</span><span class="identifier">cell</span><span class="plain">, </span><span class="constant">table_cell_unspecified_ANNOT</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">);</span>
|
||||
<span class="identifier">ParseTree::graft</span><span class="plain">(</span><span class="identifier">cell</span><span class="plain">, </span><span class="identifier">t</span><span class="plain">-</span><span class="element">>columns</span><span class="plain">[</span><span class="identifier">col_count</span><span class="plain">]</span><span class="element">.entries</span><span class="plain">);</span>
|
||||
<span class="identifier">ParseTree::graft</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">cell</span><span class="plain">, </span><span class="identifier">t</span><span class="plain">-</span><span class="element">>columns</span><span class="plain">[</span><span class="identifier">col_count</span><span class="plain">]</span><span class="element">.entries</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
|
@ -834,7 +834,7 @@ a node in the parse tree representing the column's use within this table.
|
|||
<span class="reserved">while</span><span class="plain"> (</span><span class="identifier">col_count</span><span class="plain"> < </span><span class="identifier">t</span><span class="plain">-</span><span class="element">>no_columns</span><span class="plain">) { </span> <span class="comment">which can only happen on data rows</span>
|
||||
<span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">cell</span><span class="plain"> = </span><span class="functiontext">Tables::empty_cell_node</span><span class="plain">();</span>
|
||||
<span class="identifier">ParseTree::annotate_int</span><span class="plain">(</span><span class="identifier">cell</span><span class="plain">, </span><span class="constant">table_cell_unspecified_ANNOT</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">);</span>
|
||||
<span class="identifier">ParseTree::graft</span><span class="plain">(</span><span class="identifier">cell</span><span class="plain">, </span><span class="identifier">t</span><span class="plain">-</span><span class="element">>columns</span><span class="plain">[</span><span class="identifier">col_count</span><span class="plain">]</span><span class="element">.entries</span><span class="plain">);</span>
|
||||
<span class="identifier">ParseTree::graft</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">cell</span><span class="plain">, </span><span class="identifier">t</span><span class="plain">-</span><span class="element">>columns</span><span class="plain">[</span><span class="identifier">col_count</span><span class="plain">]</span><span class="element">.entries</span><span class="plain">);</span>
|
||||
<span class="identifier">col_count</span><span class="plain">++;</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
@ -925,14 +925,14 @@ the new table's rows onto the ends of the old table's columns.
|
|||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">j</span><span class="plain">;</span>
|
||||
<span class="reserved">for</span><span class="plain"> (</span><span class="identifier">j</span><span class="plain">=0; </span><span class="identifier">j</span><span class="plain"><</span><span class="identifier">old_t</span><span class="plain">-</span><span class="element">>no_columns</span><span class="plain">; </span><span class="identifier">j</span><span class="plain">++)</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">old_to_new</span><span class="plain">[</span><span class="identifier">j</span><span class="plain">] >= 0) {</span>
|
||||
<span class="identifier">ParseTree::graft</span><span class="plain">(</span><span class="identifier">t</span><span class="plain">-</span><span class="element">>columns</span><span class="plain">[</span><span class="identifier">old_to_new</span><span class="plain">[</span><span class="identifier">j</span><span class="plain">]]</span><span class="element">.entries</span><span class="plain">-</span><span class="element">>down</span><span class="plain">,</span>
|
||||
<span class="identifier">ParseTree::graft</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">t</span><span class="plain">-</span><span class="element">>columns</span><span class="plain">[</span><span class="identifier">old_to_new</span><span class="plain">[</span><span class="identifier">j</span><span class="plain">]]</span><span class="element">.entries</span><span class="plain">-</span><span class="element">>down</span><span class="plain">,</span>
|
||||
<span class="identifier">old_t</span><span class="plain">-</span><span class="element">>columns</span><span class="plain">[</span><span class="identifier">j</span><span class="plain">]</span><span class="element">.entries</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">for</span><span class="plain"> (</span><span class="identifier">i</span><span class="plain">=1; </span><span class="identifier">i</span><span class="plain"><</span><span class="identifier">row_count</span><span class="plain">; </span><span class="identifier">i</span><span class="plain">++) { </span> <span class="comment">from 1 to omit the column headings</span>
|
||||
<span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">blank</span><span class="plain"> = </span><span class="functiontext">Tables::empty_cell_node</span><span class="plain">();</span>
|
||||
<span class="identifier">ParseTree::annotate_int</span><span class="plain">(</span><span class="identifier">blank</span><span class="plain">, </span><span class="constant">table_cell_unspecified_ANNOT</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">);</span>
|
||||
<span class="identifier">ParseTree::graft</span><span class="plain">(</span><span class="identifier">blank</span><span class="plain">, </span><span class="identifier">old_t</span><span class="plain">-</span><span class="element">>columns</span><span class="plain">[</span><span class="identifier">j</span><span class="plain">]</span><span class="element">.entries</span><span class="plain">);</span>
|
||||
<span class="identifier">ParseTree::graft</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">blank</span><span class="plain">, </span><span class="identifier">old_t</span><span class="plain">-</span><span class="element">>columns</span><span class="plain">[</span><span class="identifier">j</span><span class="plain">]</span><span class="element">.entries</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -962,7 +962,7 @@ wants a row for each man, and the continuation wants a row for each woman.
|
|||
<span class="functiontext">Problems::quote_table</span><span class="plain">(2, </span><span class="identifier">old_t</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(3, </span><span class="identifier">old_t</span><span class="plain">-</span><span class="element">>blank_rows_for_each_text</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(4, </span><span class="identifier">t</span><span class="plain">-</span><span class="element">>blank_rows_for_each_text</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TableContinuationContradicts</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TableContinuationContradicts</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The table %1 says that it should have a blank row for each "</span>
|
||||
<span class="string">"%4, but the original %2 already says it has a blank for each "</span>
|
||||
|
@ -1071,7 +1071,7 @@ used in continuation rows for columns not mentioned.)
|
|||
<span class="functiontext">Problems::quote_table</span><span class="plain">(2, </span><span class="identifier">old_t</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">missing</span><span class="plain"> == 1) </span><span class="identifier">Problems::quote_text</span><span class="plain">(3, </span><span class="string">"a column"</span><span class="plain">);</span>
|
||||
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">Problems::quote_text</span><span class="plain">(3, </span><span class="string">"columns"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TableContinuationAddsCols</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TableContinuationAddsCols</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The table %1 won't work as a continuation, because it contains "</span>
|
||||
<span class="string">"%3 not found in the original %2."</span><span class="plain">);</span>
|
||||
|
@ -1108,7 +1108,7 @@ be "wider" than the old one.)
|
|||
<span class="functiontext">Problems::quote_table</span><span class="plain">(2, </span><span class="identifier">old_t</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">missing</span><span class="plain"> == 1) </span><span class="identifier">Problems::quote_text</span><span class="plain">(3, </span><span class="string">"a column"</span><span class="plain">);</span>
|
||||
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">Problems::quote_text</span><span class="plain">(3, </span><span class="string">"columns"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TableReplacementMissesCols</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TableReplacementMissesCols</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The table %1 won't work as a replacement, because it's missing "</span>
|
||||
<span class="string">"%3 found in the original %2."</span><span class="plain">);</span>
|
||||
|
@ -1144,7 +1144,7 @@ columns and in the same order.
|
|||
<span class="identifier">current_sentence</span><span class="plain"> = </span><span class="identifier">t</span><span class="plain">-</span><span class="element">>table_created_at</span><span class="plain">-</span><span class="element">>source_table</span><span class="plain">;</span>
|
||||
<span class="functiontext">Problems::quote_table</span><span class="plain">(1, </span><span class="identifier">t</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_table</span><span class="plain">(2, </span><span class="identifier">old_t</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TableAmendmentMisfit</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TableAmendmentMisfit</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"Columns in %1 do not exactly match the original %2. I can only "</span>
|
||||
<span class="string">"make changes to rows in an existing table if the amended versions "</span>
|
||||
|
@ -1166,7 +1166,7 @@ columns and in the same order.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="string">"****"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="string">"****"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="string">"The old table has columns: "</span><span class="plain">); {</span>
|
||||
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">);</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">j</span><span class="plain">;</span>
|
||||
|
@ -1179,7 +1179,7 @@ columns and in the same order.
|
|||
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="string">"****"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="string">"****"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="string">"The new table has columns: "</span><span class="plain">); {</span>
|
||||
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">);</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">;</span>
|
||||
|
@ -1590,7 +1590,7 @@ people — it needs to be "yourself" instead, since "player" is a variable.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Tables::complete is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function Tables::complete is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP26_1"></a><b>§26.1. </b>For the actual code, see below.
|
||||
</p>
|
||||
|
@ -1921,7 +1921,7 @@ time to find a clear wording for:
|
|||
<span class="identifier">Problems::quote_number</span><span class="plain">(6, &</span><span class="identifier">matches_in_last_round</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">matches_in_last_round</span><span class="plain"> > 2) </span><span class="identifier">Problems::quote_text</span><span class="plain">(7, </span><span class="string">"any"</span><span class="plain">);</span>
|
||||
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">Problems::quote_text</span><span class="plain">(7, </span><span class="string">"either"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="string">"****"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="string">"****"</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">col</span><span class="plain"> == 0)</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"(Amendment %1). I can't match this to any row - there's nothing with "</span>
|
||||
|
@ -1950,13 +1950,13 @@ time to find a clear wording for:
|
|||
<span class="identifier">current_sentence</span><span class="plain"> = </span><span class="identifier">amendments</span><span class="plain">-</span><span class="element">>table_created_at</span><span class="plain">-</span><span class="element">>source_table</span><span class="plain">;</span>
|
||||
<span class="functiontext">Problems::quote_table</span><span class="plain">(1, </span><span class="identifier">main_table</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_table</span><span class="plain">(2, </span><span class="identifier">amendments</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TableAmendmentMismatch</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TableAmendmentMismatch</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"I'm currently trying to amend rows in %1 according to the instructions "</span>
|
||||
<span class="string">"in %2. To do that, I have to match each amendment row in turn, which "</span>
|
||||
<span class="string">"I do by trying to match up entries in the leftmost column(s)."</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="string">"****"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="string">"****"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="string">"But I ran into problems:"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -2144,8 +2144,8 @@ given extension:
|
|||
<pre class="display">
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">Tables::table_within</span><span class="plain">(</span><span class="reserved">table</span><span class="plain"> *</span><span class="identifier">t</span><span class="plain">, </span><span class="identifier">inform_extension</span><span class="plain"> *</span><span class="identifier">E</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">t</span><span class="plain">-</span><span class="element">>amendment_of</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="reserved">heading</span><span class="plain"> *</span><span class="identifier">at_heading</span><span class="plain"> = </span><span class="functiontext">Sentences::Headings::of_wording</span><span class="plain">(</span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">t</span><span class="plain">-</span><span class="element">>table_created_at</span><span class="plain">-</span><span class="element">>source_table</span><span class="plain">));</span>
|
||||
<span class="identifier">inform_extension</span><span class="plain"> *</span><span class="identifier">at_E</span><span class="plain"> = </span><span class="functiontext">Sentences::Headings::get_extension_containing</span><span class="plain">(</span><span class="identifier">at_heading</span><span class="plain">);</span>
|
||||
<span class="identifier">heading</span><span class="plain"> *</span><span class="identifier">at_heading</span><span class="plain"> = </span><span class="identifier">Headings::of_wording</span><span class="plain">(</span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">t</span><span class="plain">-</span><span class="element">>table_created_at</span><span class="plain">-</span><span class="element">>source_table</span><span class="plain">));</span>
|
||||
<span class="identifier">inform_extension</span><span class="plain"> *</span><span class="identifier">at_E</span><span class="plain"> = </span><span class="identifier">Headings::get_extension_containing</span><span class="plain">(</span><span class="identifier">at_heading</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">E</span><span class="plain"> == </span><span class="identifier">at_E</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
|
|
@ -323,14 +323,14 @@ what looks like text into grammar for parsing.
|
|||
|
||||
|
||||
<pre class="display">
|
||||
<span class="plain"><</span><span class="reserved">table</span><span class="plain">-</span><span class="identifier">column</span><span class="plain">-</span><span class="reserved">heading</span><span class="plain">> ::=</span>
|
||||
<span class="plain"><</span><span class="reserved">table</span><span class="plain">-</span><span class="identifier">column</span><span class="plain">-</span><span class="identifier">heading</span><span class="plain">> ::=</span>
|
||||
<span class="plain">( *** ) | ==> </span><<span class="cwebmacro">Issue PM_TableColumnBracketed problem</span> <span class="cwebmacronumber">11.3</span>>
|
||||
<span class="plain"><</span><span class="identifier">s</span><span class="plain">-</span><span class="reserved">table</span><span class="plain">-</span><span class="identifier">column</span><span class="plain">-</span><span class="identifier">name</span><span class="plain">> ( ... ) | ==> </span><span class="constant">EXISTING_TC</span><span class="plain">; *</span><span class="identifier">XP</span><span class="plain"> = </span><span class="identifier">RP</span><span class="plain">[1]; <<</span><span class="identifier">k1</span><span class="plain">>> = </span><span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">WR</span><span class="plain">[1]); <<</span><span class="identifier">k2</span><span class="plain">>> = </span><span class="identifier">Wordings::last_wn</span><span class="plain">(</span><span class="identifier">WR</span><span class="plain">[1]);</span>
|
||||
<span class="plain"><</span><span class="reserved">table</span><span class="plain">-</span><span class="identifier">column</span><span class="plain">-</span><span class="reserved">heading</span><span class="plain">-</span><span class="identifier">unbracketed</span><span class="plain">> ( ... ) | ==> </span><span class="identifier">R</span><span class="plain">[1]; </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain">[1] != </span><span class="constant">NEW_TC_PROBLEM</span><span class="plain">) *</span><span class="identifier">X</span><span class="plain"> = </span><span class="constant">NEW_TC_WITH_KIND</span><span class="plain">; <<</span><span class="identifier">k1</span><span class="plain">>> = </span><span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">WR</span><span class="plain">[1]); <<</span><span class="identifier">k2</span><span class="plain">>> = </span><span class="identifier">Wordings::last_wn</span><span class="plain">(</span><span class="identifier">WR</span><span class="plain">[1]);</span>
|
||||
<span class="plain"><</span><span class="reserved">table</span><span class="plain">-</span><span class="identifier">column</span><span class="plain">-</span><span class="identifier">heading</span><span class="plain">-</span><span class="identifier">unbracketed</span><span class="plain">> ( ... ) | ==> </span><span class="identifier">R</span><span class="plain">[1]; </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain">[1] != </span><span class="constant">NEW_TC_PROBLEM</span><span class="plain">) *</span><span class="identifier">X</span><span class="plain"> = </span><span class="constant">NEW_TC_WITH_KIND</span><span class="plain">; <<</span><span class="identifier">k1</span><span class="plain">>> = </span><span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">WR</span><span class="plain">[1]); <<</span><span class="identifier">k2</span><span class="plain">>> = </span><span class="identifier">Wordings::last_wn</span><span class="plain">(</span><span class="identifier">WR</span><span class="plain">[1]);</span>
|
||||
<span class="plain"><</span><span class="identifier">s</span><span class="plain">-</span><span class="reserved">table</span><span class="plain">-</span><span class="identifier">column</span><span class="plain">-</span><span class="identifier">name</span><span class="plain">> | ==> </span><span class="constant">EXISTING_TC</span><span class="plain">; *</span><span class="identifier">XP</span><span class="plain"> = </span><span class="identifier">RP</span><span class="plain">[1]; <<</span><span class="identifier">k1</span><span class="plain">>> = -1; <<</span><span class="identifier">k2</span><span class="plain">>> = -1;</span>
|
||||
<span class="plain"><</span><span class="reserved">table</span><span class="plain">-</span><span class="identifier">column</span><span class="plain">-</span><span class="reserved">heading</span><span class="plain">-</span><span class="identifier">unbracketed</span><span class="plain">> ==> </span><span class="identifier">R</span><span class="plain">[1]</span>
|
||||
<span class="plain"><</span><span class="reserved">table</span><span class="plain">-</span><span class="identifier">column</span><span class="plain">-</span><span class="identifier">heading</span><span class="plain">-</span><span class="identifier">unbracketed</span><span class="plain">> ==> </span><span class="identifier">R</span><span class="plain">[1]</span>
|
||||
|
||||
<span class="plain"><</span><span class="reserved">table</span><span class="plain">-</span><span class="identifier">column</span><span class="plain">-</span><span class="reserved">heading</span><span class="plain">-</span><span class="identifier">unbracketed</span><span class="plain">> ::=</span>
|
||||
<span class="plain"><</span><span class="reserved">table</span><span class="plain">-</span><span class="identifier">column</span><span class="plain">-</span><span class="identifier">heading</span><span class="plain">-</span><span class="identifier">unbracketed</span><span class="plain">> ::=</span>
|
||||
<span class="plain"><</span><span class="identifier">article</span><span class="plain">> | ==> </span><<span class="cwebmacro">Issue PM_TableColumnArticle problem</span> <span class="cwebmacronumber">11.1</span>>
|
||||
<span class="plain">{</span><span class="identifier">topic</span><span class="plain">} | ==> </span><span class="constant">NEW_TC_TOPIC</span>
|
||||
<span class="plain">{<</span><span class="reserved">property</span><span class="plain">-</span><span class="identifier">name</span><span class="plain">>} | ==> </span><span class="constant">NEW_TC_WITHOUT_KIND</span>
|
||||
|
@ -420,7 +420,7 @@ text of any explicit kind declaration used within it.
|
|||
<span class="identifier">table_cell_col</span><span class="plain"> = -1;</span>
|
||||
<span class="identifier">table_being_examined</span><span class="plain"> = </span><span class="identifier">t</span><span class="plain">;</span>
|
||||
<span class="plain">*</span><span class="identifier">EXPW</span><span class="plain"> = </span><span class="identifier">EMPTY_WORDING</span><span class="plain">;</span>
|
||||
<span class="plain"><</span><span class="reserved">table</span><span class="plain">-</span><span class="identifier">column</span><span class="plain">-</span><span class="reserved">heading</span><span class="plain">>(</span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="plain"><</span><span class="reserved">table</span><span class="plain">-</span><span class="identifier">column</span><span class="plain">-</span><span class="identifier">heading</span><span class="plain">>(</span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="reserved">table_column</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">kind</span><span class="plain"> *</span><span class="identifier">K</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="reserved">switch</span><span class="plain"> (<<</span><span class="identifier">r</span><span class="plain">>>) {</span>
|
||||
|
@ -472,7 +472,7 @@ hasn't been created yet; but we'll catch it later.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">W</span><span class="plain"> = </span><span class="identifier">GET_RW</span><span class="plain">(<</span><span class="reserved">table</span><span class="plain">-</span><span class="identifier">column</span><span class="plain">-</span><span class="reserved">heading</span><span class="plain">-</span><span class="identifier">unbracketed</span><span class="plain">>, 1);</span>
|
||||
<span class="identifier">W</span><span class="plain"> = </span><span class="identifier">GET_RW</span><span class="plain">(<</span><span class="reserved">table</span><span class="plain">-</span><span class="identifier">column</span><span class="plain">-</span><span class="identifier">heading</span><span class="plain">-</span><span class="identifier">unbracketed</span><span class="plain">>, 1);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Assertions::Creator::vet_name</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">)) </span><span class="identifier">tc</span><span class="plain"> = </span><span class="functiontext">Tables::Columns::new_table_column</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
</pre>
|
||||
|
|
|
@ -86,7 +86,7 @@ name, meaning as yet unknown).
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TableDefiningTheImpossible</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TableDefiningTheImpossible</span><span class="plain">),</span>
|
||||
<span class="string">"you can only use 'defined by' to set up values and things"</span><span class="plain">,</span>
|
||||
<span class="string">"as created with sentences like 'The tree species are defined by Table 1.' "</span>
|
||||
<span class="string">"or 'Some men are defined by the Table of Eligible Bachelors.'"</span><span class="plain">);</span>
|
||||
|
@ -130,7 +130,7 @@ name, meaning as yet unknown).
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="plain">*</span><span class="identifier">X</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TableUndefined</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TableUndefined</span><span class="plain">),</span>
|
||||
<span class="string">"you can only use 'defined by' in terms of a table"</span><span class="plain">,</span>
|
||||
<span class="string">"which lists the value names in the first column."</span><span class="plain">);</span>
|
||||
</pre>
|
||||
|
@ -275,7 +275,7 @@ connection with ordinary tables.
|
|||
<span class="reserved">return</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">t</span><span class="plain">) && (</span><span class="identifier">t</span><span class="plain">-</span><span class="element">>has_been_amended</span><span class="plain">) && (</span><span class="identifier">Kinds::Compare::le</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">, </span><span class="identifier">K_object</span><span class="plain">))) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TableCantDefineAndAmend</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TableCantDefineAndAmend</span><span class="plain">),</span>
|
||||
<span class="string">"you can't use 'defined by' to define objects using a table "</span>
|
||||
<span class="string">"which is amended by another table"</span><span class="plain">,</span>
|
||||
<span class="string">"since that could too easily lead to ambiguities about what "</span>
|
||||
|
@ -296,7 +296,7 @@ connection with ordinary tables.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TableDefiningObject</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TableDefiningObject</span><span class="plain">),</span>
|
||||
<span class="string">"you can only use 'defined by' to set up values and things"</span><span class="plain">,</span>
|
||||
<span class="string">"as created with sentences like 'The tree species are defined by Table 1.' "</span>
|
||||
<span class="string">"or 'Some men are defined by the Table of Eligible Bachelors.' - trying to "</span>
|
||||
|
@ -318,7 +318,7 @@ connection with ordinary tables.
|
|||
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"K is $u\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">K</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(2, </span><span class="identifier">K</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TableOfBuiltInKind</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TableOfBuiltInKind</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but this would mean making each of the names in "</span>
|
||||
<span class="string">"the first column %2 that's new. This is a kind which can't have "</span>
|
||||
|
@ -330,7 +330,7 @@ connection with ordinary tables.
|
|||
<span class="plain">(</span><span class="identifier">Kinds::Behaviour::is_uncertainly_defined</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(2, </span><span class="identifier">K</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TableOfExistingKind</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TableOfExistingKind</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but this would mean making each of the names in "</span>
|
||||
<span class="string">"the first column %2 that's new. That looks reasonable, since this is a "</span>
|
||||
|
@ -355,7 +355,7 @@ connection with ordinary tables.
|
|||
<pre class="displaydefn">
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Calculus::Propositions::contains_quantifier</span><span class="plain">(</span>
|
||||
<span class="functiontext">Specifications::to_proposition</span><span class="plain">(</span><span class="identifier">what</span><span class="plain">))) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TableOfQuantifiedKind</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TableOfQuantifiedKind</span><span class="plain">),</span>
|
||||
<span class="string">"you can't use 'defined by' a table while also talking about the "</span>
|
||||
<span class="string">"number of things to be defined"</span><span class="plain">,</span>
|
||||
<span class="string">"since that could too easily lead to contradictions. (So 'Six doors are "</span>
|
||||
|
@ -508,7 +508,7 @@ of the contents.)
|
|||
<span class="functiontext">Problems::quote_kind_of</span><span class="plain">(3, </span><span class="identifier">evaluation</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(4, </span><span class="identifier">K</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_number</span><span class="plain">(5, &</span><span class="identifier">row_count</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TableCreatedClash</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TableCreatedClash</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, and row %5 of the first column of that table is %2, which "</span>
|
||||
<span class="string">"I ought to create as a new value of %4. But I can't do that: it already "</span>
|
||||
|
|
442
docs/core-module/2-pwst.html
Normal file
442
docs/core-module/2-pwst.html
Normal file
|
@ -0,0 +1,442 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>2/si</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="Content-Language" content="en-gb">
|
||||
<link href="inweb.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<!--Weave of '2/pwst' generated by 7-->
|
||||
<ul class="crumbs"><li><a href="../webs.html">★</a></li><li><a href="index.html">core</a></li><li><a href="index.html#2">Chapter 2: Bridge to Problems Module</a></li><li><b>Problems With Source Text</b></li></ul><p class="purpose">Errors with the source text, either lexical issues or major syntactic ones, are found when Inbuild reads the text in: what this section does is to collect and issue those errors as tidy Inform problem messages.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP1"></a><b>§1. </b>To trigger all of the problems listed below, test with the <code class="display"><span class="extract">:inbuild</span></code>
|
||||
group.
|
||||
</p>
|
||||
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">SourceProblems::issue_problems_arising</span><span class="plain">(</span><span class="identifier">inbuild_copy</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">C</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain">;</span>
|
||||
<span class="identifier">copy_error</span><span class="plain"> *</span><span class="identifier">CE</span><span class="plain">;</span>
|
||||
<span class="identifier">LOOP_OVER_LINKED_LIST</span><span class="plain">(</span><span class="identifier">CE</span><span class="plain">, </span><span class="identifier">copy_error</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">-></span><span class="identifier">errors_reading_source_text</span><span class="plain">) {</span>
|
||||
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">error_category</span><span class="plain">) {</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">OPEN_FAILED_CE</span><span class="plain">:</span>
|
||||
<span class="identifier">Problems::quote_stream</span><span class="plain">(1, </span><span class="identifier">Filenames::get_leafname</span><span class="plain">(</span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">file</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">Untestable</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"I can't open the file '%1' of source text. %P"</span>
|
||||
<span class="string">"If you are using the 'Source' subfolder of Materials to "</span>
|
||||
<span class="string">"hold your source text, maybe your 'Contents.txt' has a "</span>
|
||||
<span class="string">"typo in it?"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">EXT_MISWORDED_CE</span><span class="plain">:</span>
|
||||
<span class="functiontext">Problems::quote_work</span><span class="plain">(1, </span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">copy</span><span class="plain">-></span><span class="identifier">found_by</span><span class="plain">-></span><span class="identifier">work</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_stream</span><span class="plain">(2, </span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">notes</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ExtMiswordedBeginsHere</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The extension %1, which your source text makes use of, seems to be "</span>
|
||||
<span class="string">"damaged or incorrect: its identifying opening line is wrong. "</span>
|
||||
<span class="string">"Specifically, %2."</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">KIT_MISWORDED_CE</span><span class="plain">:</span>
|
||||
<span class="functiontext">Problems::quote_work</span><span class="plain">(1, </span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">copy</span><span class="plain">-></span><span class="identifier">found_by</span><span class="plain">-></span><span class="identifier">work</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_stream</span><span class="plain">(2, </span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">notes</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">Untestable</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The kit %1, which your source text makes use of, seems to be "</span>
|
||||
<span class="string">"damaged or incorrect: its identifying opening line is wrong. "</span>
|
||||
<span class="string">"Specifically, %2."</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">EXT_TITLE_TOO_LONG_CE</span><span class="plain">: {</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">max</span><span class="plain"> = </span><span class="identifier">MAX_EXTENSION_TITLE_LENGTH</span><span class="plain">;</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">overage</span><span class="plain"> = </span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">details_N</span><span class="plain"> - </span><span class="identifier">MAX_EXTENSION_TITLE_LENGTH</span><span class="plain">;</span>
|
||||
<span class="functiontext">Problems::quote_work</span><span class="plain">(1, </span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">copy</span><span class="plain">-></span><span class="identifier">found_by</span><span class="plain">-></span><span class="identifier">work</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_number</span><span class="plain">(2, &</span><span class="identifier">max</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_number</span><span class="plain">(3, &</span><span class="identifier">overage</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ExtTitleTooLong</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The extension %1, which your source text makes use of, has a "</span>
|
||||
<span class="string">"title which is too long, exceeding the maximum allowed "</span>
|
||||
<span class="string">"(%2 characters) by %3."</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">EXT_AUTHOR_TOO_LONG_CE</span><span class="plain">: {</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">max</span><span class="plain"> = </span><span class="identifier">MAX_EXTENSION_AUTHOR_LENGTH</span><span class="plain">;</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">overage</span><span class="plain"> = </span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">details_N</span><span class="plain"> - </span><span class="identifier">MAX_EXTENSION_AUTHOR_LENGTH</span><span class="plain">;</span>
|
||||
<span class="functiontext">Problems::quote_work</span><span class="plain">(1, </span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">copy</span><span class="plain">-></span><span class="identifier">found_by</span><span class="plain">-></span><span class="identifier">work</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_number</span><span class="plain">(2, &</span><span class="identifier">max</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_number</span><span class="plain">(3, &</span><span class="identifier">overage</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ExtAuthorTooLong</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The extension %1, which your source text makes use of, has an "</span>
|
||||
<span class="string">"author name which is too long, exceeding the maximum allowed "</span>
|
||||
<span class="string">"(%2 characters) by %3."</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">LEXER_CE</span><span class="plain">:</span>
|
||||
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">error_subcategory</span><span class="plain">) {</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">STRING_TOO_LONG_LEXERERROR</span><span class="plain">:</span>
|
||||
<span class="identifier">Problems::Issue::lexical_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TooMuchQuotedText</span><span class="plain">),</span>
|
||||
<span class="string">"Too much text in quotation marks"</span><span class="plain">, </span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">word</span><span class="plain">,</span>
|
||||
<span class="string">"...\</span><span class="plain">"</span><span class="string"> The maximum length is very high, so this is more "</span>
|
||||
<span class="string">"likely to be because a close quotation mark was "</span>
|
||||
<span class="string">"forgotten."</span><span class="plain">);</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">WORD_TOO_LONG_LEXERERROR</span><span class="plain">:</span>
|
||||
<span class="identifier">Problems::Issue::lexical_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_WordTooLong</span><span class="plain">),</span>
|
||||
<span class="string">"Word too long"</span><span class="plain">, </span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">word</span><span class="plain">,</span>
|
||||
<span class="string">"(Individual words of unquoted text can run up to "</span>
|
||||
<span class="string">"128 letters long, which ought to be plenty. The longest "</span>
|
||||
<span class="string">"recognised place name in the English speaking world is "</span>
|
||||
<span class="string">"a hill in New Zealand called Taumatawhakatang-"</span>
|
||||
<span class="string">"ihangakoauauot-amateaturipukaka-pikimaunga-"</span>
|
||||
<span class="string">"horonuku-pokaiwhenuak-itanatahu. (You say tomato, "</span>
|
||||
<span class="string">"I say taumatawhakatang-...) The longest word found in a "</span>
|
||||
<span class="string">"classic novel is bababadalgharaghtakamminarronnkonnbronntonn"</span>
|
||||
<span class="string">"erronntuonnthunntrovarrhounawnskawntoohoohoordenenthurnuk, "</span>
|
||||
<span class="string">"creation's thunderclap from Finnegan's Wake. And both of those "</span>
|
||||
<span class="string">"words are fine.)"</span><span class="plain">);</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">I6_TOO_LONG_LEXERERROR</span><span class="plain">:</span>
|
||||
<span class="identifier">Problems::Issue::lexical_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">Untestable</span><span class="plain">), </span> <span class="comment">well, not at all conveniently</span>
|
||||
<span class="string">"Verbatim Inform 6 extract too long"</span><span class="plain">, </span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">word</span><span class="plain">,</span>
|
||||
<span class="string">"... -). The maximum length is quite high, so this "</span>
|
||||
<span class="string">"may be because a '-)' was forgotten. Still, if "</span>
|
||||
<span class="string">"you do need to paste a huge I6 program in, try "</span>
|
||||
<span class="string">"using several verbatim inclusions in a row."</span><span class="plain">);</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">STRING_NEVER_ENDS_LEXERERROR</span><span class="plain">:</span>
|
||||
<span class="identifier">Problems::Issue::lexical_problem_S</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_UnendingQuote</span><span class="plain">),</span>
|
||||
<span class="string">"Some source text ended in the middle of quoted text"</span><span class="plain">,</span>
|
||||
<span class="identifier">CE</span><span class="plain">-></span><span class="identifier">details</span><span class="plain">,</span>
|
||||
<span class="string">"This probably means that a quotation mark is missing "</span>
|
||||
<span class="string">"somewhere. If you are using Inform with syntax colouring, "</span>
|
||||
<span class="string">"look for where the quoted-text colour starts. (Sometimes "</span>
|
||||
<span class="string">"this problem turns up because a piece of quoted text contains "</span>
|
||||
<span class="string">"a text substitution in square brackets which in turn contains "</span>
|
||||
<span class="string">"another piece of quoted text - this is not allowed, and causes "</span>
|
||||
<span class="string">"me to lose track.)"</span><span class="plain">);</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">COMMENT_NEVER_ENDS_LEXERERROR</span><span class="plain">:</span>
|
||||
<span class="identifier">Problems::Issue::lexical_problem_S</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_UnendingComment</span><span class="plain">),</span>
|
||||
<span class="string">"Some source text ended in the middle of a comment"</span><span class="plain">,</span>
|
||||
<span class="identifier">CE</span><span class="plain">-></span><span class="identifier">details</span><span class="plain">,</span>
|
||||
<span class="string">"This probably means that a ']' is missing somewhere. "</span>
|
||||
<span class="string">"(If you are using Inform with syntax colouring, look for "</span>
|
||||
<span class="string">"where the comment colour starts.) Inform's convention on "</span>
|
||||
<span class="string">"'nested comments' is that each '[' in a comment must be "</span>
|
||||
<span class="string">"matched by a corresponding ']': so for instance '[This "</span>
|
||||
<span class="string">"[even nested like so] acts as a comment]' is a single "</span>
|
||||
<span class="string">"comment - the first ']' character matches the second '[' "</span>
|
||||
<span class="string">"and so doesn't end the comment: only the second ']' ends "</span>
|
||||
<span class="string">"the comment."</span><span class="plain">);</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">I6_NEVER_ENDS_LEXERERROR</span><span class="plain">:</span>
|
||||
<span class="identifier">Problems::Issue::lexical_problem_S</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_UnendingI6</span><span class="plain">),</span>
|
||||
<span class="string">"Some source text ended in the middle of a verbatim passage "</span>
|
||||
<span class="string">"of Inform 6 code"</span><span class="plain">,</span>
|
||||
<span class="identifier">CE</span><span class="plain">-></span><span class="identifier">details</span><span class="plain">,</span>
|
||||
<span class="string">"This probably means that a '-)' is missing."</span><span class="plain">);</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">default</span><span class="plain">:</span>
|
||||
<span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"unknown lexer error"</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">SYNTAX_CE</span><span class="plain">:</span>
|
||||
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">error_subcategory</span><span class="plain">) {</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">UnexpectedSemicolon_SYNERROR</span><span class="plain">:</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">NounPhrases::new_raw</span><span class="plain">(</span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">details_W</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_UnexpectedSemicolon</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The text %1 is followed by a semicolon ';', which only makes "</span>
|
||||
<span class="string">"sense to me inside a rule or phrase (where there's a heading, "</span>
|
||||
<span class="string">"then a colon, then a list of instructions divided by semicolons). "</span>
|
||||
<span class="string">"Perhaps you want a full stop '.' instead?"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">ParaEndsInColon_SYNERROR</span><span class="plain">:</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">NounPhrases::new_raw</span><span class="plain">(</span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">details_W</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ParaEndsInColon</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The text %1 seems to end a paragraph with a colon. (Rule declarations "</span>
|
||||
<span class="string">"can end a sentence with a colon, so maybe there's accidentally a "</span>
|
||||
<span class="string">"skipped line here?)"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">SentenceEndsInColon_SYNERROR</span><span class="plain">:</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">NounPhrases::new_raw</span><span class="plain">(</span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">details_W</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_SentenceEndsInColon</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The text %1 seems to have a colon followed by a full stop, which is "</span>
|
||||
<span class="string">"punctuation I don't understand."</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">SentenceEndsInSemicolon_SYNERROR</span><span class="plain">:</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">NounPhrases::new_raw</span><span class="plain">(</span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">details_W</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_SentenceEndsInSemicolon</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The text %1 seems to have a semicolon followed by a full stop, which is "</span>
|
||||
<span class="string">"punctuation I don't understand."</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">SemicolonAfterColon_SYNERROR</span><span class="plain">:</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">NounPhrases::new_raw</span><span class="plain">(</span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">details_W</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_SemicolonAfterColon</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The text %1 seems to have a semicolon following a colon, which is "</span>
|
||||
<span class="string">"punctuation I don't understand."</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">SemicolonAfterStop_SYNERROR</span><span class="plain">:</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">NounPhrases::new_raw</span><span class="plain">(</span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">details_W</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_SemicolonAfterStop</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The text %1 seems to have a semicolon following a full stop, which is "</span>
|
||||
<span class="string">"punctuation I don't understand."</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">HeadingOverLine_SYNERROR</span><span class="plain">:</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">NounPhrases::new_raw</span><span class="plain">(</span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">details_W</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(2, </span><span class="identifier">NounPhrases::new_raw</span><span class="plain">(</span><span class="identifier">Wordings::up_to</span><span class="plain">(</span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">details_W</span><span class="plain">, </span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">details_N</span><span class="plain">-1)));</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(3, </span><span class="identifier">NounPhrases::new_raw</span><span class="plain">(</span><span class="identifier">Wordings::from</span><span class="plain">(</span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">details_W</span><span class="plain">, </span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">details_N</span><span class="plain">)));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_HeadingOverLine</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The text %1 seems to be a heading, but contains a "</span>
|
||||
<span class="string">"line break, which is not allowed: so I am reading it "</span>
|
||||
<span class="string">"as just %2 and ignoring the continuation %3. The rule "</span>
|
||||
<span class="string">"is that a heading must be a single line which is the "</span>
|
||||
<span class="string">"only sentence in its paragraph, so there must be a "</span>
|
||||
<span class="string">"skipped line above and below."</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">HeadingStopsBeforeEndOfLine_SYNERROR</span><span class="plain">:</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">NounPhrases::new_raw</span><span class="plain">(</span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">details_W</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(2,</span>
|
||||
<span class="identifier">NounPhrases::new_raw</span><span class="plain">(</span><span class="identifier">Wordings::new</span><span class="plain">(</span><span class="identifier">Wordings::last_wn</span><span class="plain">(</span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">details_W</span><span class="plain">)+1, </span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">details_N</span><span class="plain">-1)));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_HeadingStopsBeforeEndOfLine</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The text %1 seems to be a heading, but does not occupy "</span>
|
||||
<span class="string">"the whole of its line of source text, which continues %2. "</span>
|
||||
<span class="string">"The rule is that a heading must occupy a whole single line "</span>
|
||||
<span class="string">"which is the only sentence in its paragraph, so there "</span>
|
||||
<span class="string">"must be a skipped line above and below. %P"</span>
|
||||
<span class="string">"A heading must not contain a colon ':' or any full stop "</span>
|
||||
<span class="string">"characters '.', even if they occur in an ellipsis '...' or a "</span>
|
||||
<span class="string">"number '2.3.13'. (I mention that because sometimes this problem "</span>
|
||||
<span class="string">"arises when a decimal point is misread as a full stop.)"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">ExtNoBeginsHere_SYNERROR</span><span class="plain">:</span>
|
||||
<span class="functiontext">Problems::Issue::extension_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ExtNoBeginsHere</span><span class="plain">),</span>
|
||||
<span class="identifier">ExtensionManager::from_copy</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">),</span>
|
||||
<span class="string">"has no 'begins here' sentence"</span><span class="plain">);</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">ExtNoEndsHere_SYNERROR</span><span class="plain">:</span>
|
||||
<span class="functiontext">Problems::Issue::extension_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ExtNoEndsHere</span><span class="plain">),</span>
|
||||
<span class="identifier">ExtensionManager::from_copy</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">),</span>
|
||||
<span class="string">"has no 'ends here' sentence"</span><span class="plain">);</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">ExtSpuriouslyContinues_SYNERROR</span><span class="plain">:</span>
|
||||
<span class="functiontext">Problems::Issue::extension_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ExtSpuriouslyContinues</span><span class="plain">),</span>
|
||||
<span class="identifier">ExtensionManager::from_copy</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">),</span>
|
||||
<span class="string">"continues after the 'ends here' sentence"</span><span class="plain">);</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">ExtMultipleEndsHere_SYNERROR</span><span class="plain">:</span>
|
||||
<span class="functiontext">Problems::Issue::extension_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ExtMultipleEndsHere</span><span class="plain">),</span>
|
||||
<span class="identifier">ExtensionManager::from_copy</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">),</span>
|
||||
<span class="string">"has more than one 'ends here' sentence"</span><span class="plain">);</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">ExtMultipleBeginsHere_SYNERROR</span><span class="plain">:</span>
|
||||
<span class="functiontext">Problems::Issue::extension_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ExtMultipleBeginsHere</span><span class="plain">),</span>
|
||||
<span class="identifier">ExtensionManager::from_copy</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">),</span>
|
||||
<span class="string">"has more than one 'begins here' sentence"</span><span class="plain">);</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">ExtBeginsAfterEndsHere_SYNERROR</span><span class="plain">:</span>
|
||||
<span class="functiontext">Problems::Issue::extension_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ExtBeginsAfterEndsHere</span><span class="plain">),</span>
|
||||
<span class="identifier">ExtensionManager::from_copy</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">),</span>
|
||||
<span class="string">"has a further 'begins here' after an 'ends here'"</span><span class="plain">);</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">ExtEndsWithoutBegins_SYNERROR</span><span class="plain">:</span>
|
||||
<span class="functiontext">Problems::Issue::extension_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">),</span>
|
||||
<span class="identifier">ExtensionManager::from_copy</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">),</span>
|
||||
<span class="string">"has an 'ends here' with nothing having begun"</span><span class="plain">);</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">BadTitleSentence_SYNERROR</span><span class="plain">:</span>
|
||||
<span class="identifier">current_sentence</span><span class="plain"> = </span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">details_node</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadTitleSentence</span><span class="plain">),</span>
|
||||
<span class="string">"the initial bibliographic sentence can only be a title in double-quotes"</span><span class="plain">,</span>
|
||||
<span class="string">"possibly followed with 'by' and the name of the author."</span><span class="plain">);</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">UnknownLanguageElement_SYNERROR</span><span class="plain">:</span>
|
||||
<span class="identifier">current_sentence</span><span class="plain"> = </span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">details_node</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span>
|
||||
<span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_UnknownLanguageElement</span><span class="plain">),</span>
|
||||
<span class="string">"this heading contains a stipulation about the current "</span>
|
||||
<span class="string">"Inform language definition which I can't understand"</span><span class="plain">,</span>
|
||||
<span class="string">"and should be something like '(for Glulx external files "</span>
|
||||
<span class="string">"language element only)'."</span><span class="plain">);</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">UnknownVirtualMachine_SYNERROR</span><span class="plain">:</span>
|
||||
<span class="identifier">current_sentence</span><span class="plain"> = </span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">details_node</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span>
|
||||
<span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_UnknownVirtualMachine</span><span class="plain">),</span>
|
||||
<span class="string">"this heading contains a stipulation about the Setting "</span>
|
||||
<span class="string">"for story file format which I can't understand"</span><span class="plain">,</span>
|
||||
<span class="string">"and should be something like '(for Z-machine version 5 "</span>
|
||||
<span class="string">"or 8 only)' or '(for Glulx only)'."</span><span class="plain">);</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">UseElementWithdrawn_SYNERROR</span><span class="plain">:</span>
|
||||
<span class="identifier">current_sentence</span><span class="plain"> = </span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">details_node</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span>
|
||||
<span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_UseElementWithdrawn</span><span class="plain">),</span>
|
||||
<span class="string">"the ability to activate or deactivate compiler elements "</span>
|
||||
<span class="string">"in source text has been withdrawn"</span><span class="plain">,</span>
|
||||
<span class="string">"in favour of a new system with Inform kits."</span><span class="plain">);</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">IncludeExtQuoted_SYNERROR</span><span class="plain">:</span>
|
||||
<span class="identifier">current_sentence</span><span class="plain"> = </span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">details_node</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span>
|
||||
<span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_IncludeExtQuoted</span><span class="plain">),</span>
|
||||
<span class="string">"the name of an included extension should be given without double "</span>
|
||||
<span class="string">"quotes in an Include sentence"</span><span class="plain">,</span>
|
||||
<span class="string">"so for instance 'Include Oh My God by Janice Bing.' rather than "</span>
|
||||
<span class="string">"'Include \</span><span class="plain">"</span><span class="string">Oh My God\</span><span class="plain">"</span><span class="string"> by Janice Bing.')"</span><span class="plain">);</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">BogusExtension_SYNERROR</span><span class="plain">:</span>
|
||||
<span class="identifier">current_sentence</span><span class="plain"> = </span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">details_node</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BogusExtension</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"I can't find the extension requested by: %1. %P"</span>
|
||||
<span class="string">"You can get hold of extensions which people have made public at "</span>
|
||||
<span class="string">"the Inform website, www.inform7.com, or by using the Public "</span>
|
||||
<span class="string">"Library in the Extensions panel."</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">ExtVersionTooLow_SYNERROR</span><span class="plain">:</span>
|
||||
<span class="identifier">current_sentence</span><span class="plain"> = </span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">details_node</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_stream</span><span class="plain">(2, </span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">details</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ExtVersionTooLow</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"I can't find the right version of the extension requested by %1 - "</span>
|
||||
<span class="string">"I can only find %2. %P"</span>
|
||||
<span class="string">"You can get hold of extensions which people have made public at "</span>
|
||||
<span class="string">"the Inform website, www.inform7.com, or by using the Public "</span>
|
||||
<span class="string">"Library in the Extensions panel."</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">ExtVersionMalformed_SYNERROR</span><span class="plain">:</span>
|
||||
<span class="identifier">current_sentence</span><span class="plain"> = </span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">details_node</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span>
|
||||
<span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ExtVersionMalformed</span><span class="plain">),</span>
|
||||
<span class="string">"a version number must have the form N/DDDDDD"</span><span class="plain">,</span>
|
||||
<span class="string">"as in the example '2/040426' for release 2 made on 26 April 2004. "</span>
|
||||
<span class="string">"(The DDDDDD part is optional, so '3' is a legal version number too. "</span>
|
||||
<span class="string">"N must be between 1 and 999: in particular, there is no version 0.)"</span><span class="plain">);</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">ExtInadequateVM_SYNERROR</span><span class="plain">:</span>
|
||||
<span class="identifier">current_sentence</span><span class="plain"> = </span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">details_node</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_stream</span><span class="plain">(2, </span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">details</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ExtInadequateVM</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1: but my copy of that extension stipulates that it "</span>
|
||||
<span class="string">"is '%2'. That means it can only be used with certain of "</span>
|
||||
<span class="string">"the possible compiled story file formats, and at the "</span>
|
||||
<span class="string">"moment, we don't fit the requirements. (You can change "</span>
|
||||
<span class="string">"the format used for this project on the Settings panel.)"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">ExtMisidentifiedEnds_SYNERROR</span><span class="plain">:</span>
|
||||
<span class="identifier">current_sentence</span><span class="plain"> = </span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">details_node</span><span class="plain">;</span>
|
||||
<span class="functiontext">Problems::quote_extension</span><span class="plain">(1, </span><span class="identifier">ExtensionManager::from_copy</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">details_W</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ExtMisidentifiedEnds</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The extension %1, which your source text makes use of, seems to be "</span>
|
||||
<span class="string">"malformed: its 'begins here' sentence correctly identifies it, but "</span>
|
||||
<span class="string">"then the 'ends here' sentence calls it '%2' instead. (They need "</span>
|
||||
<span class="string">"to be a matching pair except that the end does not name the "</span>
|
||||
<span class="string">"author: for instance, 'Hocus Pocus by Jan Ackerman begins here.' "</span>
|
||||
<span class="string">"would match with 'Hocus Pocus ends here.')"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">HeadingInPlaceOfUnincluded_SYNERROR</span><span class="plain">:</span>
|
||||
<span class="identifier">current_sentence</span><span class="plain"> = </span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">details_node</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_extension_id</span><span class="plain">(2, </span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">details_work</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span>
|
||||
<span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_HeadingInPlaceOfUnincluded</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In the sentence %1, it looks as if you intend to replace a section "</span>
|
||||
<span class="string">"of source text from the extension '%2', but no extension of that "</span>
|
||||
<span class="string">"name has been included - so it is not possible to replace any of its "</span>
|
||||
<span class="string">"headings."</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">UnequalHeadingInPlaceOf_SYNERROR</span><span class="plain">:</span>
|
||||
<span class="identifier">current_sentence</span><span class="plain"> = </span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">details_node</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span>
|
||||
<span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_UnequalHeadingInPlaceOf</span><span class="plain">),</span>
|
||||
<span class="string">"these headings are not of the same level"</span><span class="plain">,</span>
|
||||
<span class="string">"so it is not possible to make the replacement. (Level here means "</span>
|
||||
<span class="string">"being a Volume, Book, Part, Chapter or Section: for instance, "</span>
|
||||
<span class="string">"only a Chapter heading can be used 'in place of' a Chapter.)"</span><span class="plain">);</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">HeadingInPlaceOfSubordinate_SYNERROR</span><span class="plain">:</span>
|
||||
<span class="identifier">current_sentence</span><span class="plain"> = </span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">details_node</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_extension_id</span><span class="plain">(2, </span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">details_work</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(3, </span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">details_node2</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_extension_id</span><span class="plain">(4, </span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">details_work2</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_HeadingInPlaceOfSubordinate</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In the sentence %1, it looks as if you intend to replace a section "</span>
|
||||
<span class="string">"of source text from the extension '%2', but that doesn't really make "</span>
|
||||
<span class="string">"sense because this new piece of source text is part of a superior "</span>
|
||||
<span class="string">"heading ('%3') which is already being replaced spliced into '%4'."</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">HeadingInPlaceOfUnknown_SYNERROR</span><span class="plain">:</span>
|
||||
<span class="identifier">current_sentence</span><span class="plain"> = </span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">details_node</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_extension_id</span><span class="plain">(2, </span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">details_work</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(3, </span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">details_W</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_stream</span><span class="plain">(4, </span><span class="identifier">CE</span><span class="plain">-></span><span class="identifier">details</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_HeadingInPlaceOfUnknown</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In the sentence %1, it looks as if you intend to replace a section "</span>
|
||||
<span class="string">"of source text from the extension '%2', but that extension does "</span>
|
||||
<span class="string">"not seem to have any heading called '%3'. (The version I loaded "</span>
|
||||
<span class="string">"was %4.)"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">default</span><span class="plain">:</span>
|
||||
<span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"unknown syntax error"</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">default</span><span class="plain">: </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"an unknown error occurred"</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function SourceProblems::issue_problems_arising is used in 1/wtc (<a href="1-wtc.html#SP3">§3</a>).</p>
|
||||
|
||||
<hr class="tocbar">
|
||||
<ul class="toc"><li><a href="2-si.html">Back to 'Supplementary Issues'</a></li><li><i>(This section ends Chapter 2: Bridge to Problems Module.)</i></li></ul><hr class="tocbar">
|
||||
<!--End of weave-->
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -23,14 +23,14 @@ contradiction of some kind:
|
|||
<span class="reserved">char</span><span class="plain"> *</span><span class="identifier">message</span><span class="plain">, </span><span class="reserved">char</span><span class="plain"> *</span><span class="identifier">explanation</span><span class="plain">) {</span>
|
||||
<span class="identifier">ACT_ON_SIGIL</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">current_sentence</span><span class="plain"> == </span><span class="identifier">other_sentence</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">PASS_SIGIL</span><span class="plain">, </span><span class="identifier">message</span><span class="plain">, </span><span class="identifier">explanation</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">PASS_SIGIL</span><span class="plain">, </span><span class="identifier">message</span><span class="plain">, </span><span class="identifier">explanation</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(2, </span><span class="identifier">other_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_text</span><span class="plain">(3, </span><span class="identifier">message</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_text</span><span class="plain">(4, </span><span class="identifier">explanation</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="identifier">explanation</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">explanation</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but in another sentence %2: %Sagain, %%%Lbut %%%3%|, %4"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
|
@ -55,7 +55,7 @@ parse tree, and concerning an instance:
|
|||
<span class="functiontext">Problems::quote_object</span><span class="plain">(3, </span><span class="identifier">I</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_text</span><span class="plain">(4, </span><span class="identifier">message</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_text</span><span class="plain">(5, </span><span class="identifier">explanation</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="identifier">explanation</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">explanation</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Wordings::eq</span><span class="plain">(</span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">A</span><span class="plain">), </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">B</span><span class="plain">)) == </span><span class="identifier">FALSE</span><span class="plain">)</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="string">"You wrote %1, but in another sentence %2: "</span><span class="plain">);</span>
|
||||
<span class="reserved">else</span>
|
||||
|
@ -72,7 +72,7 @@ parse tree, and concerning an instance:
|
|||
<span class="functiontext">Problems::quote_subject</span><span class="plain">(3, </span><span class="identifier">infs</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_text</span><span class="plain">(4, </span><span class="identifier">message</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_text</span><span class="plain">(5, </span><span class="identifier">explanation</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="identifier">explanation</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">explanation</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Wordings::eq</span><span class="plain">(</span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">A</span><span class="plain">), </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">B</span><span class="plain">)) == </span><span class="identifier">FALSE</span><span class="plain">)</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="string">"You wrote %1, but in another sentence %2: "</span><span class="plain">);</span>
|
||||
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="string">"You wrote %1: "</span><span class="plain">);</span>
|
||||
|
@ -101,7 +101,7 @@ table we are in, yet still only cite a small part of it —
|
|||
<span class="functiontext">Problems::quote_table</span><span class="plain">(1, </span><span class="identifier">t</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">tc</span><span class="plain">) </span><span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">Nouns::nominative</span><span class="plain">(</span><span class="identifier">tc</span><span class="plain">-</span><span class="element">>name</span><span class="plain">));</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">data</span><span class="plain">) </span><span class="identifier">Problems::quote_source</span><span class="plain">(3, </span><span class="identifier">data</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="string">""</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="string">""</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="identifier">message</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -121,7 +121,7 @@ table we are in, yet still only cite a small part of it —
|
|||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">eqn</span><span class="plain">-</span><span class="element">>equation_text</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_text</span><span class="plain">(3, </span><span class="identifier">p</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="string">""</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="string">""</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="string">"In %1, you define an equation '%2': but "</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="identifier">text</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
|
@ -132,7 +132,7 @@ table we are in, yet still only cite a small part of it —
|
|||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">eqn</span><span class="plain">-</span><span class="element">>equation_text</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_stream</span><span class="plain">(3, </span><span class="identifier">p</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="string">""</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="string">""</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="string">"In %1, you define an equation '%2': but "</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="identifier">text</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
|
@ -143,7 +143,7 @@ table we are in, yet still only cite a small part of it —
|
|||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_text</span><span class="plain">(3, </span><span class="identifier">text</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="string">""</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="string">""</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In %1, you define an equation which mentions the symbol '%2': but %3"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
|
@ -169,7 +169,7 @@ table we are in, yet still only cite a small part of it —
|
|||
<span class="identifier">Problems::quote_stream</span><span class="plain">(2, </span><span class="reserved">definition</span><span class="plain">);</span>
|
||||
<span class="identifier">wording</span><span class="plain"> </span><span class="identifier">XW</span><span class="plain"> = </span><span class="functiontext">Phrases::Usage::get_preamble_text</span><span class="plain">(&(</span><span class="identifier">ph</span><span class="plain">-</span><span class="element">>usage_data</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::quote_wording_as_source</span><span class="plain">(3, </span><span class="identifier">XW</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="string">""</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="string">""</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, which I read as making use of the phrase %3. This in turn "</span>
|
||||
<span class="string">"has what's called an 'inline' definition, written in a technical notation "</span>
|
||||
|
@ -195,7 +195,7 @@ table we are in, yet still only cite a small part of it —
|
|||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">tck</span><span class="plain">-</span><span class="element">>ew_text</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_text</span><span class="plain">(3, </span><span class="identifier">tck</span><span class="plain">-</span><span class="element">>intention</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="string">""</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="string">""</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In the sentence %1, it looks as if you intend '%2' to %3, but "</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="identifier">prototype</span><span class="plain">);</span>
|
||||
|
@ -223,7 +223,7 @@ these problems at any particular sentence.
|
|||
<span class="functiontext">Problems::quote_object</span><span class="plain">(1, </span><span class="identifier">I</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_text</span><span class="plain">(2, </span><span class="identifier">message</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_text</span><span class="plain">(3, </span><span class="identifier">explanation</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="identifier">explanation</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">explanation</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="string">"The %1 %2%|, %3"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -235,7 +235,7 @@ these problems at any particular sentence.
|
|||
<span class="identifier">Problems::quote_text</span><span class="plain">(2, </span><span class="identifier">message</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_text</span><span class="plain">(3, </span><span class="identifier">explanation</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_object</span><span class="plain">(4, </span><span class="identifier">I</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="identifier">explanation</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">explanation</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="string">"You wrote %1, but the %4 %2%|, %3"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -247,7 +247,7 @@ these problems at any particular sentence.
|
|||
<span class="identifier">Problems::quote_text</span><span class="plain">(2, </span><span class="identifier">message</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_text</span><span class="plain">(3, </span><span class="identifier">explanation</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_subject</span><span class="plain">(4, </span><span class="identifier">infs</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="identifier">explanation</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">explanation</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="string">"You wrote %1, but the %4 %2%|, %3"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -278,12 +278,12 @@ we are dealing with is genuinely an object).
|
|||
<span class="identifier">wording</span><span class="plain"> </span><span class="identifier">W</span><span class="plain"> = </span><span class="functiontext">InferenceSubjects::get_name_text</span><span class="plain">(</span><span class="identifier">subj</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">W</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(4, </span><span class="identifier">NounPhrases::new_raw</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="identifier">explanation</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">explanation</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"I've made something called %4 but it %2%|, %3"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="identifier">explanation</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">explanation</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"I've made something called '%1' but it %2%|, %3"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
|
@ -312,7 +312,7 @@ making no sense.
|
|||
<span class="identifier">Problems::quote_text</span><span class="plain">(3, </span><span class="identifier">message</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_text</span><span class="plain">(4, </span><span class="identifier">explanation</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_property</span><span class="plain">(5, </span><span class="functiontext">World::Inferences::get_property</span><span class="plain">(</span><span class="identifier">inf</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="identifier">explanation</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">explanation</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %2: but the property %5 for the %1 %3%|, %4"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
|
@ -334,7 +334,7 @@ abstract, rather than with the actual property of some specific object.
|
|||
<span class="functiontext">Problems::quote_property</span><span class="plain">(1, </span><span class="identifier">prn</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_text</span><span class="plain">(2, </span><span class="identifier">message</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_text</span><span class="plain">(3, </span><span class="identifier">explanation</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="identifier">explanation</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">explanation</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="string">"The %1 %2%|, %3"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -353,7 +353,7 @@ abstract, rather than with the actual property of some specific object.
|
|||
<span class="identifier">ACT_ON_SIGIL</span>
|
||||
<span class="functiontext">Problems::quote_extension</span><span class="plain">(1, </span><span class="identifier">E</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_text</span><span class="plain">(2, </span><span class="identifier">message</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="identifier">message</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">message</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The extension %1, which your source text makes use of, %2."</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
|
@ -362,7 +362,7 @@ abstract, rather than with the actual property of some specific object.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Problems::Issue::extension_problem is used in 7/ss (<a href="7-ss.html#SP7_1">§7.1</a>, <a href="7-ss.html#SP7_2">§7.2</a>, <a href="7-ss.html#SP10">§10</a>).</p>
|
||||
<p class="endnote">The function Problems::Issue::extension_problem is used in 2/pwst (<a href="2-pwst.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP12"></a><b>§12. Releasing problems. </b>These occur when the release instructions do not make sense. Sometimes it's
|
||||
possible to pin down an exact place where the difficulty occurs, but
|
||||
|
@ -377,7 +377,7 @@ sometimes not.
|
|||
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">fn</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">fn</span><span class="plain">, </span><span class="string">"%f"</span><span class="plain">, </span><span class="identifier">name</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_stream</span><span class="plain">(2, </span><span class="identifier">fn</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="identifier">message</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">message</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="string">"A problem occurred with the 'Release along with...': "</span>
|
||||
<span class="string">"instructions: %1 (with the file '%2')"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
|
@ -390,7 +390,7 @@ sometimes not.
|
|||
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">pn</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">pn</span><span class="plain">, </span><span class="string">"%p"</span><span class="plain">, </span><span class="identifier">path</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_stream</span><span class="plain">(2, </span><span class="identifier">pn</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="identifier">message</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">message</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="string">"A problem occurred with the 'Release along with...': "</span>
|
||||
<span class="string">"instructions: %1 (with the file '%2')"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
|
@ -404,7 +404,7 @@ sometimes not.
|
|||
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">fn</span><span class="plain">, </span><span class="string">"%f"</span><span class="plain">, </span><span class="identifier">name</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_stream</span><span class="plain">(2, </span><span class="identifier">fn</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(3, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="identifier">message</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">message</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="string">"A problem occurred with the 'Release along with...': "</span>
|
||||
<span class="string">"instructions (%3): %1 (with the file '%2')"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
|
@ -430,7 +430,7 @@ own quaint syntax, and where there is syntax, there are error messages:
|
|||
<span class="identifier">ACT_ON_SIGIL</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">q</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_text</span><span class="plain">(2, </span><span class="identifier">message</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="string">""</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="string">""</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="string">"You gave as a hint in map-making: %1. %2"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -440,7 +440,7 @@ own quaint syntax, and where there is syntax, there are error messages:
|
|||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">q</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_text</span><span class="plain">(2, </span><span class="identifier">i_wanted_a</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(3, </span><span class="identifier">Wordings::one_word</span><span class="plain">(</span><span class="identifier">vw1</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="string">""</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="string">""</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You gave as a hint in map-making: %1. But the value '%3' did not "</span>
|
||||
<span class="string">"fit - it should have been %2."</span><span class="plain">);</span>
|
||||
|
@ -455,7 +455,7 @@ own quaint syntax, and where there is syntax, there are error messages:
|
|||
<p class="endnote">The function Problems::Issue::map_problem_wanted_but appears nowhere else.</p>
|
||||
|
||||
<hr class="tocbar">
|
||||
<ul class="toc"><li><a href="2-sq.html">Back to 'Supplementary Quotes'</a></li><li><i>(This section ends Chapter 2: Bridge to Problems Module.)</i></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="2-sq.html">Back to 'Supplementary Quotes'</a></li><li><a href="2-pwst.html">Continue with 'Problems With Source Text'</a></li></ul><hr class="tocbar">
|
||||
<!--End of weave-->
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -74,15 +74,15 @@ wouldn't auto-predeclare them; and there aren't so very many of them.)
|
|||
|
||||
<p class="endnote">The function Problems::expand_phrase appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function Problems::quote_extension is used in 2/si (<a href="2-si.html#SP11">§11</a>), 8/ef (<a href="8-ef.html#SP8">§8</a>), 8/ie (<a href="8-ie.html#SP9">§9</a>, <a href="8-ie.html#SP10">§10</a>).</p>
|
||||
<p class="endnote">The function Problems::quote_extension is used in 2/si (<a href="2-si.html#SP11">§11</a>), 2/pwst (<a href="2-pwst.html#SP1">§1</a>), 8/ef (<a href="8-ef.html#SP8">§8</a>).</p>
|
||||
|
||||
<p class="endnote">The function Problems::expand_extension appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function Problems::quote_copy is used in 8/ie (<a href="8-ie.html#SP9_1_1">§9.1.1</a>).</p>
|
||||
<p class="endnote">The function Problems::quote_copy appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function Problems::expand_copy appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function Problems::quote_work is used in 3/rst (<a href="3-rst.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Problems::quote_work is used in 2/pwst (<a href="2-pwst.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function Problems::expand_work appears nowhere else.</p>
|
||||
|
||||
|
@ -159,7 +159,7 @@ this as some kind of marginal will-never-happen case.
|
|||
|
||||
<p class="endnote">The function Problems::expand_invocation appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function Problems::quote_extension_id is used in 7/hdn (<a href="7-hdn.html#SP21_1">§21.1</a>, <a href="7-hdn.html#SP22_1">§22.1</a>, <a href="7-hdn.html#SP21_2">§21.2</a>).</p>
|
||||
<p class="endnote">The function Problems::quote_extension_id is used in 2/pwst (<a href="2-pwst.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function Problems::expand_extension_id appears nowhere else.</p>
|
||||
|
||||
|
|
|
@ -39,7 +39,7 @@ non-problem messages when everything was fine. That all happens here:
|
|||
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_count</span><span class="plain"> > 0) {</span>
|
||||
<span class="identifier">Problems::Buffer::redirect_problem_stream</span><span class="plain">(</span><span class="identifier">problems_file</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="string">"*"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="string">"*"</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">disaster_struck</span><span class="plain">) </span><<span class="cwebmacro">Issue problem summary for an internal error</span> <span class="cwebmacronumber">2.1</span>>
|
||||
<span class="reserved">else</span><span class="plain"> </span><<span class="cwebmacro">Issue problem summary for a run with problem messages</span> <span class="cwebmacronumber">2.2</span>><span class="plain">;</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
|
@ -157,7 +157,7 @@ command line — deserves the truth.
|
|||
<span class="identifier">Problems::Buffer::redirect_problem_stream</span><span class="plain">(</span><span class="identifier">problems_file</span><span class="plain">);</span>
|
||||
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain"> = </span><span class="identifier">problems_file</span><span class="plain">;</span>
|
||||
<span class="identifier">HTML_OPEN</span><span class="plain">(</span><span class="string">"p"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="string">"**"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="string">"**"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The %5-word source text has successfully been translated "</span>
|
||||
<span class="string">"into a world with %1 %2 and %3 %4, and the index has been "</span>
|
||||
|
@ -168,7 +168,7 @@ command line — deserves the truth.
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">telemetry_recording</span><span class="plain">) {</span>
|
||||
<span class="identifier">Telemetry::ensure_telemetry_file</span><span class="plain">();</span>
|
||||
<span class="identifier">Problems::Buffer::redirect_problem_stream</span><span class="plain">(</span><span class="identifier">telmy</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="string">"**"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="string">"**"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The %5-word source text has successfully been translated "</span>
|
||||
<span class="string">"into a world with %1 %2 and %3 %4, and the index has been "</span>
|
||||
|
@ -178,7 +178,7 @@ command line — deserves the truth.
|
|||
<span class="plain">}</span>
|
||||
<span class="identifier">Problems::Buffer::redirect_problem_stream</span><span class="plain">(</span><span class="identifier">STDOUT</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">STDOUT</span><span class="plain">, </span><span class="string">"\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="string">"**"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="string">"**"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The %5-word source text has successfully been translated "</span>
|
||||
<span class="string">"into an intermediate description which can be run through "</span>
|
||||
|
|
|
@ -70,7 +70,7 @@ instance has its own <code class="display"><span class="extract">equation_symbol
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The structure equation_symbol is accessed in 2/sq, 2/si, 3/pd, 5/lp, 5/ut, 5/un, 5/ins, 5/nv, 6/rlt, 6/nv, 7/ss, 7/hdn, 7/ns, 7/oaf, 7/rs, 8/ef, 8/ie, 9/tfa, 9/tbath, 9/rpt, 9/tc, 9/ma, 9/pk, 9/rk, 9/ass, 9/imp, 9/pd, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/pr, 15/ep, 15/vp, 15/cp, 15/spr, 16/is, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/rsft, 19/tod, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/pu, 22/dptd, 22/po, 22/pav, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/tti, 26/pc, 26/ts, 27/cm and here.</p>
|
||||
<p class="endnote">The structure equation_symbol is accessed in 2/sq, 2/si, 3/pd, 5/lp, 5/ut, 5/un, 5/ins, 5/nv, 6/rlt, 6/nv, 7/ns, 7/oaf, 7/rs, 8/ef, 9/tfa, 9/tbath, 9/rpt, 9/tc, 9/ma, 9/pk, 9/rk, 9/ass, 9/imp, 9/pd, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/pr, 15/ep, 15/vp, 15/cp, 15/spr, 16/is, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/rsft, 19/tod, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/pu, 22/dptd, 22/po, 22/pav, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/tti, 26/pc, 26/ts, 27/cm and here.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP4"></a><b>§4. </b>In addition, there are some standing symbols used by all equations: the
|
||||
constant "pi", for example. They're stored in this linked list:
|
||||
|
@ -171,19 +171,19 @@ value <code class="display"><span class="extract">pi</span></code>.
|
|||
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">sentence_handler</span><span class="plain"> </span><span class="identifier">EQUATION_SH_handler</span><span class="plain"> = { </span><span class="constant">EQUATION_NT</span><span class="plain">, -1, 0, </span><span class="identifier">NULL</span><span class="plain"> };</span>
|
||||
<span class="reserved">sentence_handler</span><span class="plain"> </span><span class="identifier">EQUATION_SH_handler</span><span class="plain"> = { </span><span class="identifier">EQUATION_NT</span><span class="plain">, -1, 0, </span><span class="identifier">NULL</span><span class="plain"> };</span>
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Equations::traverse_to_create</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
|
||||
<span class="identifier">ParseTree::traverse</span><span class="plain">(</span><span class="functiontext">Equations::visit_to_create</span><span class="plain">);</span>
|
||||
<span class="identifier">ParseTree::traverse</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="functiontext">Equations::visit_to_create</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Equations::visit_to_create</span><span class="plain">(</span><span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">p</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ParseTree::get_type</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">) == </span><span class="constant">EQUATION_NT</span><span class="plain">)</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ParseTree::get_type</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">) == </span><span class="identifier">EQUATION_NT</span><span class="plain">)</span>
|
||||
<span class="functiontext">Equations::new</span><span class="plain">(</span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">), </span><span class="identifier">FALSE</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Equations::traverse_to_create is used in 1/htc (<a href="1-htc.html#SP2_4">§2.4</a>).</p>
|
||||
<p class="endnote">The function Equations::traverse_to_create is used in 1/htc (<a href="1-htc.html#SP2_3">§2.3</a>).</p>
|
||||
|
||||
<p class="endnote">The function Equations::visit_to_create appears nowhere else.</p>
|
||||
|
||||
|
@ -281,7 +281,7 @@ We know that this begins with the word "equation", or we wouldn't be here
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="plain">*</span><span class="identifier">X</span><span class="plain"> = 0;</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_EquationMisnumbered</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_EquationMisnumbered</span><span class="plain">),</span>
|
||||
<span class="string">"the top line of this equation declaration seems not to be a "</span>
|
||||
<span class="string">"legal equation number or name"</span><span class="plain">,</span>
|
||||
<span class="string">"and should read something like 'Equation 6', or 'Equation - "</span>
|
||||
|
@ -359,7 +359,7 @@ We know that this begins with the word "equation", or we wouldn't be here
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Wordings::nonempty</span><span class="plain">(</span><span class="identifier">NA</span><span class="plain">)) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (<</span><span class="identifier">s</span><span class="plain">-</span><span class="identifier">type</span><span class="plain">-</span><span class="identifier">expression</span><span class="plain">-</span><span class="identifier">or</span><span class="plain">-</span><span class="identifier">value</span><span class="plain">>(</span><span class="identifier">NA</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Problems::quote_wording_as_source</span><span class="plain">(1, </span><span class="identifier">NA</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_EquationMisnamed</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_EquationMisnamed</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The equation name %1 will have to be disallowed as it is text "</span>
|
||||
<span class="string">"which already has a meaning to Inform. For instance, creating "</span>
|
||||
|
@ -419,7 +419,7 @@ source text:
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Equations::traverse_to_stock is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
<p class="endnote">The function Equations::traverse_to_stock is used in 1/htc (<a href="1-htc.html#SP2_7">§2.7</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP13"></a><b>§13. </b>And, as with creation, <code class="display"><span class="extract">Equations::examine</span></code> is called explicitly in the meaning
|
||||
list converter when an equation is found inline. So in all cases, we call the
|
||||
|
@ -641,7 +641,7 @@ mass, too.
|
|||
<pre class="displaydefn">
|
||||
<span class="plain">*</span><span class="identifier">X</span><span class="plain"> = -1;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (!</span><span class="identifier">preform_lookahead_mode</span><span class="plain">)</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_EquationSymbolMisdeclared</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_EquationSymbolMisdeclared</span><span class="plain">),</span>
|
||||
<span class="string">"the symbols here are not declared properly"</span><span class="plain">,</span>
|
||||
<span class="string">"and should each be declared with a kind of value or else an "</span>
|
||||
<span class="string">"actual value."</span><span class="plain">);</span>
|
||||
|
@ -2098,7 +2098,7 @@ section:
|
|||
<span class="identifier">Problems::quote_text</span><span class="plain">(6, </span><span class="string">"taking the cube root of"</span><span class="plain">);</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but that equation seems to involve %6 %4, which is not "</span>
|
||||
<span class="string">"good arithmetic."</span><span class="plain">);</span>
|
||||
|
@ -2139,7 +2139,7 @@ section:
|
|||
<span class="identifier">Problems::quote_text</span><span class="plain">(6, </span><span class="string">"combining"</span><span class="plain">); </span><span class="identifier">Problems::quote_text</span><span class="plain">(7, </span><span class="string">"with"</span><span class="plain">);</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_EquationBadArithmetic</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_EquationBadArithmetic</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but that equation seems to involve "</span>
|
||||
<span class="string">"%6 %4 %7 %5, which is not good arithmetic."</span><span class="plain">);</span>
|
||||
|
@ -2197,7 +2197,7 @@ for equations a value; they are never called.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Equations::compile is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function Equations::compile is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP44"></a><b>§44. </b>These identifiers are used to compile equation names as values, so:
|
||||
</p>
|
||||
|
@ -2295,7 +2295,7 @@ specified by (w_1, w_2), according to the equation <code class="display"><span c
|
|||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(3, </span><span class="identifier">eqn</span><span class="plain">-</span><span class="element">>equation_text</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_EquationBadTarget</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_EquationBadTarget</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In %1, you asked to let %2 be given by the equation '%3', "</span>
|
||||
<span class="string">"but '%2' isn't a symbol in that equation."</span><span class="plain">);</span>
|
||||
|
@ -2308,7 +2308,7 @@ specified by (w_1, w_2), according to the equation <code class="display"><span c
|
|||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(3, </span><span class="identifier">eqn</span><span class="plain">-</span><span class="element">>equation_text</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_spec</span><span class="plain">(4, </span><span class="identifier">to_solve</span><span class="plain">-</span><span class="element">>var_const</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_EquationConstantTarget</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_EquationConstantTarget</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In %1, you asked to let %2 be given by the equation '%3', "</span>
|
||||
<span class="string">"but '%2' isn't something which can vary freely in that equation - "</span>
|
||||
|
@ -2342,7 +2342,7 @@ potentially incorrect. Re-typechecking will recalculate these.
|
|||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(3, </span><span class="identifier">eqn</span><span class="plain">-</span><span class="element">>equation_text</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_EquationInsoluble</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_EquationInsoluble</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In %1, you asked to let %2 be given by the equation '%3', "</span>
|
||||
<span class="string">"but I am unable to rearrange the equation in any simple way "</span>
|
||||
|
@ -2415,7 +2415,7 @@ need to exist as local variables in the current stack frame.
|
|||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(3, </span><span class="identifier">eqn</span><span class="plain">-</span><span class="element">>equation_text</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(4, </span><span class="identifier">ev</span><span class="plain">-</span><span class="element">>name</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_EquationSymbolMissing</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_EquationSymbolMissing</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In %1, you asked to let %2 be given by the equation '%3', "</span>
|
||||
<span class="string">"but I can't see what to use for '%4'. The usual idea is "</span>
|
||||
|
@ -2465,7 +2465,7 @@ casting between quasinumerical kinds, we'll have to return to this.)
|
|||
<span class="identifier">Problems::quote_wording</span><span class="plain">(4, </span><span class="identifier">ev</span><span class="plain">-</span><span class="element">>name</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(5, </span><span class="identifier">K</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(6, </span><span class="identifier">ev</span><span class="plain">-</span><span class="element">>var_kind</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_EquationSymbolWrongKOV</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_EquationSymbolWrongKOV</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In %1, you asked to let %2 be given by the equation '%3', "</span>
|
||||
<span class="string">"but in that equation '%4' is supposedly %6 - whereas right "</span>
|
||||
|
@ -2562,7 +2562,7 @@ casting between quasinumerical kinds, we'll have to return to this.)
|
|||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Equations::enode_compilation_error</span><span class="plain">(</span><span class="reserved">equation</span><span class="plain"> *</span><span class="identifier">eqn</span><span class="plain">, </span><span class="reserved">equation_node</span><span class="plain"> *</span><span class="identifier">tok</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">eqn</span><span class="plain">-</span><span class="element">>equation_text</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_HardIntegerRoot</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_HardIntegerRoot</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In %1, you asked me to solve the equation '%2', but that would have "</span>
|
||||
<span class="string">"involved taking a tricky root of a whole number. Using real numbers "</span>
|
||||
|
|
|
@ -50,9 +50,9 @@
|
|||
|
||||
<p class="endnote">The structure activity is accessed in 2/sq, 2/si, 5/ins, 5/nv, 8/ef, 9/ma, 9/pk, 11/sm, 14/lv, 14/ds2, 15/pr, 15/ep, 15/vp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 22/pu, 22/dptd, 22/po, 22/pav, 25/cii, 26/uo, 26/ts and here.</p>
|
||||
|
||||
<p class="endnote">The structure activity_list is accessed in 3/pd, 5/lp, 5/ut, 5/un, 5/ins, 6/rlt, 6/nv, 7/ss, 7/hdn, 7/ns, 7/oaf, 7/rs, 8/ie, 9/tfa, 9/tbath, 9/rpt, 9/tc, 9/ma, 9/rk, 9/ass, 9/imp, 9/pd, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/tti, 26/pc, 26/ts, 27/cm and here.</p>
|
||||
<p class="endnote">The structure activity_list is accessed in 3/pd, 5/lp, 5/ut, 5/un, 5/ins, 6/rlt, 6/nv, 7/ns, 7/oaf, 7/rs, 9/tfa, 9/tbath, 9/rpt, 9/tc, 9/ma, 9/rk, 9/ass, 9/imp, 9/pd, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/tti, 26/pc, 26/ts, 27/cm and here.</p>
|
||||
|
||||
<p class="endnote">The structure activity_crossref is accessed in 3/pd, 5/lp, 5/ut, 5/un, 5/ins, 6/rlt, 6/nv, 7/ss, 7/hdn, 7/ns, 7/oaf, 7/rs, 8/ie, 9/tfa, 9/tbath, 9/rpt, 9/tc, 9/ma, 9/rk, 9/ass, 9/imp, 9/pd, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/tti, 26/pc, 26/ts, 27/cm and here.</p>
|
||||
<p class="endnote">The structure activity_crossref is accessed in 3/pd, 5/lp, 5/ut, 5/un, 5/ins, 6/rlt, 6/nv, 7/ns, 7/oaf, 7/rs, 9/tfa, 9/tbath, 9/rpt, 9/tc, 9/ma, 9/rk, 9/ass, 9/imp, 9/pd, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/tti, 26/pc, 26/ts, 27/cm and here.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP2"></a><b>§2. </b></p>
|
||||
|
||||
|
@ -190,7 +190,7 @@ noun for it; for example, the "announcing activity".
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="plain">*</span><span class="identifier">X</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ActivityNoteUnknown</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ActivityNoteUnknown</span><span class="plain">),</span>
|
||||
<span class="string">"one of the notes about this activity makes no sense"</span><span class="plain">,</span>
|
||||
<span class="string">"and should be either 'documented at SYMBOL' or 'future action'."</span><span class="plain">);</span>
|
||||
</pre>
|
||||
|
@ -212,7 +212,7 @@ noun for it; for example, the "announcing activity".
|
|||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">Kinds::Behaviour::definite</span><span class="plain">(</span><span class="identifier">creation_kind</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) &&</span>
|
||||
<span class="plain">(</span><span class="identifier">Kinds::Compare::eq</span><span class="plain">(</span><span class="identifier">creation_kind</span><span class="plain">, </span><span class="identifier">K_nil</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">)) {</span>
|
||||
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"I'm reading the kind as: $u\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">creation_kind</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ActivityIndefinite</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ActivityIndefinite</span><span class="plain">),</span>
|
||||
<span class="string">"this is an activity on a kind which isn't definite"</span><span class="plain">,</span>
|
||||
<span class="string">"and doesn't tell me enough about what sort of value the activity "</span>
|
||||
<span class="string">"should work on. For example, 'Divining is an activity on numbers' "</span>
|
||||
|
@ -230,7 +230,7 @@ noun for it; for example, the "announcing activity".
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Kinds::Compare::eq</span><span class="plain">(</span><span class="identifier">creation_kind</span><span class="plain">, </span><span class="identifier">K_nil</span><span class="plain">)) </span><span class="identifier">creation_kind</span><span class="plain"> = </span><span class="identifier">K_object</span><span class="plain">;</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Kinds::Compare::eq</span><span class="plain">(</span><span class="identifier">creation_kind</span><span class="plain">, </span><span class="identifier">K_nil</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ActivityMisnamed</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ActivityMisnamed</span><span class="plain">),</span>
|
||||
<span class="string">"the name of this activity implies that it acts on nothing"</span><span class="plain">,</span>
|
||||
<span class="string">"which doesn't fit with what you say about it. For example, "</span>
|
||||
<span class="string">"'Painting is an activity on brushes' isn't allowed because "</span>
|
||||
|
@ -253,7 +253,7 @@ noun for it; for example, the "announcing activity".
|
|||
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">spec</span><span class="plain"> = </span><span class="functiontext">Specifications::new_UNKNOWN</span><span class="plain">(</span><span class="identifier">av</span><span class="plain">-</span><span class="element">>name</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (!(</span><span class="identifier">ParseTree::is</span><span class="plain">(</span><span class="identifier">spec</span><span class="plain">, </span><span class="constant">UNKNOWN_NT</span><span class="plain">)) && (!(</span><span class="identifier">ParseTree::is</span><span class="plain">(</span><span class="identifier">spec</span><span class="plain">, </span><span class="constant">PROPERTY_VALUE_NT</span><span class="plain">)))) {</span>
|
||||
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"%W means $P\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">av</span><span class="plain">-</span><span class="element">>name</span><span class="plain">, </span><span class="identifier">spec</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadActivityName</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadActivityName</span><span class="plain">),</span>
|
||||
<span class="string">"this already has a meaning"</span><span class="plain">,</span>
|
||||
<span class="string">"and so cannot be the name of a newly created activity."</span><span class="plain">);</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
||||
|
@ -337,7 +337,7 @@ noun for it; for example, the "announcing activity".
|
|||
<span class="plain">*</span><span class="identifier">X</span><span class="plain"> = </span><span class="identifier">NOT_APPLICABLE</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ActivityVarAnd</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ActivityVarAnd</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, which I am reading as a request to make "</span>
|
||||
<span class="string">"a new named variable for an activity - a value associated "</span>
|
||||
|
@ -365,7 +365,7 @@ noun for it; for example, the "announcing activity".
|
|||
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ParseTree::get_type</span><span class="plain">(</span><span class="identifier">cnode</span><span class="plain">) == </span><span class="identifier">PROPER_NOUN_NT</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ActivityVariableNameless</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ActivityVariableNameless</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, which I am reading as a request to make "</span>
|
||||
<span class="string">"a new named variable for an activity - a value associated "</span>
|
||||
|
@ -391,7 +391,7 @@ noun for it; for example, the "announcing activity".
|
|||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">cnode</span><span class="plain">-</span><span class="element">>down</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ActivityVarOverspecific</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ActivityVarOverspecific</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, which I am reading as a request to make "</span>
|
||||
<span class="string">"a new named variable for an activity - a value associated "</span>
|
||||
|
@ -409,7 +409,7 @@ noun for it; for example, the "announcing activity".
|
|||
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Offending SP: $T"</span><span class="plain">, </span><span class="identifier">spec</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">cnode</span><span class="plain">-</span><span class="element">>down</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ActivityVarUnknownKOV</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ActivityVarUnknownKOV</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but '%2' is not the name of a kind of "</span>
|
||||
<span class="string">"value which I know (such as 'number' or 'text')."</span><span class="plain">);</span>
|
||||
|
@ -419,7 +419,7 @@ noun for it; for example, the "announcing activity".
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Kinds::Compare::eq</span><span class="plain">(</span><span class="functiontext">Specifications::to_kind</span><span class="plain">(</span><span class="identifier">spec</span><span class="plain">), </span><span class="identifier">K_value</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">cnode</span><span class="plain">-</span><span class="element">>down</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ActivityVarValue</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ActivityVarValue</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but saying that a variable is a 'value' "</span>
|
||||
<span class="string">"does not give me a clear enough idea what it will hold. "</span>
|
||||
|
@ -461,7 +461,7 @@ noun for it; for example, the "announcing activity".
|
|||
|
||||
<p class="endnote">The function Activities::add_variable is used in 9/ma (<a href="9-ma.html#SP3_3_25_1">§3.3.25.1</a>).</p>
|
||||
|
||||
<p class="endnote">The function Activities::activity_var_creators is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function Activities::activity_var_creators is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP9"></a><b>§9. Activity indexing. </b></p>
|
||||
|
||||
|
@ -907,15 +907,15 @@ values, of the kind to which the activity applies.
|
|||
|
||||
<p class="endnote">The function Activities::emit_activity_list is used in 22/prcd (<a href="22-prcd.html#SP10_5">§10.5</a>).</p>
|
||||
|
||||
<p class="endnote">The function Activities::compile_activity_constants is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function Activities::compile_activity_constants is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<p class="endnote">The function Activities::Activity_before_rulebooks_array is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function Activities::Activity_before_rulebooks_array is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<p class="endnote">The function Activities::Activity_for_rulebooks_array is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function Activities::Activity_for_rulebooks_array is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<p class="endnote">The function Activities::Activity_after_rulebooks_array is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function Activities::Activity_after_rulebooks_array is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<p class="endnote">The function Activities::Activity_atb_rulebooks_array is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function Activities::Activity_atb_rulebooks_array is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<p class="endnote">The function Activities::annotate_list_for_cross_references is used in 22/prcd (<a href="22-prcd.html#SP10_5">§10.5</a>).</p>
|
||||
|
||||
|
|
|
@ -119,7 +119,7 @@ its outcomes.
|
|||
|
||||
<p class="endnote">The structure named_rulebook_outcome is accessed in 2/sq, 2/si, 5/ins, 5/nv, 8/ef, 9/ma, 9/pk, 11/sm, 14/rv, 14/lv, 14/ds2, 15/pr, 15/ep, 15/vp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/tod, 20/eq, 21/rl, 21/rl2, 21/rps, 21/sv, 21/ac, 22/pu, 22/dptd, 22/po, 22/pav, 25/cii, 26/uo, 26/ts and here.</p>
|
||||
|
||||
<p class="endnote">The structure rulebook_outcome is accessed in 3/pd, 5/lp, 5/ut, 5/un, 5/ins, 6/rlt, 6/nv, 7/ss, 7/hdn, 7/ns, 7/oaf, 7/rs, 8/ie, 9/tfa, 9/tbath, 9/rpt, 9/tc, 9/ma, 9/rk, 9/ass, 9/imp, 9/pd, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/tti, 26/pc, 26/ts, 27/cm and here.</p>
|
||||
<p class="endnote">The structure rulebook_outcome is accessed in 3/pd, 5/lp, 5/ut, 5/un, 5/ins, 6/rlt, 6/nv, 7/ns, 7/oaf, 7/rs, 9/tfa, 9/tbath, 9/rpt, 9/tc, 9/ma, 9/rk, 9/ass, 9/imp, 9/pd, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/tti, 26/pc, 26/ts, 27/cm and here.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP5"></a><b>§5. </b></p>
|
||||
|
||||
|
@ -175,7 +175,7 @@ can be what rulebook does if it none of its rules cause an outcome.
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">outcomes_being_parsed</span><span class="plain">-</span><span class="element">>default_outcome_declared</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_DefaultOutcomeTwice</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_DefaultOutcomeTwice</span><span class="plain">),</span>
|
||||
<span class="string">"the default outcome for this rulebook has already been declared"</span><span class="plain">,</span>
|
||||
<span class="string">"and this is something which can only be done once."</span><span class="plain">);</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
||||
|
@ -194,7 +194,7 @@ can be what rulebook does if it none of its rules cause an outcome.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadDefaultOutcome</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadDefaultOutcome</span><span class="plain">),</span>
|
||||
<span class="string">"the default outcome given for the rulebook isn't what I expected"</span><span class="plain">,</span>
|
||||
<span class="string">"which would be one of 'default success', 'default failure' or "</span>
|
||||
<span class="string">"'default no outcome'."</span><span class="plain">);</span>
|
||||
|
@ -264,7 +264,7 @@ each of these still has one of the three results noted above; which will be
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="plain">*</span><span class="identifier">X</span><span class="plain"> = </span><span class="constant">UNRECOGNISED_OUTCOME</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadOutcomeClarification</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadOutcomeClarification</span><span class="plain">),</span>
|
||||
<span class="string">"the bracketed clarification isn't what I expected"</span><span class="plain">,</span>
|
||||
<span class="string">"which would be one of '(success)', '(failure)' or '(no outcome)'."</span><span class="plain">);</span>
|
||||
</pre>
|
||||
|
@ -283,7 +283,7 @@ each of these still has one of the three results noted above; which will be
|
|||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">def</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">default_rbno_flag</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">outcomes_being_parsed</span><span class="plain">-</span><span class="element">>default_named_outcome</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_DefaultNamedOutcomeTwice</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_DefaultNamedOutcomeTwice</span><span class="plain">),</span>
|
||||
<span class="string">"at most one of the named outcomes from a rulebook "</span>
|
||||
<span class="string">"can be the default"</span><span class="plain">,</span>
|
||||
<span class="string">"and here we seem to have two."</span><span class="plain">);</span>
|
||||
|
@ -291,7 +291,7 @@ each of these still has one of the three results noted above; which will be
|
|||
<span class="plain">}</span>
|
||||
<span class="identifier">def</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">outcomes_being_parsed</span><span class="plain">-</span><span class="element">>default_outcome_declared</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_DefaultOutcomeAlready</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_DefaultOutcomeAlready</span><span class="plain">),</span>
|
||||
<span class="string">"the default outcome for this rulebook has already "</span>
|
||||
<span class="string">"been declared"</span><span class="plain">,</span>
|
||||
<span class="string">"and this is something which can only be done once."</span><span class="plain">);</span>
|
||||
|
@ -309,7 +309,7 @@ each of these still has one of the three results noted above; which will be
|
|||
<span class="identifier">last</span><span class="plain"> = </span><span class="identifier">ro</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">dup</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_DuplicateOutcome</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_DuplicateOutcome</span><span class="plain">),</span>
|
||||
<span class="string">"this duplicates a previous assignment of the same outcome"</span><span class="plain">,</span>
|
||||
<span class="string">"and to the same rulebook."</span><span class="plain">);</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
||||
|
@ -608,7 +608,7 @@ can be used in a void context as a sort of return-from-rule phrase.
|
|||
|
||||
<p class="endnote">The function Rulebooks::Outcomes::index_outcomes is used in 21/rl2 (<a href="21-rl2.html#SP15">§15</a>).</p>
|
||||
|
||||
<p class="endnote">The function Rulebooks::Outcomes::RulebookOutcomePrintingRule is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
<p class="endnote">The function Rulebooks::Outcomes::RulebookOutcomePrintingRule is used in 1/htc (<a href="1-htc.html#SP2_7">§2.7</a>).</p>
|
||||
|
||||
<p class="endnote">The function Rulebooks::Outcomes::get_default_value is used in 13/rsfk (<a href="13-rsfk.html#SP5">§5</a>).</p>
|
||||
|
||||
|
@ -622,7 +622,7 @@ can be used in a void context as a sort of return-from-rule phrase.
|
|||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">parametrisation</span><span class="plain"> = </span><span class="constant">PARAMETER_FOCUS</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Kinds::Compare::eq</span><span class="plain">(</span><span class="identifier">parameter_kind</span><span class="plain">, </span><span class="identifier">K_action_name</span><span class="plain">)) </span><span class="identifier">parametrisation</span><span class="plain"> = </span><span class="constant">ACTION_FOCUS</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">Kinds::Behaviour::definite</span><span class="plain">(</span><span class="identifier">parameter_kind</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RulebookIndefinite</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RulebookIndefinite</span><span class="plain">),</span>
|
||||
<span class="string">"this is a rulebook for values of a kind which isn't definite"</span><span class="plain">,</span>
|
||||
<span class="string">"and doesn't tell me enough about what sort of value the rulebook "</span>
|
||||
<span class="string">"should work on. For example, 'The mystery rules are a number based "</span>
|
||||
|
|
|
@ -224,7 +224,7 @@ generated from the PHUD elsewhere.
|
|||
<span class="functiontext">Phrases::Usage::log</span><span class="plain">(</span><span class="identifier">phud</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">PW</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_MultipleCCR</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_MultipleCCR</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but the situation this refers to ('%2') is "</span>
|
||||
<span class="string">"not a single action. Rules in the form of 'check', 'carry "</span>
|
||||
|
|
|
@ -250,7 +250,7 @@ slightly differently. (Not all rule names do: those for timed events do not.)
|
|||
<span class="reserved">if</span><span class="plain"> (<</span><span class="identifier">unsuitable</span><span class="plain">-</span><span class="identifier">name</span><span class="plain">>(</span><span class="identifier">W</span><span class="plain">)) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">PM_RuleWithComma_issued_at</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">PM_RuleWithComma_issued_at</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">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RuleWithComma</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RuleWithComma</span><span class="plain">),</span>
|
||||
<span class="string">"a rule name is not allowed to contain punctuation, or "</span>
|
||||
<span class="string">"to consist only of an article like 'a' or 'an', or to "</span>
|
||||
<span class="string">"contain double-quoted text"</span><span class="plain">,</span>
|
||||
|
@ -442,7 +442,7 @@ conditions have not been met.
|
|||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">acl</span><span class="plain">-</span><span class="element">>text_of_condition</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadRuleConstraint</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadRuleConstraint</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In %1, you placed a constraint '%2' on a rule, but this isn't "</span>
|
||||
<span class="string">"a condition I can understand."</span><span class="plain">);</span>
|
||||
|
@ -591,7 +591,7 @@ about the kind of the rule; and this enables us to check for incompatibilities.
|
|||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(6, </span><span class="identifier">P2</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording_as_source</span><span class="plain">(7, </span><span class="identifier">R</span><span class="plain">-</span><span class="element">>kind_of_rule_set_from</span><span class="plain">-</span><span class="element">>primary_name</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording_as_source</span><span class="plain">(8, </span><span class="identifier">RB</span><span class="plain">-</span><span class="element">>primary_name</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RuleInIncompatibleRulebooks</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RuleInIncompatibleRulebooks</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You've asked to put the rule '%2' into the rulebook %8, "</span>
|
||||
<span class="string">"which is based on %5 and produces %6; but it was originally "</span>
|
||||
|
@ -704,7 +704,7 @@ it's perfectly typesafe to ignore the basis value entirely.
|
|||
<span class="identifier">Problems::quote_wording</span><span class="plain">(3, </span><span class="identifier">R</span><span class="plain">-</span><span class="element">>name</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(4, </span><span class="identifier">KR</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(5, </span><span class="identifier">KS</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RulesCantInterchange</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RulesCantInterchange</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In the sentence %1 you've asked to use the rule '%2' in "</span>
|
||||
<span class="string">"place of '%3', but one is based on %4 whereas the other "</span>
|
||||
|
@ -1304,7 +1304,7 @@ I wonder how useful this really is, but it was much requested at one time.
|
|||
<span class="identifier">Problems::quote_stream</span><span class="plain">(3, </span><span class="identifier">letter</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">c</span><span class="plain"> == 0) </span><span class="identifier">Problems::quote_text</span><span class="plain">(4, </span><span class="string">"no lettered responses at all"</span><span class="plain">);</span>
|
||||
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">Problems::quote_stream</span><span class="plain">(4, </span><span class="identifier">offers</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NoSuchResponse</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NoSuchResponse</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but the '%2' doesn't have a response "</span>
|
||||
<span class="string">"lettered '%3'. (It has %4.)"</span><span class="plain">);</span>
|
||||
|
@ -1373,7 +1373,7 @@ I wonder how useful this really is, but it was much requested at one time.
|
|||
|
||||
<p class="endnote">The function Rules::rule_defines_response is used in 17/ts (<a href="17-ts.html#SP11">§11</a>), 17/rs (<a href="17-rs.html#SP4">§4</a>, <a href="17-rs.html#SP7_1">§7.1</a>, <a href="17-rs.html#SP7_3_1">§7.3.1</a>, <a href="17-rs.html#SP12_1_1">§12.1.1</a>).</p>
|
||||
|
||||
<p class="endnote">The function Rules::check_response_usages is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function Rules::check_response_usages is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<p class="endnote">The function Rules::now_rule_defines_response is used in 17/rs (<a href="17-rs.html#SP12_1_1">§12.1.1</a>), 26/tti (<a href="26-tti.html#SP7">§7</a>).</p>
|
||||
|
||||
|
|
|
@ -120,7 +120,7 @@ have affected it in this way:
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The structure placement_affecting is accessed in 3/pd, 5/lp, 5/ut, 5/un, 5/ins, 6/rlt, 6/nv, 7/ss, 7/hdn, 7/ns, 7/oaf, 7/rs, 8/ie, 9/tfa, 9/tbath, 9/rpt, 9/tc, 9/ma, 9/rk, 9/ass, 9/imp, 9/pd, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/tti, 26/pc, 26/ts, 27/cm and here.</p>
|
||||
<p class="endnote">The structure placement_affecting is accessed in 3/pd, 5/lp, 5/ut, 5/un, 5/ins, 6/rlt, 6/nv, 7/ns, 7/oaf, 7/rs, 9/tfa, 9/tbath, 9/rpt, 9/tc, 9/ma, 9/rk, 9/ass, 9/imp, 9/pd, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/tti, 26/pc, 26/ts, 27/cm and here.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP6"></a><b>§6. </b>As rulebooks are declared, the first few are quietly copied into
|
||||
a small array: that way, we can always obtain a pointer to, say, the
|
||||
|
@ -204,7 +204,7 @@ phrase definitions and timed events don't open the rulebook name.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RulebookWithAt</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RulebookWithAt</span><span class="plain">),</span>
|
||||
<span class="string">"this would create a rulebook whose name begins with 'at'"</span><span class="plain">,</span>
|
||||
<span class="string">"which is forbidden since it would lead to ambiguities in "</span>
|
||||
<span class="string">"the way people write rules. A rule beginning with 'At' "</span>
|
||||
|
@ -224,7 +224,7 @@ phrase definitions and timed events don't open the rulebook name.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RulebookWithTo</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RulebookWithTo</span><span class="plain">),</span>
|
||||
<span class="string">"this would create a rulebook whose name begins with 'to'"</span><span class="plain">,</span>
|
||||
<span class="string">"which is forbidden since it would lead to ambiguities in "</span>
|
||||
<span class="string">"the way people write rules. A rule beginning with 'To' "</span>
|
||||
|
@ -244,7 +244,7 @@ phrase definitions and timed events don't open the rulebook name.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RulebookWithDefinition</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RulebookWithDefinition</span><span class="plain">),</span>
|
||||
<span class="string">"this would create a rulebook whose name begins with 'definition'"</span><span class="plain">,</span>
|
||||
<span class="string">"which is forbidden since it would lead to ambiguities in "</span>
|
||||
<span class="string">"the way people write rules. A rule beginning with 'Definition' "</span>
|
||||
|
@ -535,7 +535,7 @@ built (for instance, scene endings).
|
|||
<span class="plain">*</span><span class="identifier">X</span><span class="plain"> = </span><span class="identifier">NOT_APPLICABLE</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RulebookVariableAnd</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RulebookVariableAnd</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, which I am reading as a request to make "</span>
|
||||
<span class="string">"a new named variable for a rulebook - a value associated "</span>
|
||||
|
@ -556,7 +556,7 @@ built (for instance, scene endings).
|
|||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Rulebooks::add_variable</span><span class="plain">(</span><span class="reserved">rulebook</span><span class="plain"> *</span><span class="identifier">rb</span><span class="plain">, </span><span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">cnode</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ParseTree::get_type</span><span class="plain">(</span><span class="identifier">cnode</span><span class="plain">) != </span><span class="constant">PROPERTYCALLED_NT</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RulebookVarUncalled</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RulebookVarUncalled</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, which I am reading as a request to make "</span>
|
||||
<span class="string">"a new named variable for an rulebook - a value associated "</span>
|
||||
|
@ -579,7 +579,7 @@ built (for instance, scene endings).
|
|||
<span class="plain">(</span><span class="functiontext">Descriptions::is_qualified</span><span class="plain">(</span><span class="identifier">spec</span><span class="plain">))) {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">cnode</span><span class="plain">-</span><span class="element">>down</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RulebookVariableTooSpecific</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RulebookVariableTooSpecific</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, which I am reading as a request to make "</span>
|
||||
<span class="string">"a new named variable for a rulebook - a value associated "</span>
|
||||
|
@ -596,7 +596,7 @@ built (for instance, scene endings).
|
|||
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Offending SP: $T"</span><span class="plain">, </span><span class="identifier">spec</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">cnode</span><span class="plain">-</span><span class="element">>down</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RulebookVariableBadKind</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RulebookVariableBadKind</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but '%2' is not the name of a kind of "</span>
|
||||
<span class="string">"value which I know (such as 'number' or 'text')."</span><span class="plain">);</span>
|
||||
|
@ -608,7 +608,7 @@ built (for instance, scene endings).
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">K</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">cnode</span><span class="plain">-</span><span class="element">>down</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RulebookVariableKindless</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RulebookVariableKindless</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but I was expecting to see a kind of value there, "</span>
|
||||
<span class="string">"and '%2' isn't something I recognise as a kind."</span><span class="plain">);</span>
|
||||
|
@ -619,7 +619,7 @@ built (for instance, scene endings).
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Kinds::Compare::eq</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">, </span><span class="identifier">K_value</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">cnode</span><span class="plain">-</span><span class="element">>down</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RulebookVariableVague</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RulebookVariableVague</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but saying that a variable is a 'value' "</span>
|
||||
<span class="string">"does not give me a clear enough idea what it will hold. "</span>
|
||||
|
@ -673,7 +673,7 @@ built (for instance, scene endings).
|
|||
|
||||
<p class="endnote">The function Rulebooks::get_stv_creator_iname is used in <a href="#SP14_1">§14.1</a>.</p>
|
||||
|
||||
<p class="endnote">The function Rulebooks::rulebook_var_creators is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function Rulebooks::rulebook_var_creators is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP14_1"></a><b>§14.1. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Make slow lookup routine</span> <span class="cwebmacronumber">14.1</span>> =
|
||||
|
@ -1007,7 +1007,7 @@ sub-section on linked lists of booked rules in the section on Rules.
|
|||
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Rules::Bookings::get_rule</span><span class="plain">(</span><span class="identifier">the_new_rule</span><span class="plain">) == </span><span class="identifier">ref_rule</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">side</span><span class="plain"> != </span><span class="constant">INSTEAD_SIDE</span><span class="plain">)</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BeforeOrAfterSelf</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BeforeOrAfterSelf</span><span class="plain">),</span>
|
||||
<span class="string">"a rule can't be before or after itself"</span><span class="plain">,</span>
|
||||
<span class="string">"so this makes no sense to me."</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain">;</span>
|
||||
|
@ -1021,7 +1021,7 @@ sub-section on linked lists of booked rules in the section on Rules.
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ph</span><span class="plain">) {</span>
|
||||
<span class="identifier">action_name</span><span class="plain"> *</span><span class="identifier">an</span><span class="plain"> = </span><span class="functiontext">Phrases::Context::required_action</span><span class="plain">(&(</span><span class="identifier">ph</span><span class="plain">-</span><span class="element">>runtime_context_data</span><span class="plain">));</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">an</span><span class="plain">) && (</span><span class="identifier">PL::Actions::is_out_of_world</span><span class="plain">(</span><span class="identifier">an</span><span class="plain">)))</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_OOWinIWRulebook</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_OOWinIWRulebook</span><span class="plain">),</span>
|
||||
<span class="string">"this rulebook has no effect on actions which happen out of world"</span><span class="plain">,</span>
|
||||
<span class="string">"so I'm not going to let you file this rule in it. ('Check', "</span>
|
||||
<span class="string">"'Carry out' and 'Report' work fine for out of world actions: "</span>
|
||||
|
@ -1174,7 +1174,7 @@ parses the object noun phrase with the following:
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="plain">*</span><span class="identifier">X</span><span class="plain"> = </span><span class="identifier">NOT_APPLICABLE</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NonOutcomeProperty</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NonOutcomeProperty</span><span class="plain">),</span>
|
||||
<span class="string">"the only properties of a rulebook are its outcomes"</span><span class="plain">,</span>
|
||||
<span class="string">"for the time being at least."</span><span class="plain">);</span>
|
||||
</pre>
|
||||
|
@ -1513,13 +1513,13 @@ popular rulebooks, showing their contents in logical order.
|
|||
<span class="identifier">source_file</span><span class="plain"> *</span><span class="identifier">sf</span><span class="plain"> = </span><span class="identifier">Lexer::file_of_origin</span><span class="plain">(</span><span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">rb</span><span class="plain">-</span><span class="element">>primary_name</span><span class="plain">));</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">rb</span><span class="plain">-</span><span class="element">>automatically_generated</span><span class="plain">) </span><span class="reserved">continue</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (((</span><span class="identifier">E</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) && (</span><span class="identifier">sf</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)) ||</span>
|
||||
<span class="plain">(</span><span class="functiontext">SourceFiles::get_extension_corresponding</span><span class="plain">(</span><span class="identifier">sf</span><span class="plain">) == </span><span class="identifier">E</span><span class="plain">))</span>
|
||||
<span class="plain">(</span><span class="identifier">Extensions::corresponding_to</span><span class="plain">(</span><span class="identifier">sf</span><span class="plain">) == </span><span class="identifier">E</span><span class="plain">))</span>
|
||||
<span class="functiontext">Rulebooks::index_rules_box</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">rb</span><span class="plain">-</span><span class="element">>primary_name</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">rb</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, 1, </span><span class="identifier">TRUE</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="identifier">LOOP_OVER</span><span class="plain">(</span><span class="identifier">av</span><span class="plain">,</span><span class="reserved"> activity</span><span class="plain">) {</span>
|
||||
<span class="identifier">source_file</span><span class="plain"> *</span><span class="identifier">sf</span><span class="plain"> = </span><span class="identifier">Lexer::file_of_origin</span><span class="plain">(</span><span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">av</span><span class="plain">-</span><span class="element">>name</span><span class="plain">));</span>
|
||||
<span class="reserved">if</span><span class="plain"> (((</span><span class="identifier">E</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) && (</span><span class="identifier">sf</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)) ||</span>
|
||||
<span class="plain">(</span><span class="functiontext">SourceFiles::get_extension_corresponding</span><span class="plain">(</span><span class="identifier">sf</span><span class="plain">) == </span><span class="identifier">E</span><span class="plain">))</span>
|
||||
<span class="plain">(</span><span class="identifier">Extensions::corresponding_to</span><span class="plain">(</span><span class="identifier">sf</span><span class="plain">) == </span><span class="identifier">E</span><span class="plain">))</span>
|
||||
<span class="functiontext">Activities::index</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">av</span><span class="plain">, 1);</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
@ -1540,12 +1540,12 @@ popular rulebooks, showing their contents in logical order.
|
|||
<span class="identifier">source_file</span><span class="plain"> *</span><span class="identifier">sf</span><span class="plain"> = </span><span class="identifier">Lexer::file_of_origin</span><span class="plain">(</span><span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">rb</span><span class="plain">-</span><span class="element">>primary_name</span><span class="plain">));</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">rb</span><span class="plain">-</span><span class="element">>automatically_generated</span><span class="plain">) </span><span class="reserved">continue</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (((</span><span class="identifier">E</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) && (</span><span class="identifier">sf</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)) ||</span>
|
||||
<span class="plain">(</span><span class="functiontext">SourceFiles::get_extension_corresponding</span><span class="plain">(</span><span class="identifier">sf</span><span class="plain">) == </span><span class="identifier">E</span><span class="plain">)) </span><span class="identifier">nb</span><span class="plain">++;</span>
|
||||
<span class="plain">(</span><span class="identifier">Extensions::corresponding_to</span><span class="plain">(</span><span class="identifier">sf</span><span class="plain">) == </span><span class="identifier">E</span><span class="plain">)) </span><span class="identifier">nb</span><span class="plain">++;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="identifier">LOOP_OVER</span><span class="plain">(</span><span class="identifier">av</span><span class="plain">,</span><span class="reserved"> activity</span><span class="plain">) {</span>
|
||||
<span class="identifier">source_file</span><span class="plain"> *</span><span class="identifier">sf</span><span class="plain"> = </span><span class="identifier">Lexer::file_of_origin</span><span class="plain">(</span><span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">av</span><span class="plain">-</span><span class="element">>name</span><span class="plain">));</span>
|
||||
<span class="reserved">if</span><span class="plain"> (((</span><span class="identifier">E</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) && (</span><span class="identifier">sf</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)) ||</span>
|
||||
<span class="plain">(</span><span class="functiontext">SourceFiles::get_extension_corresponding</span><span class="plain">(</span><span class="identifier">sf</span><span class="plain">) == </span><span class="identifier">E</span><span class="plain">)) </span><span class="identifier">nb</span><span class="plain">++;</span>
|
||||
<span class="plain">(</span><span class="identifier">Extensions::corresponding_to</span><span class="plain">(</span><span class="identifier">sf</span><span class="plain">) == </span><span class="identifier">E</span><span class="plain">)) </span><span class="identifier">nb</span><span class="plain">++;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">nb</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
|
|
@ -220,7 +220,7 @@ subject and object NPs.
|
|||
<span class="plain">*</span><span class="identifier">X</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NoSuchRuleExists</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NoSuchRuleExists</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In %1, you gave '%2' where a rule was required."</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
|
@ -476,7 +476,7 @@ a given rule appears in, and (within limits) where. A simple example:
|
|||
<pre class="displaydefn">
|
||||
<span class="plain">*</span><span class="identifier">X</span><span class="plain"> = </span><span class="constant">BAD_RULE_PLACEMENT</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_UnspecifiedRulebookPlacement</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_UnspecifiedRulebookPlacement</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In %1, you didn't specify in which rulebook the rule was to "</span>
|
||||
<span class="string">"be listed, only which existing rule it should go before or "</span>
|
||||
|
@ -509,7 +509,7 @@ a given rule appears in, and (within limits) where. A simple example:
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ImproperRulePlacement</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ImproperRulePlacement</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In %1, you used the special verb 'to be listed' - which specifies "</span>
|
||||
<span class="string">"how rules are listed in rulebooks - in a way I didn't recognise. "</span>
|
||||
|
@ -530,7 +530,7 @@ a given rule appears in, and (within limits) where. A simple example:
|
|||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NoSuchRulebookPlacement</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NoSuchRulebookPlacement</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In %1, you gave '%2' where a rulebook was required."</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
|
@ -574,7 +574,7 @@ a given rule appears in, and (within limits) where. A simple example:
|
|||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">sense</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) &&</span>
|
||||
<span class="plain">((</span><span class="identifier">new_rule_placement</span><span class="plain"> != </span><span class="constant">MIDDLE_PLACEMENT</span><span class="plain">) || (</span><span class="identifier">side</span><span class="plain"> != </span><span class="constant">IN_SIDE</span><span class="plain">))) {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadRulePlacementNegation</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadRulePlacementNegation</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In %1, you used the special verb 'to be listed' - which specifies "</span>
|
||||
<span class="string">"how rules are listed in rulebooks - in a way too complicated to "</span>
|
||||
|
@ -610,7 +610,7 @@ a given rule appears in, and (within limits) where. A simple example:
|
|||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">the_rulebook</span><span class="plain">-</span><span class="element">>primary_name</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(3, </span><span class="identifier">relative_to_which</span><span class="plain">-</span><span class="element">>name</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_PlaceWithMissingRule</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_PlaceWithMissingRule</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In %1, you talk about the position of the rule '%3' "</span>
|
||||
<span class="string">"in the rulebook '%2', but in fact that rule isn't in this "</span>
|
||||
|
|
|
@ -52,11 +52,11 @@
|
|||
|
||||
<p class="endnote">The structure stacked_variable is accessed in 2/sq, 2/si, 5/ins, 5/nv, 8/ef, 9/ma, 9/pk, 11/sm, 14/lv, 14/ds2, 15/pr, 15/ep, 15/vp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/ac, 22/pu, 22/dptd, 22/po, 22/pav, 25/cii, 26/uo, 26/ts and here.</p>
|
||||
|
||||
<p class="endnote">The structure stacked_variable_list is accessed in 3/pd, 5/lp, 5/ut, 5/un, 5/ins, 6/rlt, 6/nv, 7/ss, 7/hdn, 7/ns, 7/oaf, 7/rs, 8/ie, 9/tfa, 9/tbath, 9/rpt, 9/tc, 9/ma, 9/rk, 9/ass, 9/imp, 9/pd, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/tti, 26/pc, 26/ts, 27/cm and here.</p>
|
||||
<p class="endnote">The structure stacked_variable_list is accessed in 3/pd, 5/lp, 5/ut, 5/un, 5/ins, 6/rlt, 6/nv, 7/ns, 7/oaf, 7/rs, 9/tfa, 9/tbath, 9/rpt, 9/tc, 9/ma, 9/rk, 9/ass, 9/imp, 9/pd, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/tti, 26/pc, 26/ts, 27/cm and here.</p>
|
||||
|
||||
<p class="endnote">The structure stacked_variable_owner is private to this section.</p>
|
||||
|
||||
<p class="endnote">The structure stacked_variable_owner_list is accessed in 3/pd, 5/lp, 5/ut, 5/un, 5/ins, 6/rlt, 6/nv, 7/ss, 7/hdn, 7/ns, 7/oaf, 7/rs, 8/ie, 9/tfa, 9/tbath, 9/rpt, 9/tc, 9/ma, 9/rk, 9/ass, 9/imp, 9/pd, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/tti, 26/pc, 26/ts, 27/cm and here.</p>
|
||||
<p class="endnote">The structure stacked_variable_owner_list is accessed in 3/pd, 5/lp, 5/ut, 5/un, 5/ins, 6/rlt, 6/nv, 7/ns, 7/oaf, 7/rs, 9/tfa, 9/tbath, 9/rpt, 9/tc, 9/ma, 9/rk, 9/ass, 9/imp, 9/pd, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/tti, 26/pc, 26/ts, 27/cm and here.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP2"></a><b>§2. </b></p>
|
||||
|
||||
|
|
|
@ -78,18 +78,18 @@ name of a new constant.
|
|||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Phrases::Manager::traverse_for_names</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
|
||||
<span class="functiontext">Phrases::Manager::advance_phrase_time_to</span><span class="plain">(</span><span class="constant">EARLY_MORNING_PHT</span><span class="plain">);</span>
|
||||
<span class="identifier">ParseTree::traverse</span><span class="plain">(</span><span class="functiontext">Phrases::Manager::visit_for_names</span><span class="plain">);</span>
|
||||
<span class="identifier">ParseTree::traverse</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="functiontext">Phrases::Manager::visit_for_names</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Phrases::Manager::visit_for_names</span><span class="plain">(</span><span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">p</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ParseTree::get_type</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">) == </span><span class="constant">ROUTINE_NT</span><span class="plain">)</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ParseTree::get_type</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">) == </span><span class="identifier">ROUTINE_NT</span><span class="plain">)</span>
|
||||
<span class="functiontext">Phrases::Usage::predeclare_name_in</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Phrases::Manager::traverse_for_names is used in 1/htc (<a href="1-htc.html#SP2_4">§2.4</a>).</p>
|
||||
<p class="endnote">The function Phrases::Manager::traverse_for_names is used in 1/htc (<a href="1-htc.html#SP2_3">§2.3</a>).</p>
|
||||
|
||||
<p class="endnote">The function Phrases::Manager::visit_for_names appears nowhere else.</p>
|
||||
|
||||
|
@ -113,8 +113,8 @@ to do anything when the assertion traverse reaches nodes of these types:
|
|||
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">sentence_handler</span><span class="plain"> </span><span class="identifier">COMMAND_SH_handler</span><span class="plain"> = { </span><span class="constant">INVOCATION_LIST_NT</span><span class="plain">, -1, 0, </span><span class="identifier">NULL</span><span class="plain"> };</span>
|
||||
<span class="reserved">sentence_handler</span><span class="plain"> </span><span class="identifier">ROUTINE_SH_handler</span><span class="plain"> = { </span><span class="constant">ROUTINE_NT</span><span class="plain">, -1, 0, </span><span class="identifier">NULL</span><span class="plain"> };</span>
|
||||
<span class="reserved">sentence_handler</span><span class="plain"> </span><span class="identifier">COMMAND_SH_handler</span><span class="plain"> = { </span><span class="identifier">INVOCATION_LIST_NT</span><span class="plain">, -1, 0, </span><span class="identifier">NULL</span><span class="plain"> };</span>
|
||||
<span class="reserved">sentence_handler</span><span class="plain"> </span><span class="identifier">ROUTINE_SH_handler</span><span class="plain"> = { </span><span class="identifier">ROUTINE_NT</span><span class="plain">, -1, 0, </span><span class="identifier">NULL</span><span class="plain"> };</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
@ -178,8 +178,8 @@ placement later on.
|
|||
<span class="functiontext">Phrases::Manager::advance_phrase_time_to</span><span class="plain">(</span><span class="constant">LATE_MORNING_PHT</span><span class="plain">);</span>
|
||||
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">progress_target</span><span class="plain"> = 0, </span><span class="identifier">progress_made</span><span class="plain"> = 0;</span>
|
||||
<span class="identifier">ParseTree::traverse_int</span><span class="plain">(</span><span class="functiontext">Phrases::Manager::visit_to_count</span><span class="plain">, &</span><span class="identifier">progress_target</span><span class="plain">);</span>
|
||||
<span class="identifier">ParseTree::traverse_int_int</span><span class="plain">(</span><span class="functiontext">Phrases::Manager::visit_to_create</span><span class="plain">, &</span><span class="identifier">progress_target</span><span class="plain">, &</span><span class="identifier">progress_made</span><span class="plain">);</span>
|
||||
<span class="identifier">ParseTree::traverse_int</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="functiontext">Phrases::Manager::visit_to_count</span><span class="plain">, &</span><span class="identifier">progress_target</span><span class="plain">);</span>
|
||||
<span class="identifier">ParseTree::traverse_int_int</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="functiontext">Phrases::Manager::visit_to_create</span><span class="plain">, &</span><span class="identifier">progress_target</span><span class="plain">, &</span><span class="identifier">progress_made</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Phrases::Manager::visit_to_count</span><span class="plain">(</span><span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">p</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> *</span><span class="identifier">progress_target</span><span class="plain">) {</span>
|
||||
|
@ -192,7 +192,7 @@ placement later on.
|
|||
<span class="functiontext">ProgressBar::update</span><span class="plain">(3,</span>
|
||||
<span class="plain">((</span><span class="reserved">float</span><span class="plain">) (*</span><span class="identifier">progress_made</span><span class="plain">))/((</span><span class="reserved">float</span><span class="plain">) (*</span><span class="identifier">progress_target</span><span class="plain">)));</span>
|
||||
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ParseTree::get_type</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">) == </span><span class="constant">ROUTINE_NT</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ParseTree::get_type</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">) == </span><span class="identifier">ROUTINE_NT</span><span class="plain">) {</span>
|
||||
<span class="functiontext">Phrases::create_from_preamble</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -200,7 +200,7 @@ placement later on.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Phrases::Manager::traverse is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
<p class="endnote">The function Phrases::Manager::traverse is used in 1/htc (<a href="1-htc.html#SP2_7">§2.7</a>).</p>
|
||||
|
||||
<p class="endnote">The function Phrases::Manager::visit_to_count appears nowhere else.</p>
|
||||
|
||||
|
@ -227,7 +227,7 @@ counting local variables, whose names only exist fleetingly).
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Phrases::Manager::register_meanings is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
<p class="endnote">The function Phrases::Manager::register_meanings is used in 1/htc (<a href="1-htc.html#SP2_7">§2.7</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP6"></a><b>§6. Noon. </b>When the final phrase is registered, the hour chimes. From this point
|
||||
onwards, there's no longer any text which can't be parsed because some
|
||||
|
@ -276,7 +276,7 @@ correctly refer to the most recently mentioned action.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Phrases::Manager::parse_rule_parameters is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
<p class="endnote">The function Phrases::Manager::parse_rule_parameters is used in 1/htc (<a href="1-htc.html#SP2_7">§2.7</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP8"></a><b>§8. </b>We can finally make the automatic placements of rules into rulebooks: so
|
||||
our "fire alarm rule" will at last be placed in the "Instead" rulebook. The
|
||||
|
@ -296,7 +296,7 @@ PHRCDs are used to make sure it appears in the right position.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Phrases::Manager::add_rules_to_rulebooks is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
<p class="endnote">The function Phrases::Manager::add_rules_to_rulebooks is used in 1/htc (<a href="1-htc.html#SP2_7">§2.7</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP9"></a><b>§9. </b>It might seem as if the rulebooks are now complete, but this is not true,
|
||||
because we still have to take care of manual placements like:
|
||||
|
@ -316,7 +316,7 @@ only conditionally, or substituted by other rules.
|
|||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Phrases::Manager::parse_rule_placements</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
|
||||
<span class="functiontext">Phrases::Manager::advance_phrase_time_to</span><span class="plain">(</span><span class="constant">EARLY_AFTERNOON_PHT</span><span class="plain">);</span>
|
||||
<span class="identifier">ParseTree::traverse</span><span class="plain">(</span><span class="functiontext">Phrases::Manager::visit_to_parse_placements</span><span class="plain">);</span>
|
||||
<span class="identifier">ParseTree::traverse</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="functiontext">Phrases::Manager::visit_to_parse_placements</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Phrases::Manager::visit_to_parse_placements</span><span class="plain">(</span><span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">p</span><span class="plain">) {</span>
|
||||
|
@ -333,7 +333,7 @@ only conditionally, or substituted by other rules.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Phrases::Manager::parse_rule_placements is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
<p class="endnote">The function Phrases::Manager::parse_rule_placements is used in 1/htc (<a href="1-htc.html#SP2_7">§2.7</a>).</p>
|
||||
|
||||
<p class="endnote">The function Phrases::Manager::visit_to_parse_placements appears nowhere else.</p>
|
||||
|
||||
|
@ -363,7 +363,7 @@ adjective definitions.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Phrases::Manager::compile_first_block is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function Phrases::Manager::compile_first_block is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP10_1"></a><b>§10.1. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Count up the scale of the task</span> <span class="cwebmacronumber">10.1</span>> =
|
||||
|
@ -487,7 +487,7 @@ points", say). This is where we do it:
|
|||
<span class="plain">(</span><span class="functiontext">Phrases::TypeData::arithmetic_operation</span><span class="plain">(</span><span class="identifier">ph</span><span class="plain">) == -1)) {</span>
|
||||
<span class="identifier">current_sentence</span><span class="plain"> = </span><span class="functiontext">Phrases::declaration_node</span><span class="plain">(</span><span class="identifier">ph</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ReturnKindVague</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ReturnKindVague</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The declaration %1 tries to set up a phrase which decides a "</span>
|
||||
<span class="string">"value which is too vaguely described. For example, 'To decide "</span>
|
||||
|
@ -504,7 +504,7 @@ points", say). This is where we do it:
|
|||
<span class="identifier">PUT_TO</span><span class="plain">(</span><span class="identifier">var_letter</span><span class="plain">, </span><span class="character">'A'</span><span class="plain">+</span><span class="identifier">k</span><span class="plain">-1);</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_stream</span><span class="plain">(2, </span><span class="identifier">var_letter</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ReturnKindUndetermined</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ReturnKindUndetermined</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The declaration %1 tries to set up a phrase which decides a "</span>
|
||||
<span class="string">"value which is too vaguely described, because it involves "</span>
|
||||
|
@ -532,7 +532,7 @@ points", say). This is where we do it:
|
|||
<span class="plain">(</span><span class="functiontext">Phrases::Usage::has_name_as_constant</span><span class="plain">(&(</span><span class="identifier">ph</span><span class="plain">-</span><span class="element">>usage_data</span><span class="plain">)))) {</span>
|
||||
<span class="identifier">current_sentence</span><span class="plain"> = </span><span class="functiontext">Phrases::declaration_node</span><span class="plain">(</span><span class="identifier">ph</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NamedInline</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NamedInline</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The declaration %1 tries to give a name to a phrase which is "</span>
|
||||
<span class="string">"defined using inline Inform 6 code in (- markers -). Such "</span>
|
||||
|
@ -598,11 +598,11 @@ noted down:
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Phrases::Manager::rulebooks_array is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function Phrases::Manager::rulebooks_array is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<p class="endnote">The function Phrases::Manager::compile_rulebooks is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function Phrases::Manager::compile_rulebooks is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<p class="endnote">The function Phrases::Manager::RulebookNames_array is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function Phrases::Manager::RulebookNames_array is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP13"></a><b>§13. </b>And finally, just as the sun slips below the horizon, we compile the code
|
||||
which prints out values of the kind "rule" at run-time — for example, taking
|
||||
|
@ -620,7 +620,7 @@ printing out "fire alarm rule".
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Phrases::Manager::RulePrintingRule_routine is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function Phrases::Manager::RulePrintingRule_routine is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP14"></a><b>§14. Evening. </b>The twilight gathers, but our work is far from done. Recall that we have
|
||||
accumulated compilation requests for "To..." phrases, but haven't actually
|
||||
|
@ -692,7 +692,7 @@ can be called multiple times in the course of the evening.)
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Phrases::Manager::compile_as_needed is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function Phrases::Manager::compile_as_needed is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<hr class="tocbar">
|
||||
<ul class="toc"><li><a href="22-itp.html">Back to 'Introduction to Phrases'</a></li><li><a href="22-ph.html">Continue with 'Phrases'</a></li></ul><hr class="tocbar">
|
||||
|
|
|
@ -605,7 +605,7 @@ correctly set.
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="reserved">if</span><span class="plain"> ((<</span><span class="identifier">control</span><span class="plain">-</span><span class="identifier">structure</span><span class="plain">-</span><span class="reserved">phrase</span><span class="plain">>(</span><span class="identifier">XW</span><span class="plain">)) &&</span>
|
||||
<span class="plain">(</span><span class="functiontext">Sentences::RuleSubtrees::comma_possible</span><span class="plain">(<<</span><span class="identifier">rp</span><span class="plain">>>)))</span>
|
||||
<span class="plain">(</span><span class="identifier">ControlStructures::comma_possible</span><span class="plain">(<<</span><span class="identifier">rp</span><span class="plain">>>)))</span>
|
||||
<span class="identifier">comma_presages_options</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
</pre>
|
||||
|
||||
|
@ -625,7 +625,7 @@ language altogether, but there we are; spilt milk.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_SayWithPhraseOptions</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_SayWithPhraseOptions</span><span class="plain">),</span>
|
||||
<span class="string">"phrase options are not allowed for 'say' phrases"</span><span class="plain">,</span>
|
||||
<span class="string">"because the commas would lead to ambiguous sentences, and because the "</span>
|
||||
<span class="string">"content of a substitution is intended to be something conceptually simple "</span>
|
||||
|
@ -735,7 +735,7 @@ messages.
|
|||
<span class="identifier">Problems::quote_source</span><span class="plain">(4, </span><span class="identifier">Prepositions::get_where_pu_created</span><span class="plain">(</span><span class="identifier">prep</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(3, </span><span class="identifier">Wordings::new</span><span class="plain">(<<</span><span class="identifier">rel1</span><span class="plain">>>, <<</span><span class="identifier">rel2</span><span class="plain">>>));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_MasksRelation</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_MasksRelation</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"I don't want you to define a phrase with the wording you've used in "</span>
|
||||
<span class="string">"in %1 because it could be misunderstood. There is already a definition "</span>
|
||||
|
@ -815,7 +815,7 @@ haven't yet been parsed, so that we don't yet know it will be meaningful.
|
|||
<span class="plain">*</span><span class="identifier">XP</span><span class="plain"> = </span><span class="identifier">K_number</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_UnknownValueToDecide</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_UnknownValueToDecide</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The phrase you describe in %1 seems to be trying to decide a value, "</span>
|
||||
<span class="string">"but '%2' is not a kind that I recognise. (I had expected something "</span>
|
||||
|
@ -849,7 +849,7 @@ haven't yet been parsed, so that we don't yet know it will be meaningful.
|
|||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"to phrase without to"</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Kinds::Compare::eq</span><span class="plain">(</span><span class="identifier">phtd</span><span class="plain">-</span><span class="element">>return_kind</span><span class="plain">, </span><span class="identifier">K_truth_state</span><span class="plain">)) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">no_truth_state_returns</span><span class="plain">++ > 0)</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TruthStateToDecide</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TruthStateToDecide</span><span class="plain">),</span>
|
||||
<span class="string">"phrases are not allowed to decide a truth state"</span><span class="plain">,</span>
|
||||
<span class="string">"and should be defined with the form 'To decide if ...' rather than "</span>
|
||||
<span class="string">"'To decide what truth state is ...'."</span><span class="plain">);</span>
|
||||
|
@ -1028,7 +1028,7 @@ the hyphen, and this is sorely needed with complicated functional kinds.
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="plain">*</span><span class="identifier">X</span><span class="plain"> = </span><span class="identifier">NOT_APPLICABLE</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TokenWithEmptyBrackets</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TokenWithEmptyBrackets</span><span class="plain">),</span>
|
||||
<span class="string">"nothing is between the opening bracket '(' and its matching close bracket ')'"</span><span class="plain">,</span>
|
||||
<span class="string">"so I can't see what is meant to be the fixed text and what is meant to be "</span>
|
||||
<span class="string">"changeable. The idea is to put brackets around whatever varies from one "</span>
|
||||
|
@ -1046,7 +1046,7 @@ the hyphen, and this is sorely needed with complicated functional kinds.
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="plain">*</span><span class="identifier">X</span><span class="plain"> = </span><span class="identifier">NOT_APPLICABLE</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TokenWithoutCloseBracket</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TokenWithoutCloseBracket</span><span class="plain">),</span>
|
||||
<span class="string">"the opening bracket '(' has no matching close bracket ')'"</span><span class="plain">,</span>
|
||||
<span class="string">"so I can't see what is meant to be the fixed text and what is meant to be "</span>
|
||||
<span class="string">"changeable. The idea is to put brackets around whatever varies from one "</span>
|
||||
|
@ -1064,7 +1064,7 @@ the hyphen, and this is sorely needed with complicated functional kinds.
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="plain">*</span><span class="identifier">X</span><span class="plain"> = </span><span class="identifier">NOT_APPLICABLE</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TokenWithoutOpenBracket</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TokenWithoutOpenBracket</span><span class="plain">),</span>
|
||||
<span class="string">"a close bracket ')' appears here with no matching open '('"</span><span class="plain">,</span>
|
||||
<span class="string">"so I can't see what is meant to be the fixed text and what is meant to "</span>
|
||||
<span class="string">"be changeable. The idea is to put brackets around whatever varies from "</span>
|
||||
|
@ -1083,7 +1083,7 @@ the hyphen, and this is sorely needed with complicated functional kinds.
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="plain">*</span><span class="identifier">X</span><span class="plain"> = </span><span class="identifier">NOT_APPLICABLE</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TokenWithNestedBrackets</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TokenWithNestedBrackets</span><span class="plain">),</span>
|
||||
<span class="string">"the name of the token inside the brackets '(' and ')' and before the "</span>
|
||||
<span class="string">"hyphen '-' itself contains another open bracket '('"</span><span class="plain">,</span>
|
||||
<span class="string">"which is not allowed."</span><span class="plain">);</span>
|
||||
|
@ -1102,7 +1102,7 @@ the hyphen, and this is sorely needed with complicated functional kinds.
|
|||
<span class="plain">*</span><span class="identifier">X</span><span class="plain"> = </span><span class="identifier">NOT_APPLICABLE</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">GET_RW</span><span class="plain">(<</span><span class="reserved">phrase</span><span class="plain">-</span><span class="identifier">token</span><span class="plain">-</span><span class="identifier">declaration</span><span class="plain">>, 2));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadTypeIndication</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadTypeIndication</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In %1, the text '%2' after the hyphen should tell me what kind of value "</span>
|
||||
<span class="string">"goes here (like 'a number', or 'a vehicle'), but it's not something I "</span>
|
||||
|
@ -1122,7 +1122,7 @@ the hyphen, and this is sorely needed with complicated functional kinds.
|
|||
<pre class="displaydefn">
|
||||
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"On %W\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="plain">*</span><span class="identifier">X</span><span class="plain"> = </span><span class="identifier">NOT_APPLICABLE</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TokenMisunderstood</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TokenMisunderstood</span><span class="plain">),</span>
|
||||
<span class="string">"the brackets '(' and ')' here neither say that something varies but has "</span>
|
||||
<span class="string">"a given type, nor specify a called name"</span><span class="plain">,</span>
|
||||
<span class="string">"so I can't make sense of them. For a 'To...' phrase, brackets like this "</span>
|
||||
|
@ -1182,7 +1182,7 @@ form the word and token sequences:
|
|||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">: </span><<span class="cwebmacro">Add a word next</span> <span class="cwebmacronumber">20.1</span>><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">phtd</span><span class="plain">-</span><span class="element">>no_words</span><span class="plain"> >= </span><span class="constant">MAX_WORDS_PER_PHRASE</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_PhraseTooLong</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_PhraseTooLong</span><span class="plain">),</span>
|
||||
<span class="string">"this phrase has too many words"</span><span class="plain">,</span>
|
||||
<span class="string">"and needs to be simplified."</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain">;</span>
|
||||
|
@ -1255,7 +1255,7 @@ form the word and token sequences:
|
|||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">spec</span><span class="plain">));</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">n</span><span class="plain"> = </span><span class="constant">MAX_TOKENS_PER_PHRASE</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::quote_number</span><span class="plain">(3, &</span><span class="identifier">n</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TooManyTokens</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TooManyTokens</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In %1, I ran out of tokens when I got up to '%2'. "</span>
|
||||
<span class="string">"Phrases are only allowed %3 tokens, that is, they "</span>
|
||||
|
@ -1283,7 +1283,7 @@ form the word and token sequences:
|
|||
<span class="plain">(</span><span class="identifier">phtd</span><span class="plain">-</span><span class="element">>as_inline.invoked_inline_not_as_call</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">spec</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NoninlineUsesNonvalues</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NoninlineUsesNonvalues</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In %1, the text '%2' after the hyphen should tell me what kind of "</span>
|
||||
<span class="string">"value goes here (like 'a number', or 'a vehicle'), but this is not "</span>
|
||||
|
@ -1311,7 +1311,7 @@ form the word and token sequences:
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Calculus::Variables::number_free</span><span class="plain">(</span><span class="identifier">prop</span><span class="plain">) != 1) {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">spec</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_PhraseTokenQuantified</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_PhraseTokenQuantified</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In %1, the text '%2' after the hyphen should tell me what kind of "</span>
|
||||
<span class="string">"value goes here (like 'a number', or 'a vehicle'), but it has to "</span>
|
||||
|
@ -1363,7 +1363,7 @@ form the word and token sequences:
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_UndeclaredKindVariable</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_UndeclaredKindVariable</span><span class="plain">),</span>
|
||||
<span class="string">"this phrase uses a kind variable which is not declared"</span><span class="plain">,</span>
|
||||
<span class="string">"which is not allowed."</span><span class="plain">);</span>
|
||||
<span class="identifier">phtd</span><span class="plain">-</span><span class="element">>token_sequence</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">]</span><span class="element">.token_kind</span><span class="plain"> =</span>
|
||||
|
@ -1480,7 +1480,7 @@ in exactly one place: for example,
|
|||
<span class="identifier">kind</span><span class="plain"> *</span><span class="identifier">dec</span><span class="plain"> = </span><span class="identifier">Kinds::get_variable_stipulation</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">dec</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">declarations</span><span class="plain">[</span><span class="identifier">N</span><span class="plain">]) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_DoublyDeclaredKindVariable</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_DoublyDeclaredKindVariable</span><span class="plain">),</span>
|
||||
<span class="string">"this phrase declares the same kind variable more than once"</span><span class="plain">,</span>
|
||||
<span class="string">"and ought to declare each variable once each."</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
|
|
@ -188,7 +188,7 @@ an I6 routine name, but no: it compiles to a small array called a "closure".
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Phrases::Constants::compile_closures is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function Phrases::Constants::compile_closures is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP8_1"></a><b>§8.1. </b>The closure array consists of three words: the strong kind ID, the address
|
||||
of the routine, and the text of the name. (The latter enables us to print
|
||||
|
|
|
@ -117,7 +117,7 @@ invocation which is given as verbatim I6.
|
|||
|
||||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Phrases::create_from_preamble</span><span class="plain">(</span><span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">p</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">p</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) || (</span><span class="identifier">ParseTree::get_type</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">) != </span><span class="constant">ROUTINE_NT</span><span class="plain">))</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">p</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) || (</span><span class="identifier">ParseTree::get_type</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">) != </span><span class="identifier">ROUTINE_NT</span><span class="plain">))</span>
|
||||
<span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"a phrase preamble should be at a ROUTINE_NT node"</span><span class="plain">);</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">inline_wn</span><span class="plain"> = -1; </span> <span class="comment">the word number of an inline I6 definition if any</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">mor</span><span class="plain"> = </span><span class="constant">DONT_KNOW_MOR</span><span class="plain">; </span> <span class="comment">and its manner of return</span>
|
||||
|
@ -394,7 +394,7 @@ of it:
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_Undefined</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_Undefined</span><span class="plain">),</span>
|
||||
<span class="string">"there doesn't seem to be any definition here"</span><span class="plain">,</span>
|
||||
<span class="string">"so I can't see what this rule or phrase would do."</span><span class="plain">);</span>
|
||||
</pre>
|
||||
|
@ -414,7 +414,7 @@ of it:
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Inline definition: <%s>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">inline_defn</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_InlineTooLong</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_InlineTooLong</span><span class="plain">),</span>
|
||||
<span class="string">"the inline definition of this 'to...' phrase is too long"</span><span class="plain">,</span>
|
||||
<span class="string">"using a quantity of Inform 6 code which exceeds the fairly small limit "</span>
|
||||
<span class="string">"allowed. You will need either to write the phrase definition in Inform 7, "</span>
|
||||
|
@ -432,7 +432,7 @@ of it:
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_InlineRule</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_InlineRule</span><span class="plain">),</span>
|
||||
<span class="string">"only 'to...' phrases can be given inline Inform 6 definitions"</span><span class="plain">,</span>
|
||||
<span class="string">"and in particular rules and adjective definitions can't."</span><span class="plain">);</span>
|
||||
</pre>
|
||||
|
@ -470,7 +470,7 @@ what number is...", for instance.
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="plain">*</span><span class="identifier">X</span><span class="plain"> = </span><span class="constant">DONT_KNOW_MOR</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TailAfterInline</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TailAfterInline</span><span class="plain">),</span>
|
||||
<span class="string">"some unexpected text appears after the tail of an inline definition"</span><span class="plain">,</span>
|
||||
<span class="string">"placed within '(-' and '-)' markers to indicate that it is written in "</span>
|
||||
<span class="string">"Inform 6. Here, there seems to be something extra after the '-)'."</span><span class="plain">);</span>
|
||||
|
@ -661,13 +661,13 @@ response to "requests". All other phrases are compiled just once.
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ph</span><span class="plain">-</span><span class="element">>to_begin</span><span class="plain">) {</span>
|
||||
<span class="identifier">n</span><span class="plain">++;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">n</span><span class="plain"> > 1) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(...),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(...),</span>
|
||||
<span class="string">"there seem to be multiple 'to begin' phrases"</span><span class="plain">,</span>
|
||||
<span class="string">"but in Basic mode, Inform expects to see exactly one of "</span>
|
||||
<span class="string">"these, specifying where execution should begin."</span><span class="plain">);</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Phrases::compiled_inline</span><span class="plain">(</span><span class="identifier">ph</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(...),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(...),</span>
|
||||
<span class="string">"the 'to begin' phrase seems to be defined inline"</span><span class="plain">,</span>
|
||||
<span class="string">"which in Basic mode is not allowed."</span><span class="plain">);</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
||||
|
@ -682,7 +682,7 @@ response to "requests". All other phrases are compiled just once.
|
|||
<span class="plain">}</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">n</span><span class="plain"> == 0) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(...),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(...),</span>
|
||||
<span class="string">"there seems not to be a 'to begin' phrase"</span><span class="plain">,</span>
|
||||
<span class="string">"but in Basic mode, Inform expects to see exactly one of "</span>
|
||||
<span class="string">"these, specifying where execution should begin."</span><span class="plain">);</span>
|
||||
|
@ -695,7 +695,7 @@ response to "requests". All other phrases are compiled just once.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Phrases::invoke_to_begin is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function Phrases::invoke_to_begin is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<hr class="tocbar">
|
||||
<ul class="toc"><li><a href="22-cs.html">Back to 'Construction Sequence'</a></li><li><a href="22-pu.html">Continue with 'Phrase Usage'</a></li></ul><hr class="tocbar">
|
||||
|
|
|
@ -35,7 +35,7 @@ suppress indexing of their definitions.
|
|||
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">pass</span><span class="plain">=1; </span><span class="identifier">pass</span><span class="plain"><=2; </span><span class="identifier">pass</span><span class="plain">++) {</span>
|
||||
<span class="identifier">inform_extension</span><span class="plain"> *</span><span class="identifier">last_extension_named</span><span class="plain"> = </span><span class="identifier">NULL</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">division</span><span class="plain"> = 0, </span><span class="identifier">N</span><span class="plain"> = </span><span class="identifier">NUMBER_CREATED</span><span class="plain">(</span><span class="identifier">inform_extension</span><span class="plain">); </span><span class="identifier">division</span><span class="plain"> <= </span><span class="identifier">N</span><span class="plain">; </span><span class="identifier">division</span><span class="plain">++) {</span>
|
||||
<span class="reserved">heading</span><span class="plain"> *</span><span class="identifier">last_heading_named</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">heading</span><span class="plain"> *</span><span class="identifier">last_heading_named</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">no_subdivision_yet</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="identifier">wording</span><span class="plain"> </span><span class="identifier">CLW</span><span class="plain"> = </span><span class="identifier">EMPTY_WORDING</span><span class="plain">;</span>
|
||||
<span class="reserved">phrase</span><span class="plain"> *</span><span class="identifier">ph</span><span class="plain">, *</span><span class="identifier">run_begin</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
|
@ -44,12 +44,12 @@ suppress indexing of their definitions.
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Phrases::Usage::get_effect</span><span class="plain">(&(</span><span class="identifier">ph</span><span class="plain">-</span><span class="element">>usage_data</span><span class="plain">)) != </span><span class="constant">TO_PHRASE_EFF</span><span class="plain">)</span>
|
||||
<span class="reserved">continue</span><span class="plain">;</span>
|
||||
<span class="comment">and only if it is under an indexed heading</span>
|
||||
<span class="reserved">heading</span><span class="plain"> *</span><span class="identifier">this_heading</span><span class="plain"> =</span>
|
||||
<span class="functiontext">Sentences::Headings::of_wording</span><span class="plain">(</span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="functiontext">Phrases::declaration_node</span><span class="plain">(</span><span class="identifier">ph</span><span class="plain">)));</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Sentences::Headings::indexed</span><span class="plain">(</span><span class="identifier">this_heading</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="reserved">continue</span><span class="plain">;</span>
|
||||
<span class="identifier">heading</span><span class="plain"> *</span><span class="identifier">this_heading</span><span class="plain"> =</span>
|
||||
<span class="identifier">Headings::of_wording</span><span class="plain">(</span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="functiontext">Phrases::declaration_node</span><span class="plain">(</span><span class="identifier">ph</span><span class="plain">)));</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Headings::indexed</span><span class="plain">(</span><span class="identifier">this_heading</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="reserved">continue</span><span class="plain">;</span>
|
||||
<span class="comment">and only if that heading lies in the piece of source for this division</span>
|
||||
<span class="identifier">inform_extension</span><span class="plain"> *</span><span class="identifier">this_extension</span><span class="plain"> =</span>
|
||||
<span class="functiontext">Sentences::Headings::get_extension_containing</span><span class="plain">(</span><span class="identifier">this_heading</span><span class="plain">);</span>
|
||||
<span class="identifier">Headings::get_extension_containing</span><span class="plain">(</span><span class="identifier">this_heading</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">division</span><span class="plain"> == </span><span class="identifier">N</span><span class="plain">) { </span> <span class="comment">skip phrase unless it's in the source text</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">this_extension</span><span class="plain"> != </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">continue</span><span class="plain">;</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> { </span> <span class="comment">skip phrase unless it's defined in the extension for this division</span>
|
||||
|
@ -117,7 +117,7 @@ each has a paragraph of its own.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">wording</span><span class="plain"> </span><span class="identifier">HW</span><span class="plain"> = </span><span class="functiontext">Sentences::Headings::get_text</span><span class="plain">(</span><span class="identifier">this_heading</span><span class="plain">);</span>
|
||||
<span class="identifier">wording</span><span class="plain"> </span><span class="identifier">HW</span><span class="plain"> = </span><span class="identifier">Headings::get_text</span><span class="plain">(</span><span class="identifier">this_heading</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">HW</span><span class="plain">)) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">pass</span><span class="plain"> == 1) </span><<span class="cwebmacro">Strip away bracketed matter in the heading name</span> <span class="cwebmacronumber">1.2.1</span>><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Extensions::is_standard</span><span class="plain">(</span><span class="identifier">this_extension</span><span class="plain">))</span>
|
||||
|
@ -150,7 +150,7 @@ each has a paragraph of its own.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="reserved">if</span><span class="plain"> (<</span><span class="reserved">heading</span><span class="plain">-</span><span class="identifier">with</span><span class="plain">-</span><span class="identifier">parenthesis</span><span class="plain">>(</span><span class="identifier">HW</span><span class="plain">)) </span><span class="identifier">HW</span><span class="plain"> = </span><span class="identifier">GET_RW</span><span class="plain">(<</span><span class="reserved">heading</span><span class="plain">-</span><span class="identifier">with</span><span class="plain">-</span><span class="identifier">parenthesis</span><span class="plain">>, 1);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (<</span><span class="identifier">heading</span><span class="plain">-</span><span class="identifier">with</span><span class="plain">-</span><span class="identifier">parenthesis</span><span class="plain">>(</span><span class="identifier">HW</span><span class="plain">)) </span><span class="identifier">HW</span><span class="plain"> = </span><span class="identifier">GET_RW</span><span class="plain">(<</span><span class="identifier">heading</span><span class="plain">-</span><span class="identifier">with</span><span class="plain">-</span><span class="identifier">parenthesis</span><span class="plain">>, 1);</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
@ -186,12 +186,12 @@ and the second and third pieces used as headings and subheadings respectively.
|
|||
|
||||
|
||||
<pre class="display">
|
||||
<span class="plain"><</span><span class="reserved">heading</span><span class="plain">-</span><span class="identifier">with</span><span class="plain">-</span><span class="identifier">parenthesis</span><span class="plain">> ::=</span>
|
||||
<span class="plain">{<</span><span class="reserved">heading</span><span class="plain">-</span><span class="identifier">name</span><span class="plain">-</span><span class="identifier">hyphenated</span><span class="plain">>} ( <</span><span class="identifier">definite</span><span class="plain">-</span><span class="identifier">article</span><span class="plain">> ... ) |</span>
|
||||
<span class="plain">{<</span><span class="reserved">heading</span><span class="plain">-</span><span class="identifier">name</span><span class="plain">-</span><span class="identifier">hyphenated</span><span class="plain">>} ( ... ) |</span>
|
||||
<span class="plain">{<</span><span class="reserved">heading</span><span class="plain">-</span><span class="identifier">name</span><span class="plain">-</span><span class="identifier">hyphenated</span><span class="plain">>}</span>
|
||||
<span class="plain"><</span><span class="identifier">heading</span><span class="plain">-</span><span class="identifier">with</span><span class="plain">-</span><span class="identifier">parenthesis</span><span class="plain">> ::=</span>
|
||||
<span class="plain">{<</span><span class="identifier">heading</span><span class="plain">-</span><span class="identifier">name</span><span class="plain">-</span><span class="identifier">hyphenated</span><span class="plain">>} ( <</span><span class="identifier">definite</span><span class="plain">-</span><span class="identifier">article</span><span class="plain">> ... ) |</span>
|
||||
<span class="plain">{<</span><span class="identifier">heading</span><span class="plain">-</span><span class="identifier">name</span><span class="plain">-</span><span class="identifier">hyphenated</span><span class="plain">>} ( ... ) |</span>
|
||||
<span class="plain">{<</span><span class="identifier">heading</span><span class="plain">-</span><span class="identifier">name</span><span class="plain">-</span><span class="identifier">hyphenated</span><span class="plain">>}</span>
|
||||
|
||||
<span class="plain"><</span><span class="reserved">heading</span><span class="plain">-</span><span class="identifier">name</span><span class="plain">-</span><span class="identifier">hyphenated</span><span class="plain">> ::=</span>
|
||||
<span class="plain"><</span><span class="identifier">heading</span><span class="plain">-</span><span class="identifier">name</span><span class="plain">-</span><span class="identifier">hyphenated</span><span class="plain">> ::=</span>
|
||||
<span class="plain">... - ... - ... | ==> 3</span>
|
||||
<span class="plain">... - ... | ==> 2</span>
|
||||
<span class="plain">... ==> 1</span>
|
||||
|
@ -209,9 +209,9 @@ and the second and third pieces used as headings and subheadings respectively.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="plain"><</span><span class="reserved">heading</span><span class="plain">-</span><span class="identifier">name</span><span class="plain">-</span><span class="identifier">hyphenated</span><span class="plain">>(</span><span class="identifier">HW</span><span class="plain">);</span>
|
||||
<span class="plain"><</span><span class="identifier">heading</span><span class="plain">-</span><span class="identifier">name</span><span class="plain">-</span><span class="identifier">hyphenated</span><span class="plain">>(</span><span class="identifier">HW</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (<<</span><span class="identifier">r</span><span class="plain">>> == 3) {</span>
|
||||
<span class="identifier">wording</span><span class="plain"> </span><span class="identifier">C</span><span class="plain"> = </span><span class="identifier">GET_RW</span><span class="plain">(<</span><span class="reserved">heading</span><span class="plain">-</span><span class="identifier">name</span><span class="plain">-</span><span class="identifier">hyphenated</span><span class="plain">>, 2);</span>
|
||||
<span class="identifier">wording</span><span class="plain"> </span><span class="identifier">C</span><span class="plain"> = </span><span class="identifier">GET_RW</span><span class="plain">(<</span><span class="identifier">heading</span><span class="plain">-</span><span class="identifier">name</span><span class="plain">-</span><span class="identifier">hyphenated</span><span class="plain">>, 2);</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">Wordings::empty</span><span class="plain">(</span><span class="identifier">CLW</span><span class="plain">)) || (</span><span class="identifier">Wordings::match</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">, </span><span class="identifier">CLW</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">)) {</span>
|
||||
<span class="identifier">CLW</span><span class="plain"> = </span><span class="identifier">C</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">pass</span><span class="plain"> == 2) </span><span class="identifier">HTML_TAG</span><span class="plain">(</span><span class="string">"hr"</span><span class="plain">);</span>
|
||||
|
@ -220,9 +220,9 @@ and the second and third pieces used as headings and subheadings respectively.
|
|||
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"p"</span><span class="plain">);</span>
|
||||
<span class="identifier">no_subdivision_yet</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="identifier">HW</span><span class="plain"> = </span><span class="identifier">GET_RW</span><span class="plain">(<</span><span class="reserved">heading</span><span class="plain">-</span><span class="identifier">name</span><span class="plain">-</span><span class="identifier">hyphenated</span><span class="plain">>, 3);</span>
|
||||
<span class="identifier">HW</span><span class="plain"> = </span><span class="identifier">GET_RW</span><span class="plain">(<</span><span class="identifier">heading</span><span class="plain">-</span><span class="identifier">name</span><span class="plain">-</span><span class="identifier">hyphenated</span><span class="plain">>, 3);</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
||||
<span class="identifier">HW</span><span class="plain"> = </span><span class="identifier">GET_RW</span><span class="plain">(<</span><span class="reserved">heading</span><span class="plain">-</span><span class="identifier">name</span><span class="plain">-</span><span class="identifier">hyphenated</span><span class="plain">>, 1);</span>
|
||||
<span class="identifier">HW</span><span class="plain"> = </span><span class="identifier">GET_RW</span><span class="plain">(<</span><span class="identifier">heading</span><span class="plain">-</span><span class="identifier">name</span><span class="plain">-</span><span class="identifier">hyphenated</span><span class="plain">>, 1);</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
|
@ -298,18 +298,18 @@ above, it may as well go here.
|
|||
|
||||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Phrases::Index::index_definition_area</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="identifier">wording</span><span class="plain"> </span><span class="identifier">W</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">show_if_unhyphenated</span><span class="plain">) {</span>
|
||||
<span class="plain"><</span><span class="reserved">heading</span><span class="plain">-</span><span class="identifier">name</span><span class="plain">-</span><span class="identifier">hyphenated</span><span class="plain">>(</span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="plain"><</span><span class="identifier">heading</span><span class="plain">-</span><span class="identifier">name</span><span class="plain">-</span><span class="identifier">hyphenated</span><span class="plain">>(</span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((<<</span><span class="identifier">r</span><span class="plain">>> == 1) && (</span><span class="identifier">show_if_unhyphenated</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">)) </span><span class="reserved">return</span><span class="plain">;</span>
|
||||
<span class="identifier">HTML_OPEN</span><span class="plain">(</span><span class="string">"b"</span><span class="plain">);</span>
|
||||
<span class="reserved">switch</span><span class="plain"> (<<</span><span class="identifier">r</span><span class="plain">>>) {</span>
|
||||
<span class="reserved">case</span><span class="plain"> 1: </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%+W"</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> 2: {</span>
|
||||
<span class="identifier">wording</span><span class="plain"> </span><span class="identifier">C</span><span class="plain"> = </span><span class="identifier">GET_RW</span><span class="plain">(<</span><span class="reserved">heading</span><span class="plain">-</span><span class="identifier">name</span><span class="plain">-</span><span class="identifier">hyphenated</span><span class="plain">>, 2);</span>
|
||||
<span class="identifier">wording</span><span class="plain"> </span><span class="identifier">C</span><span class="plain"> = </span><span class="identifier">GET_RW</span><span class="plain">(<</span><span class="identifier">heading</span><span class="plain">-</span><span class="identifier">name</span><span class="plain">-</span><span class="identifier">hyphenated</span><span class="plain">>, 2);</span>
|
||||
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%+W"</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">case</span><span class="plain"> 3: {</span>
|
||||
<span class="identifier">wording</span><span class="plain"> </span><span class="identifier">C</span><span class="plain"> = </span><span class="identifier">GET_RW</span><span class="plain">(<</span><span class="reserved">heading</span><span class="plain">-</span><span class="identifier">name</span><span class="plain">-</span><span class="identifier">hyphenated</span><span class="plain">>, 2);</span>
|
||||
<span class="identifier">wording</span><span class="plain"> </span><span class="identifier">D</span><span class="plain"> = </span><span class="identifier">GET_RW</span><span class="plain">(<</span><span class="reserved">heading</span><span class="plain">-</span><span class="identifier">name</span><span class="plain">-</span><span class="identifier">hyphenated</span><span class="plain">>, 3);</span>
|
||||
<span class="identifier">wording</span><span class="plain"> </span><span class="identifier">C</span><span class="plain"> = </span><span class="identifier">GET_RW</span><span class="plain">(<</span><span class="identifier">heading</span><span class="plain">-</span><span class="identifier">name</span><span class="plain">-</span><span class="identifier">hyphenated</span><span class="plain">>, 2);</span>
|
||||
<span class="identifier">wording</span><span class="plain"> </span><span class="identifier">D</span><span class="plain"> = </span><span class="identifier">GET_RW</span><span class="plain">(<</span><span class="identifier">heading</span><span class="plain">-</span><span class="identifier">name</span><span class="plain">-</span><span class="identifier">hyphenated</span><span class="plain">>, 3);</span>
|
||||
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%+W - %+W"</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">, </span><span class="identifier">D</span><span class="plain">);</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
|
|
@ -222,7 +222,7 @@ For example, in:
|
|||
<span class="identifier">LOGIF</span><span class="plain">(</span><span class="identifier">PHRASE_CREATIONS</span><span class="plain">, </span><span class="string">"Adding phrase option <%W>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">phod</span><span class="plain">-</span><span class="element">>no_options_permitted</span><span class="plain"> >= </span><span class="constant">MAX_OPTIONS_PER_PHRASE</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">too_many_POs_error</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">)</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TooManyPhraseOptions</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TooManyPhraseOptions</span><span class="plain">),</span>
|
||||
<span class="string">"a phrase is only allowed to have 16 different options"</span><span class="plain">,</span>
|
||||
<span class="string">"so either some of these will need to go, or you may want to "</span>
|
||||
<span class="string">"consider breaking up the phrase into simpler ones whose usage "</span>
|
||||
|
@ -337,7 +337,7 @@ this residue is zero.
|
|||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_phrase</span><span class="plain">(3, </span><span class="identifier">ph</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(4, </span><span class="identifier">phod_being_parsed</span><span class="plain">-</span><span class="element">>options_declaration</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_PhraseOptionsExclusive</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_PhraseOptionsExclusive</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, supplying the options '%2' to the phrase '%3', but "</span>
|
||||
<span class="string">"the options listed for this phrase ('%4') are mutually exclusive."</span><span class="plain">);</span>
|
||||
|
@ -385,13 +385,13 @@ by "and":
|
|||
<span class="functiontext">Problems::quote_phrase</span><span class="plain">(3, </span><span class="identifier">ph_being_parsed</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(4, </span><span class="identifier">phod_being_parsed</span><span class="plain">-</span><span class="element">>options_declaration</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">phod_being_parsed</span><span class="plain">-</span><span class="element">>no_options_permitted</span><span class="plain"> > 1) {</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NotAPhraseOption</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NotAPhraseOption</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but '%2' is not one of the options allowed on "</span>
|
||||
<span class="string">"the end of the phrase '%3'. (The options allowed are: '%4'.)"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NotTheOnlyPhraseOption</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NotTheOnlyPhraseOption</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but the only option allowed on the end of the "</span>
|
||||
<span class="string">"phrase '%3' is '%4', so '%2' is not something I know how to "</span>
|
||||
|
|
|
@ -688,7 +688,7 @@ with the default outcome return (see above).
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">avl</span><span class="plain">) {</span>
|
||||
<span class="functiontext">Activities::emit_activity_list</span><span class="plain">(</span><span class="identifier">avl</span><span class="plain">);</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadWhenWhile</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadWhenWhile</span><span class="plain">),</span>
|
||||
<span class="string">"I don't understand the 'when/while' clause"</span><span class="plain">,</span>
|
||||
<span class="string">"which should name activities or conditions."</span><span class="plain">);</span>
|
||||
<span class="identifier">Produce::val</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">(), </span><span class="identifier">K_truth_state</span><span class="plain">, </span><span class="identifier">LITERAL_IVAL</span><span class="plain">, 0);</span>
|
||||
|
|
|
@ -161,7 +161,7 @@ connect this existing one to the phrase.
|
|||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">ph_found</span><span class="plain">) && (</span><span class="identifier">ph_found</span><span class="plain"> != </span><span class="identifier">ph</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_DuplicateRuleName</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_DuplicateRuleName</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but this would give a name ('%2') to a "</span>
|
||||
<span class="string">"new rule which already belongs to an existing one."</span><span class="plain">);</span>
|
||||
|
@ -236,7 +236,7 @@ just enough from the wording to tell what sort of rule/phrase is to follow.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NamelessRule</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NamelessRule</span><span class="plain">),</span>
|
||||
<span class="string">"there are many rules in Inform"</span><span class="plain">,</span>
|
||||
<span class="string">"so you need to give a name: 'this is the abolish dancing rule', say, "</span>
|
||||
<span class="string">"not just 'this is the rule'."</span><span class="plain">);</span>
|
||||
|
@ -252,7 +252,7 @@ just enough from the wording to tell what sort of rule/phrase is to follow.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_UnarticledRule</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_UnarticledRule</span><span class="plain">),</span>
|
||||
<span class="string">"a rule must be given a definite name"</span><span class="plain">,</span>
|
||||
<span class="string">"which begins with 'the', just to emphasise that it is the only one "</span>
|
||||
<span class="string">"with this name: 'this is the promote dancing rule', say, not just "</span>
|
||||
|
@ -269,7 +269,7 @@ just enough from the wording to tell what sort of rule/phrase is to follow.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_PluralisedRule</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_PluralisedRule</span><span class="plain">),</span>
|
||||
<span class="string">"a rule must be given a definite name ending in 'rule' not 'rules'"</span><span class="plain">,</span>
|
||||
<span class="string">"since the plural is only used for rulebooks, which can of course "</span>
|
||||
<span class="string">"contain many rules at once."</span><span class="plain">);</span>
|
||||
|
@ -285,7 +285,7 @@ just enough from the wording to tell what sort of rule/phrase is to follow.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BareTo</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BareTo</span><span class="plain">),</span>
|
||||
<span class="string">"'to' what? No name is given"</span><span class="plain">,</span>
|
||||
<span class="string">"which means that this would not define a new phrase."</span><span class="plain">);</span>
|
||||
</pre>
|
||||
|
@ -300,7 +300,7 @@ just enough from the wording to tell what sort of rule/phrase is to follow.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_DontCallPhrasesWithCalled</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_DontCallPhrasesWithCalled</span><span class="plain">),</span>
|
||||
<span class="string">"phrases aren't named using 'called'"</span><span class="plain">,</span>
|
||||
<span class="string">"and instead use 'this is...'. For example, 'To salute (called saluting)' "</span>
|
||||
<span class="string">"isn't allowed, but 'To salute (this is saluting)' is."</span><span class="plain">);</span>
|
||||
|
@ -456,7 +456,7 @@ effects — see below.)
|
|||
<span class="reserved">if</span><span class="plain"> (<<</span><span class="identifier">named</span><span class="plain">>>) </span><<span class="cwebmacro">The preamble parses to a named To phrase</span> <span class="cwebmacronumber">11.2.1</span>><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (<</span><span class="identifier">now</span><span class="plain">-</span><span class="reserved">phrase</span><span class="plain">-</span><span class="identifier">preamble</span><span class="plain">>(</span><span class="identifier">W</span><span class="plain">)) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">coarse_mode</span><span class="plain">) && (</span><span class="identifier">no_now_phrases</span><span class="plain">++ == 1)) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RedefinedNow</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RedefinedNow</span><span class="plain">),</span>
|
||||
<span class="string">"creating new variants on 'now' is not allowed"</span><span class="plain">,</span>
|
||||
<span class="string">"because 'now' plays a special role in the language. "</span>
|
||||
<span class="string">"It has a wide-ranging ability to make a condition "</span>
|
||||
|
@ -490,7 +490,7 @@ mode, we can get that value back again if we look it up by name.
|
|||
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">coarse_mode</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (<</span><span class="identifier">s</span><span class="plain">-</span><span class="identifier">type</span><span class="plain">-</span><span class="identifier">expression</span><span class="plain">>(</span><span class="identifier">NW</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_PhraseNameDuplicated</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_PhraseNameDuplicated</span><span class="plain">),</span>
|
||||
<span class="string">"that name for this new phrase is not allowed"</span><span class="plain">,</span>
|
||||
<span class="string">"because it already has a meaning."</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -505,7 +505,7 @@ mode, we can get that value back again if we look it up by name.
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ph</span><span class="plain">) </span><span class="identifier">current_sentence</span><span class="plain"> = </span><span class="functiontext">Phrases::declaration_node</span><span class="plain">(</span><span class="identifier">ph</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">NounPhrases::new_raw</span><span class="plain">(</span><span class="identifier">Nouns::nominative</span><span class="plain">(</span><span class="identifier">cphr</span><span class="plain">-</span><span class="element">>name</span><span class="plain">)));</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">Nouns::nominative</span><span class="plain">(</span><span class="identifier">cphr</span><span class="plain">-</span><span class="element">>name</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NamedGeneric</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NamedGeneric</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"I can't allow %1, because the phrase it gives a name to "</span>
|
||||
<span class="string">"is generic, that is, it has a kind which is too vague. "</span>
|
||||
|
@ -698,7 +698,7 @@ of the stem, so we have to be very careful:
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadRulePreambleWhen</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadRulePreambleWhen</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The punctuation makes me think %1 should be a definition "</span>
|
||||
<span class="string">"of a phrase or a rule, but it doesn't begin as it should, "</span>
|
||||
|
@ -730,7 +730,7 @@ of the stem, so we have to be very careful:
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadRulePreamble</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadRulePreamble</span><span class="plain">),</span>
|
||||
<span class="string">"the punctuation here ':' makes me think this should be a definition "</span>
|
||||
<span class="string">"of a phrase and it doesn't begin as it should"</span><span class="plain">,</span>
|
||||
<span class="string">"with either 'To' (e.g. 'To flood the riverplain:'), 'Definition:', "</span>
|
||||
|
@ -753,7 +753,7 @@ of the stem, so we have to be very careful:
|
|||
<pre class="displaydefn">
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">parsed_rm</span><span class="element">.article_used</span><span class="plain"> == </span><span class="identifier">DEF_ART</span><span class="plain">) &&</span>
|
||||
<span class="plain">(</span><span class="identifier">parsed_rm</span><span class="element">.placement_requested</span><span class="plain"> == </span><span class="constant">MIDDLE_PLACEMENT</span><span class="plain">))</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RuleWithDefiniteArticle</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RuleWithDefiniteArticle</span><span class="plain">),</span>
|
||||
<span class="string">"a rulebook can contain any number of rules"</span><span class="plain">,</span>
|
||||
<span class="string">"so (e.g.) 'the before rule: ...' is disallowed; you should "</span>
|
||||
<span class="string">"write 'a before rule: ...' instead."</span><span class="plain">);</span>
|
||||
|
@ -1141,7 +1141,7 @@ parser, recording how it most recently failed.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_APWithDisjunction</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_APWithDisjunction</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, which seems to introduce a rule, but the "</span>
|
||||
<span class="string">"circumstances ('%2') seem to be too general for me to "</span>
|
||||
|
@ -1166,7 +1166,7 @@ parser, recording how it most recently failed.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_APWithNoParticiple</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_APWithNoParticiple</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, which seems to introduce a rule taking effect "</span>
|
||||
<span class="string">"only '%2'. But this does not look like an action, since "</span>
|
||||
|
@ -1186,7 +1186,7 @@ parser, recording how it most recently failed.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_APWithImmiscible</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_APWithImmiscible</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, which seems to introduce a rule taking effect "</span>
|
||||
<span class="string">"only '%2'. But this is a combination of actions which cannot "</span>
|
||||
|
@ -1209,7 +1209,7 @@ parser, recording how it most recently failed.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_APWithBadWhen</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_APWithBadWhen</span><span class="plain">));</span>
|
||||
<span class="identifier">wording</span><span class="plain"> </span><span class="identifier">Q</span><span class="plain"> = </span><span class="identifier">phud</span><span class="plain">-</span><span class="element">>rule_parameter</span><span class="plain">;</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">diagnosis</span><span class="plain"> = 0;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (<</span><span class="identifier">action</span><span class="plain">-</span><span class="identifier">when</span><span class="plain">-</span><span class="identifier">diagnosis</span><span class="plain">>(</span><span class="identifier">Q</span><span class="plain">)) {</span>
|
||||
|
@ -1259,7 +1259,7 @@ parser, recording how it most recently failed.
|
|||
<span class="identifier">Problems::quote_text</span><span class="plain">(3,</span>
|
||||
<span class="string">"The part after 'when' (or 'while') was fine, but the earlier words"</span><span class="plain">);</span>
|
||||
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">Problems::quote_text</span><span class="plain">(3, </span><span class="string">"But that"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_APUnknown</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_APUnknown</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, which seems to introduce a rule taking effect only if the "</span>
|
||||
<span class="string">"action is '%2'. %3 did not make sense as a description of an action."</span><span class="plain">);</span>
|
||||
|
@ -1410,7 +1410,7 @@ is used to choose a problem message if the value makes no sense.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_WhenThePlay</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_WhenThePlay</span><span class="plain">),</span>
|
||||
<span class="string">"there's no scene called 'the play'"</span><span class="plain">,</span>
|
||||
<span class="string">"so I think you need to remove 'the' - Inform has two "</span>
|
||||
<span class="string">"special rulebooks, 'When play begins' and 'When play ends', "</span>
|
||||
|
@ -1427,7 +1427,7 @@ is used to choose a problem message if the value makes no sense.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadParameter</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadParameter</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but the description of the thing(s) to which the rule "</span>
|
||||
<span class="string">"applies ('%2') did not make sense. This is %3 based rulebook, so "</span>
|
||||
|
@ -1459,7 +1459,7 @@ but the action isn't one we recognise.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NonActionInPresenceOf</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NonActionInPresenceOf</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but 'in the presence of...' is a clause which can "</span>
|
||||
<span class="string">"only be used to talk about an action: so, for instance, 'waiting "</span>
|
||||
|
@ -1483,7 +1483,7 @@ but the action isn't one we recognise.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NonActionIn</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NonActionIn</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but 'in...' used in this way should really belong "</span>
|
||||
<span class="string">"to an action: for instance, 'Before waiting in the Library'. "</span>
|
||||
|
|
|
@ -92,7 +92,7 @@ variety of values:
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">r</span><span class="plain"> == </span><span class="constant">CONFLICTED_PH</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="functiontext">Phrases::declaration_node</span><span class="plain">(</span><span class="identifier">ph1</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(2, </span><span class="functiontext">Phrases::declaration_node</span><span class="plain">(</span><span class="identifier">ph2</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ConflictedReturnKinds</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ConflictedReturnKinds</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The two phrase definitions %1 and %2 make the same wording "</span>
|
||||
<span class="string">"produce two different kinds of value, which is not allowed."</span><span class="plain">);</span>
|
||||
|
@ -256,7 +256,7 @@ list is a list of. The result would be:
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="functiontext">Phrases::declaration_node</span><span class="plain">(</span><span class="identifier">ph</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_UndeterminedKind</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_UndeterminedKind</span><span class="plain">));</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Wordings::empty</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The phrase %1 needs to be used in such a way that I know "</span>
|
||||
|
@ -299,7 +299,7 @@ I6 routine.
|
|||
<span class="identifier">current_sentence</span><span class="plain"> = </span><span class="functiontext">Phrases::declaration_node</span><span class="plain">(</span><span class="identifier">ph</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_phrase</span><span class="plain">(2, </span><span class="identifier">ph</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_PhraseNamedI6Failed</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_PhraseNamedI6Failed</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, defining the phrase '%2' with a piece of Inform 6 "</span>
|
||||
<span class="string">"code, but also giving it a name as a function to be used in an "</span>
|
||||
|
|
|
@ -41,7 +41,7 @@ defined as "At 9:00 AM: ..." But two values are special:
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The structure use_as_event is accessed in 3/pd, 5/lp, 5/ut, 5/un, 5/ins, 6/rlt, 6/nv, 7/ss, 7/hdn, 7/ns, 7/oaf, 7/rs, 8/ie, 9/tfa, 9/tbath, 9/rpt, 9/tc, 9/ma, 9/rk, 9/ass, 9/imp, 9/pd, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/tti, 26/pc, 26/ts, 27/cm and here.</p>
|
||||
<p class="endnote">The structure use_as_event is accessed in 3/pd, 5/lp, 5/ut, 5/un, 5/ins, 6/rlt, 6/nv, 7/ns, 7/oaf, 7/rs, 9/tfa, 9/tbath, 9/rpt, 9/tc, 9/ma, 9/rk, 9/ass, 9/imp, 9/pd, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/tti, 26/pc, 26/ts, 27/cm and here.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP4"></a><b>§4. </b>Timed events are stored in two simple arrays, processed by run-time code.
|
||||
</p>
|
||||
|
@ -91,9 +91,9 @@ defined as "At 9:00 AM: ..." But two values are special:
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Phrases::Timed::TimedEventsTable is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>), 22/cs (<a href="22-cs.html#SP11">§11</a>).</p>
|
||||
<p class="endnote">The function Phrases::Timed::TimedEventsTable is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>), 22/cs (<a href="22-cs.html#SP11">§11</a>).</p>
|
||||
|
||||
<p class="endnote">The function Phrases::Timed::TimedEventTimesTable is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>), 22/cs (<a href="22-cs.html#SP11">§11</a>).</p>
|
||||
<p class="endnote">The function Phrases::Timed::TimedEventTimesTable is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>), 22/cs (<a href="22-cs.html#SP11">§11</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP5"></a><b>§5. </b>That's it, really: everything else is just indexing.
|
||||
</p>
|
||||
|
@ -132,7 +132,7 @@ arguably shouldn't block compilation. Then again...
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Phrases::Usage::get_timing_of_event</span><span class="plain">(&(</span><span class="identifier">ph</span><span class="plain">-</span><span class="element">>usage_data</span><span class="plain">)) == </span><span class="constant">NO_FIXED_TIME</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ph</span><span class="plain">-</span><span class="element">>usage_data.uses_as_event</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
|
||||
<span class="identifier">current_sentence</span><span class="plain"> = </span><span class="identifier">ph</span><span class="plain">-</span><span class="element">>declaration_node</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_UnusedTimedEvent</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_UnusedTimedEvent</span><span class="plain">),</span>
|
||||
<span class="string">"this sets up a timed event which is never used"</span><span class="plain">,</span>
|
||||
<span class="string">"since you never use any of the phrases which could cause it. "</span>
|
||||
<span class="string">"(A timed event is just a name, and it needs other instructions "</span>
|
||||
|
@ -144,7 +144,7 @@ arguably shouldn't block compilation. Then again...
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Phrases::Timed::check_for_unused is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function Phrases::Timed::check_for_unused is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP7"></a><b>§7. </b>And here's the actual index segment.
|
||||
</p>
|
||||
|
|
|
@ -51,7 +51,7 @@
|
|||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">spec</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) ||</span>
|
||||
<span class="plain">(</span><span class="functiontext">Dash::validate_conditional_clause</span><span class="plain">(</span><span class="identifier">spec</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">)) {</span>
|
||||
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Error on: %W = $T"</span><span class="plain">, </span><span class="identifier">def</span><span class="plain">-</span><span class="element">>condition_to_match</span><span class="plain">, </span><span class="identifier">spec</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::definition_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_DefinitionBadCondition</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::definition_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_DefinitionBadCondition</span><span class="plain">),</span>
|
||||
<span class="identifier">def</span><span class="plain">-</span><span class="element">>node</span><span class="plain">,</span>
|
||||
<span class="string">"that condition makes no sense to me"</span><span class="plain">,</span>
|
||||
<span class="string">"although the preamble to the definition was properly "</span>
|
||||
|
|
|
@ -151,11 +151,11 @@ the doubled use of colons is unfortunate.)
|
|||
|
||||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Phrases::Adjectives::traverse</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
|
||||
<span class="identifier">ParseTree::traverse</span><span class="plain">(</span><span class="functiontext">Phrases::Adjectives::look_for_headers</span><span class="plain">);</span>
|
||||
<span class="identifier">ParseTree::traverse</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="functiontext">Phrases::Adjectives::look_for_headers</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Phrases::Adjectives::look_for_headers</span><span class="plain">(</span><span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">p</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ParseTree::get_type</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">) == </span><span class="constant">ROUTINE_NT</span><span class="plain">)</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ParseTree::get_type</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">) == </span><span class="identifier">ROUTINE_NT</span><span class="plain">)</span>
|
||||
<span class="reserved">if</span><span class="plain"> (<</span><span class="reserved">definition</span><span class="plain">-</span><span class="identifier">header</span><span class="plain">>(</span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">))) {</span>
|
||||
<span class="identifier">compilation_module</span><span class="plain"> *</span><span class="identifier">cm</span><span class="plain"> = </span><span class="functiontext">Modules::current</span><span class="plain">();</span>
|
||||
<span class="functiontext">Modules::set_current</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">);</span>
|
||||
|
@ -182,7 +182,7 @@ the doubled use of colons is unfortunate.)
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Phrases::Adjectives::traverse is used in 1/htc (<a href="1-htc.html#SP2_4">§2.4</a>).</p>
|
||||
<p class="endnote">The function Phrases::Adjectives::traverse is used in 1/htc (<a href="1-htc.html#SP2_3">§2.3</a>).</p>
|
||||
|
||||
<p class="endnote">The function Phrases::Adjectives::look_for_headers appears nowhere else.</p>
|
||||
|
||||
|
@ -198,8 +198,8 @@ is defined by routine or not.
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">p</span><span class="plain">-</span><span class="element">>next</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) ||</span>
|
||||
<span class="plain">(</span><span class="identifier">ParseTree::get_type</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">-</span><span class="element">>next</span><span class="plain">) != </span><span class="constant">ROUTINE_NT</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">),</span>
|
||||
<span class="plain">(</span><span class="identifier">ParseTree::get_type</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">-</span><span class="element">>next</span><span class="plain">) != </span><span class="identifier">ROUTINE_NT</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">),</span>
|
||||
<span class="string">"don't leave me in suspense"</span><span class="plain">,</span>
|
||||
<span class="string">"write a definition after 'Definition:'!"</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain">;</span>
|
||||
|
@ -241,7 +241,7 @@ is defined by routine or not.
|
|||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">the_format</span><span class="plain"> == </span><span class="constant">DEFINED_IN_SOME_WAY_NOT_YET_KNOWN</span><span class="plain">) ||</span>
|
||||
<span class="plain">((</span><span class="identifier">the_format</span><span class="plain"> == </span><span class="constant">DEFINED_PHRASALLY</span><span class="plain">) && (</span><span class="identifier">q</span><span class="plain">-</span><span class="element">>down</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">))) {</span>
|
||||
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Definition tree (%d):\</span><span class="plain">n</span><span class="string">$T\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">the_format</span><span class="plain">, </span><span class="identifier">q</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::definition_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_DefinitionWithoutCondition</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::definition_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_DefinitionWithoutCondition</span><span class="plain">),</span>
|
||||
<span class="identifier">q</span><span class="plain">, </span><span class="string">"a definition must take the form 'Definition: a ... is ... if/unless "</span>
|
||||
<span class="string">"...' or else 'Definition: a ... is ...: ...'"</span><span class="plain">,</span>
|
||||
<span class="string">"but I can't make this fit either shape."</span><span class="plain">);</span>
|
||||
|
@ -250,7 +250,7 @@ is defined by routine or not.
|
|||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">Wordings::mismatched_brackets</span><span class="plain">(</span><span class="identifier">AW</span><span class="plain">)) ||</span>
|
||||
<span class="plain">((</span><span class="identifier">Wordings::nonempty</span><span class="plain">(</span><span class="identifier">NW</span><span class="plain">)) && (</span><span class="identifier">Wordings::mismatched_brackets</span><span class="plain">(</span><span class="identifier">NW</span><span class="plain">)))) {</span>
|
||||
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Definition tree:\</span><span class="plain">n</span><span class="string">$T\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">p</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::definition_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BracketedAdjective</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::definition_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BracketedAdjective</span><span class="plain">),</span>
|
||||
<span class="identifier">q</span><span class="plain">, </span><span class="string">"this definition seems to involve unexpected brackets in the name of "</span>
|
||||
<span class="string">"the adjective being defined"</span><span class="plain">,</span>
|
||||
<span class="string">"so I think I must be misreading it."</span><span class="plain">);</span>
|
||||
|
@ -296,7 +296,7 @@ offer the new adjective around and see if anybody claims it.
|
|||
<pre class="display">
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">Phrases::Adjectives::vet_name</span><span class="plain">(</span><span class="identifier">wording</span><span class="plain"> </span><span class="identifier">W</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (<</span><span class="identifier">article</span><span class="plain">>(</span><span class="identifier">W</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ArticleAsAdjective</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ArticleAsAdjective</span><span class="plain">),</span>
|
||||
<span class="string">"a defined adjective cannot consist only of an article such as "</span>
|
||||
<span class="string">"'a' or 'the'"</span><span class="plain">,</span>
|
||||
<span class="string">"since this will lead to parsing ambiguities."</span><span class="plain">);</span>
|
||||
|
@ -306,7 +306,7 @@ offer the new adjective around and see if anybody claims it.
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_count</span><span class="plain"> == 0) {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_AdjectivePunctuated</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_AdjectivePunctuated</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The sentence %1 seems to create an adjective with the name "</span>
|
||||
<span class="string">"'%2', but adjectives have to be contain only unpunctuated "</span>
|
||||
|
|
|
@ -70,7 +70,7 @@ storage: the following simple structures are used for this.
|
|||
<span class="identifier">LOGIF</span><span class="plain">(</span><span class="identifier">TIME_PERIODS</span><span class="plain">,</span>
|
||||
<span class="string">"Chronology::compile_past_action_pattern on: $A\</span><span class="plain">n</span><span class="string">at: $t\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, &</span><span class="identifier">ap</span><span class="plain">, &</span><span class="identifier">duration</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">PL::Actions::Patterns::makes_callings</span><span class="plain">(&</span><span class="identifier">ap</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_PTAPMakesCallings</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_PTAPMakesCallings</span><span class="plain">),</span>
|
||||
<span class="string">"a description of an action cannot both refer to past history "</span>
|
||||
<span class="string">"and also use '(called ...)'"</span><span class="plain">,</span>
|
||||
<span class="string">"because that would require Inform in general to remember "</span>
|
||||
|
@ -227,7 +227,7 @@ storage: the following simple structures are used for this.
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ParseTree::is</span><span class="plain">(</span><span class="identifier">spec</span><span class="plain">, </span><span class="constant">TEST_VALUE_NT</span><span class="plain">)) </span><span class="identifier">ap</span><span class="plain"> = </span><span class="functiontext">Rvalues::to_action_pattern</span><span class="plain">(</span><span class="identifier">spec</span><span class="plain">-</span><span class="element">>down</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">ap</span><span class="plain">) && (</span><span class="identifier">duration</span><span class="plain">.</span><span class="identifier">tense</span><span class="plain"> != </span><span class="identifier">IS_TENSE</span><span class="plain">)) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">duration</span><span class="plain">.</span><span class="identifier">units</span><span class="plain"> == </span><span class="identifier">TIMES_UNIT</span><span class="plain">) && (</span><span class="identifier">duration</span><span class="plain">.</span><span class="identifier">length</span><span class="plain"> >= 2)) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NoMoreRonNewcombMoment</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NoMoreRonNewcombMoment</span><span class="plain">),</span>
|
||||
<span class="string">"a condition like 'we have X', where X is an action, has either "</span>
|
||||
<span class="string">"happened for one spell or never happened at all"</span><span class="plain">,</span>
|
||||
<span class="string">"so it can't make sense to ask if it has happened two or more "</span>
|
||||
|
@ -284,7 +284,7 @@ storage: the following simple structures are used for this.
|
|||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">no_past_tenses</span><span class="plain"> >= 1024) { </span> <span class="comment">limit imposed by the Z-machine implementation</span>
|
||||
<span class="identifier">Problems::Issue::limit_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">Untestable</span><span class="plain">), </span> <span class="comment">well, not conveniently</span>
|
||||
<span class="identifier">Problems::Issue::limit_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">Untestable</span><span class="plain">), </span> <span class="comment">well, not conveniently</span>
|
||||
<span class="string">"conditions written in the past tense"</span><span class="plain">, 1024);</span>
|
||||
<span class="reserved">return</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -325,7 +325,7 @@ late to create any further past tense references, so:
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Chronology::allow_no_further_past_tenses is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function Chronology::allow_no_further_past_tenses is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP6"></a><b>§6. </b>The <code class="display"><span class="extract">{-A}</span></code> ("past actions") escape.
|
||||
A series of <code class="display"><span class="extract">if</span></code> statements checking whether each past-tense action is now
|
||||
|
@ -378,7 +378,7 @@ ever tampered with.
|
|||
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="functiontext">LocalVariables::are_we_using_table_lookup</span><span class="plain">()) && (</span><span class="identifier">once_only</span><span class="plain">)) {</span>
|
||||
<span class="identifier">once_only</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_PastTableLookup</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_PastTableLookup</span><span class="plain">),</span>
|
||||
<span class="string">"it's not safe to look up table entries in a way referring "</span>
|
||||
<span class="string">"to past history"</span><span class="plain">,</span>
|
||||
<span class="string">"because it leads to dangerous ambiguities. For instance, "</span>
|
||||
|
@ -404,7 +404,7 @@ ever tampered with.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Chronology::past_actions_i6_routines is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function Chronology::past_actions_i6_routines is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP7"></a><b>§7. </b></p>
|
||||
|
||||
|
@ -454,7 +454,7 @@ ever tampered with.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Chronology::past_tenses_i6_escape is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function Chronology::past_tenses_i6_escape is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP7_1"></a><b>§7.1. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Unpack the past</span> <span class="cwebmacronumber">7.1</span>> =
|
||||
|
@ -635,7 +635,7 @@ ever tampered with.
|
|||
<span class="constant">END_COMPILATION_MODE</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="functiontext">LocalVariables::are_we_using_table_lookup</span><span class="plain">()) && (</span><span class="identifier">once_only</span><span class="plain">)) {</span>
|
||||
<span class="identifier">once_only</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_PastTableEntries</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_PastTableEntries</span><span class="plain">),</span>
|
||||
<span class="string">"it's not safe to look up table entries in a way referring "</span>
|
||||
<span class="string">"to past history"</span><span class="plain">,</span>
|
||||
<span class="string">"because it leads to dangerous ambiguities. For instance, "</span>
|
||||
|
@ -763,7 +763,7 @@ a file stream, thus allowing rewinding:
|
|||
<span class="identifier">LOGIF</span><span class="plain">(</span><span class="identifier">TIME_PERIODS</span><span class="plain">, </span><span class="string">"Number %d: proposition $D\</span><span class="plain">n</span><span class="string">"</span><span class="plain">,</span>
|
||||
<span class="identifier">ptc</span><span class="plain">-></span><span class="identifier">allocation_id</span><span class="plain">, </span><span class="functiontext">Specifications::to_proposition</span><span class="plain">(</span><span class="identifier">spec</span><span class="plain">));</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Calculus::Propositions::contains_callings</span><span class="plain">(</span><span class="functiontext">Specifications::to_proposition</span><span class="plain">(</span><span class="identifier">spec</span><span class="plain">))) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_PastCallings</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_PastCallings</span><span class="plain">),</span>
|
||||
<span class="string">"it's not safe to use '(called ...)' in a way referring "</span>
|
||||
<span class="string">"to past history"</span><span class="plain">,</span>
|
||||
<span class="string">"because this would make a temporary value to hold the "</span>
|
||||
|
@ -931,7 +931,7 @@ times".
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Chronology::chronology_extents_i6_escape is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function Chronology::chronology_extents_i6_escape is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<hr class="tocbar">
|
||||
<ul class="toc"><li><a href="24-sf.html">Back to 'Stack Frames'</a></li><li><i>(This section ends Chapter 24: Compilation Context.)</i></li></ul><hr class="tocbar">
|
||||
|
|
|
@ -102,7 +102,7 @@ marks it as deallocated.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The structure local_variable is accessed in 3/pd, 5/lp, 5/ut, 5/un, 5/ins, 6/rlt, 6/nv, 7/ss, 7/hdn, 7/ns, 7/oaf, 7/rs, 8/ie, 9/tfa, 9/tbath, 9/rpt, 9/tc, 9/ma, 9/rk, 9/ass, 9/imp, 9/pd, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/tti, 26/pc, 26/ts, 27/cm and here.</p>
|
||||
<p class="endnote">The structure local_variable is accessed in 3/pd, 5/lp, 5/ut, 5/un, 5/ins, 6/rlt, 6/nv, 7/ns, 7/oaf, 7/rs, 9/tfa, 9/tbath, 9/rpt, 9/tc, 9/ma, 9/rk, 9/ass, 9/imp, 9/pd, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/tti, 26/pc, 26/ts, 27/cm and here.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP4"></a><b>§4. </b>A local variable needs to be stored somewhere at run-time. The obvious
|
||||
correspondence is to put these into I6 local variables, which are, in effect,
|
||||
|
@ -297,7 +297,7 @@ context of compilation for later use. That includes locals, so:
|
|||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CalledThe</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CalledThe</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In %1, you seem to be giving a temporary value a pretty "</span>
|
||||
<span class="string">"odd name - '%2', which I won't allow because it would lead to too "</span>
|
||||
|
@ -1110,7 +1110,7 @@ name or a description.
|
|||
<span class="plain">*</span><span class="identifier">X</span><span class="plain"> = 0; *</span><span class="identifier">XP</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (!(</span><span class="identifier">Wordings::eq</span><span class="plain">(</span><span class="identifier">PM_CalledWithDash_wording</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">))) {</span>
|
||||
<span class="identifier">PM_CalledWithDash_wording</span><span class="plain"> = </span><span class="identifier">W</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CalledWithDash</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CalledWithDash</span><span class="plain">),</span>
|
||||
<span class="string">"a '(called ...)' name is not allowed to include a hyphen"</span><span class="plain">,</span>
|
||||
<span class="string">"since this would look misleadingly like a declaration of kind of value it has."</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -1135,7 +1135,7 @@ name or a description.
|
|||
<span class="identifier">Problems::quote_text</span><span class="plain">(3, </span><span class="string">"a kind"</span><span class="plain">);</span>
|
||||
<span class="reserved">else</span>
|
||||
<span class="functiontext">Problems::quote_kind_of</span><span class="plain">(3, </span><span class="identifier">already</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CalledOverloaded</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CalledOverloaded</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In %1, it looks as if '%2' is going to be a temporary name which something "</span>
|
||||
<span class="string">"will be called. But I can't allow that, because it already has a meaning "</span>
|
||||
|
@ -1320,7 +1320,7 @@ worth making the change, even though the disruption would be small.)
|
|||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">lvar</span><span class="plain">-</span><span class="element">>lv_purpose</span><span class="plain"> == </span><span class="constant">LET_VALUE_LV</span><span class="plain">) && (</span><span class="identifier">lvar</span><span class="plain">-</span><span class="element">>protected</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">lvar</span><span class="plain">-</span><span class="element">>varname</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ProtectedFromLet</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ProtectedFromLet</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In %1, it looks as if you want to use 'let' to change the value of "</span>
|
||||
<span class="string">"the temporary variable '%2'. Ordinarily that would be fine, but it's "</span>
|
||||
|
@ -1452,7 +1452,7 @@ value.
|
|||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">LocalVariables::add_calling_to_condition</span><span class="plain">(</span><span class="reserved">local_variable</span><span class="plain"> *</span><span class="identifier">lvar</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">current_session_number</span><span class="plain"> < 0) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"no PM session"</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">callings_in_condition_sp</span><span class="plain"> + 1 == </span><span class="constant">MAX_CALLINGS_IN_MATCH</span><span class="plain">)</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">), </span> <span class="comment">or very hard, anyway</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">), </span> <span class="comment">or very hard, anyway</span>
|
||||
<span class="string">"that makes too complicated a condition to test"</span><span class="plain">,</span>
|
||||
<span class="string">"with all of those clauses involving 'called' values."</span><span class="plain">);</span>
|
||||
<span class="reserved">else</span><span class="plain"> {</span>
|
||||
|
|
|
@ -43,7 +43,7 @@ store the block stack in the only instance of a private structure.
|
|||
<span class="plain">} </span><span class="reserved">block_stack</span><span class="plain">;</span>
|
||||
|
||||
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">phrase_block</span><span class="plain"> {</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">control_structure_phrase</span><span class="plain"> *</span><span class="identifier">from_structure</span><span class="plain">; </span> <span class="comment">e.g., "if" or "while"</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">control_structure_phrase</span><span class="plain"> *</span><span class="identifier">from_structure</span><span class="plain">; </span> <span class="comment">e.g., "if" or "while"</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">block_location</span><span class="plain">; </span> <span class="comment">where block begins</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">switch_val</span><span class="plain">; </span> <span class="comment">for a switch statement</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">inter_schema</span><span class="plain"> *</span><span class="identifier">tail_schema</span><span class="plain">; </span> <span class="comment">code to add when the block closes</span>
|
||||
|
@ -196,7 +196,7 @@ for the loop hasn't been compiled yet.)
|
|||
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Frames::Blocks::beginning_block_phrase</span><span class="plain">(</span><span class="reserved">control_structure_phrase</span><span class="plain"> *</span><span class="identifier">csp</span><span class="plain">) {</span>
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Frames::Blocks::beginning_block_phrase</span><span class="plain">(</span><span class="identifier">control_structure_phrase</span><span class="plain"> *</span><span class="identifier">csp</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">current_block_stack</span><span class="element">.pb_sp</span><span class="plain"> == </span><span class="constant">MAX_BLOCK_NESTING</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_count</span><span class="plain"> == 0) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"block stack overflow"</span><span class="plain">);</span>
|
||||
<span class="functiontext">Frames::Blocks::pop_stack</span><span class="plain">();</span>
|
||||
|
@ -323,7 +323,7 @@ many of them.
|
|||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">Frames::Blocks::inside_a_loop_body</span><span class="plain">(</span><span class="reserved">void</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"> = </span><span class="identifier">current_block_stack</span><span class="element">.pb_sp</span><span class="plain">-1; </span><span class="identifier">i</span><span class="plain"> >= 0; </span><span class="identifier">i</span><span class="plain">--)</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Sentences::RuleSubtrees::is_a_loop</span><span class="plain">(</span><span class="identifier">current_block_stack</span><span class="element">.pb_stack</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">]</span><span class="element">.from_structure</span><span class="plain">))</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ControlStructures::is_a_loop</span><span class="plain">(</span><span class="identifier">current_block_stack</span><span class="element">.pb_stack</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">]</span><span class="element">.from_structure</span><span class="plain">))</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -349,7 +349,7 @@ expression whose evaluation requires the use of a phrase.
|
|||
|
||||
<span class="identifier">wchar_t</span><span class="plain"> *</span><span class="functiontext">Frames::Blocks::name_of_current_block</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">block_being_compiled</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Sentences::RuleSubtrees::incipit</span><span class="plain">(</span><span class="identifier">block_being_compiled</span><span class="plain">-</span><span class="element">>from_structure</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">ControlStructures::incipit</span><span class="plain">(</span><span class="identifier">block_being_compiled</span><span class="plain">-</span><span class="element">>from_structure</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="identifier">parse_node</span><span class="plain"> *</span><span class="functiontext">Frames::Blocks::start_of_current_block</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
|
||||
|
@ -385,7 +385,7 @@ So we do this by hand, jumping to a label placed just after the loop ends.
|
|||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">unique_breakage_count</span><span class="plain"> = 0;</span>
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Frames::Blocks::emit_break</span><span class="plain">(</span><span class="reserved">void</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"> = </span><span class="identifier">current_block_stack</span><span class="element">.pb_sp</span><span class="plain">-1; </span><span class="identifier">i</span><span class="plain"> >= 0; </span><span class="identifier">i</span><span class="plain">--)</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Sentences::RuleSubtrees::permits_break</span><span class="plain">(</span><span class="identifier">current_block_stack</span><span class="element">.pb_stack</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">]</span><span class="element">.from_structure</span><span class="plain">)) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ControlStructures::permits_break</span><span class="plain">(</span><span class="identifier">current_block_stack</span><span class="element">.pb_stack</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">]</span><span class="element">.from_structure</span><span class="plain">)) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">current_block_stack</span><span class="element">.pb_stack</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">]</span><span class="element">.label_following</span><span class="plain"> == -1)</span>
|
||||
<span class="identifier">current_block_stack</span><span class="element">.pb_stack</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">]</span><span class="element">.label_following</span><span class="plain"> =</span>
|
||||
<span class="identifier">unique_breakage_count</span><span class="plain">++;</span>
|
||||
|
|
|
@ -195,7 +195,7 @@ earlier invocation list (in what may be another setting entirely).
|
|||
<span class="functiontext">Phrases::TypeData::describe_manner_of_return</span><span class="plain">(</span><span class="identifier">manner_expected</span><span class="plain">,</span>
|
||||
<span class="plain">&(</span><span class="identifier">phrase_being_compiled</span><span class="plain">-</span><span class="element">>type_data</span><span class="plain">), &</span><span class="identifier">K</span><span class="plain">));</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">K</span><span class="plain">) </span><span class="functiontext">Problems::quote_kind</span><span class="plain">(4, </span><span class="identifier">K</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_WrongEndToPhrase</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_WrongEndToPhrase</span><span class="plain">));</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">K</span><span class="plain">)</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The line %1 seems to be a way that the phrase you're defining can come "</span>
|
||||
|
@ -586,7 +586,7 @@ no subsequent lines are looked at.
|
|||
<span class="identifier">Produce::inv_call_iname</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">(), </span><span class="functiontext">Hierarchy::find</span><span class="plain">(</span><span class="constant">ARGUMENTTYPEFAILED_HL</span><span class="plain">));</span>
|
||||
<span class="identifier">Produce::down</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">());</span>
|
||||
<span class="identifier">Produce::val</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">(), </span><span class="identifier">K_number</span><span class="plain">, </span><span class="identifier">LITERAL_IVAL</span><span class="plain">, (</span><span class="identifier">inter_t</span><span class="plain">) </span><span class="identifier">sl</span><span class="plain">.</span><span class="identifier">line_number</span><span class="plain">);</span>
|
||||
<span class="identifier">inform_extension</span><span class="plain"> *</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">SourceFiles::get_extension_corresponding</span><span class="plain">(</span><span class="identifier">sl</span><span class="plain">.</span><span class="identifier">file_of_origin</span><span class="plain">);</span>
|
||||
<span class="identifier">inform_extension</span><span class="plain"> *</span><span class="identifier">E</span><span class="plain"> = </span><span class="identifier">Extensions::corresponding_to</span><span class="plain">(</span><span class="identifier">sl</span><span class="plain">.</span><span class="identifier">file_of_origin</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">E</span><span class="plain">) </span><span class="identifier">Produce::val</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">(), </span><span class="identifier">K_number</span><span class="plain">, </span><span class="identifier">LITERAL_IVAL</span><span class="plain">, (</span><span class="identifier">inter_t</span><span class="plain">) </span><span class="identifier">E</span><span class="plain">-></span><span class="identifier">allocation_id</span><span class="plain"> + 1);</span>
|
||||
<span class="identifier">Produce::up</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">());</span>
|
||||
</pre>
|
||||
|
|
|
@ -365,7 +365,7 @@ charlatans" and what they "deserve". I'm a better person now.
|
|||
<span class="plain">*</span><span class="identifier">X</span><span class="plain"> = </span><span class="constant">PROBLEM_INSUB</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadInlineExpansion</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadInlineExpansion</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but when I looked that phrase up I found that its inline "</span>
|
||||
<span class="string">"definition included the bracing {%2}. Text written in braces like this, "</span>
|
||||
|
@ -483,7 +483,7 @@ the presence of annotations can change what we do.
|
|||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nlv</span><span class="plain">) </span><span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">nlv</span><span class="plain">-</span><span class="element">>name</span><span class="plain">);</span>
|
||||
<span class="reserved">else</span><span class="plain"> </span><span class="functiontext">Problems::quote_spec</span><span class="plain">(2, </span><span class="identifier">supplied</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NotAnLvalue</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NotAnLvalue</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but that seems to mean changing '%2', which "</span>
|
||||
<span class="string">"is a constant and can't be altered."</span><span class="plain">);</span>
|
||||
|
@ -629,7 +629,7 @@ its own when kind variables are in play.
|
|||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(2, </span><span class="identifier">K</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NoNaturalDefault2</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NoNaturalDefault2</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"To achieve %1, we'd need to be able to store a default value of "</span>
|
||||
<span class="string">"the kind '%2', but there's no natural choice for this."</span><span class="plain">);</span>
|
||||
|
@ -819,7 +819,7 @@ character:
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BackspaceWithdrawn</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BackspaceWithdrawn</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"I attempted to compile %1 using its inline definition, "</span>
|
||||
<span class="string">"but this contained the invalid annotation '{backspace}', "</span>
|
||||
|
@ -1263,7 +1263,7 @@ having this annotation seems the smaller of the two warts.
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Rvalues::is_CONSTANT_of_kind</span><span class="plain">(</span><span class="identifier">supplied</span><span class="plain">, </span><span class="identifier">K_text</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_spec</span><span class="plain">(2, </span><span class="identifier">supplied</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_Misboxed</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_Misboxed</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"I attempted to compile %1, but the text '%2' supplied to be a "</span>
|
||||
<span class="string">"boxed quotation wasn't a constant piece of text in double-quotes. "</span>
|
||||
|
@ -1407,14 +1407,14 @@ the problem messages are phrased differently if something goes wrong.
|
|||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind_of</span><span class="plain">(2, </span><span class="identifier">supplied</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">returning_from_rule</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RuleNotAllowedOutcome</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RuleNotAllowedOutcome</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1 as something to be a successful outcome of a rule, which "</span>
|
||||
<span class="string">"has the kind %2; but this is not a rule which is allowed to have a value "</span>
|
||||
<span class="string">"as its outcome."</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RedundantReturnKOV</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RedundantReturnKOV</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1 as the outcome of a phrase, %2, but in the definition of "</span>
|
||||
<span class="string">"something which was not a phrase to decide a value."</span><span class="plain">);</span>
|
||||
|
@ -1436,13 +1436,13 @@ the problem messages are phrased differently if something goes wrong.
|
|||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(2, </span><span class="identifier">kind_supplied</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(3, </span><span class="identifier">kind_needed</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">returning_from_rule</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RuleOutcomeWrongKind</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RuleOutcomeWrongKind</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1 as the outcome of a rule which produces a value, but this "</span>
|
||||
<span class="string">"was the wrong kind of value: %2 rather than %3."</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ReturnWrongKind</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ReturnWrongKind</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1 as the outcome of a phrase to decide a value, but this was "</span>
|
||||
<span class="string">"the wrong kind of value: %2 rather than %3."</span><span class="plain">);</span>
|
||||
|
@ -1603,7 +1603,7 @@ rule), and also makes a note for indexing purposes.
|
|||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">supplied</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NonconstantEvent</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NonconstantEvent</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but '%2' isn't the name of any timed event that "</span>
|
||||
<span class="string">"I know of. (These need to be set up in a special way, like so - "</span>
|
||||
|
@ -1626,7 +1626,7 @@ rule), and also makes a note for indexing purposes.
|
|||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_stream</span><span class="plain">(2, </span><span class="identifier">sche</span><span class="plain">-></span><span class="identifier">command</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadInlineTag</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadInlineTag</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"I attempted to compile %1 using its inline definition, "</span>
|
||||
<span class="string">"but this contained the invalid annotation '%2'."</span><span class="plain">);</span>
|
||||
|
@ -1948,7 +1948,7 @@ default values when created, so they are always typesafe anyway.
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">rv</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(2, </span><span class="identifier">K</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NoNaturalDefault</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NoNaturalDefault</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"To achieve %1, we'd need to be able to store a default value of "</span>
|
||||
<span class="string">"the kind '%2', but there's no natural choice for this."</span><span class="plain">);</span>
|
||||
|
@ -2144,7 +2144,7 @@ story title).
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Kinds::Behaviour::is_quasinumerical</span><span class="plain">(</span><span class="identifier">K1</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(2, </span><span class="identifier">K1</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantIncrementKind</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantIncrementKind</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"To achieve %1, we'd need to be able to add or subtract 1 from "</span>
|
||||
<span class="string">"a value of the kind '%2', but there's no good way to do this."</span><span class="plain">);</span>
|
||||
|
@ -2565,7 +2565,7 @@ mathematical definitions in the Standard Rules.
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RescaleWithdrawn</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_RescaleWithdrawn</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"I attempted to compile %1 using its inline definition, "</span>
|
||||
<span class="string">"but this contained the invalid annotation '{-rescale:...}', "</span>
|
||||
|
@ -2727,7 +2727,7 @@ especially those involving complicated linguistic propositions. For example:
|
|||
<span class="functiontext">Equations::emit_solution</span><span class="plain">(</span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">tokens</span><span class="plain">-</span><span class="element">>args</span><span class="plain">[0]),</span>
|
||||
<span class="functiontext">Rvalues::to_equation</span><span class="plain">(</span><span class="identifier">tokens</span><span class="plain">-</span><span class="element">>args</span><span class="plain">[1]));</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_SolvedNameless</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_SolvedNameless</span><span class="plain">),</span>
|
||||
<span class="string">"only specific named equations can be solved"</span><span class="plain">,</span>
|
||||
<span class="string">"not equations arrived at by further calculations or choices. (Sorry: "</span>
|
||||
<span class="string">"but there would be no safe way to determine when an equation could "</span>
|
||||
|
@ -2899,7 +2899,7 @@ of defined adjectives. So:
|
|||
<span class="identifier">adjectival_phrase</span><span class="plain"> *</span><span class="identifier">aph</span><span class="plain"> = </span><span class="identifier">Adjectives::parse</span><span class="plain">(</span><span class="identifier">LW</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">aph</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Adjectives::Meanings::write_adjective_test_routine</span><span class="plain">(</span><span class="identifier">VH</span><span class="plain">, </span><span class="identifier">aph</span><span class="plain">)) </span><span class="reserved">return</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::unlocated_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::unlocated_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">),</span>
|
||||
<span class="string">"You tried to use '(+' and '+)' to expand to the Inform 6 routine "</span>
|
||||
<span class="string">"address of an adjective, but it was an adjective with no meaning."</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain">;</span>
|
||||
|
|
|
@ -51,7 +51,7 @@ should always be supplied for "To..." phrases, but left null for rules.
|
|||
<span class="reserved">applicability_condition</span><span class="plain"> *</span><span class="identifier">acl</span><span class="plain">) {</span>
|
||||
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">ph</span><span class="plain">-</span><span class="element">>declaration_node</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) ||</span>
|
||||
<span class="plain">(</span><span class="identifier">ParseTree::get_type</span><span class="plain">(</span><span class="identifier">ph</span><span class="plain">-</span><span class="element">>declaration_node</span><span class="plain">) != </span><span class="constant">ROUTINE_NT</span><span class="plain">) ||</span>
|
||||
<span class="plain">(</span><span class="identifier">ParseTree::get_type</span><span class="plain">(</span><span class="identifier">ph</span><span class="plain">-</span><span class="element">>declaration_node</span><span class="plain">) != </span><span class="identifier">ROUTINE_NT</span><span class="plain">) ||</span>
|
||||
<span class="plain">(</span><span class="identifier">Wordings::empty</span><span class="plain">(</span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">ph</span><span class="plain">-</span><span class="element">>declaration_node</span><span class="plain">))))</span>
|
||||
<span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"tried to compile phrase with bad ROUTINE node"</span><span class="plain">);</span>
|
||||
<span class="identifier">LOGIF</span><span class="plain">(</span><span class="identifier">PHRASE_COMPILATION</span><span class="plain">, </span><span class="string">"Compiling phrase:\</span><span class="plain">n</span><span class="string">$T"</span><span class="plain">, </span><span class="identifier">ph</span><span class="plain">-</span><span class="element">>declaration_node</span><span class="plain">);</span>
|
||||
|
@ -164,7 +164,7 @@ to us, so we end our routine with code which certainly performs a return.
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">K</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Kinds::RunTime::emit_default_value_as_val</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">, </span><span class="identifier">EMPTY_WORDING</span><span class="plain">,</span>
|
||||
<span class="string">"value decided by this phrase"</span><span class="plain">) != </span><span class="identifier">TRUE</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_DefaultDecideFails</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_DefaultDecideFails</span><span class="plain">),</span>
|
||||
<span class="string">"it's not possible to decide such a value"</span><span class="plain">,</span>
|
||||
<span class="string">"so this can't be allowed."</span><span class="plain">);</span>
|
||||
<span class="identifier">Produce::val</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">(), </span><span class="identifier">K_number</span><span class="plain">, </span><span class="identifier">LITERAL_IVAL</span><span class="plain">, 0);</span>
|
||||
|
@ -226,9 +226,9 @@ phrase to be different from the number version, and so on.
|
|||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">Routines::Compile::code_line</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">statement_count</span><span class="plain">, </span><span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">p</span><span class="plain">) {</span>
|
||||
<span class="reserved">control_structure_phrase</span><span class="plain"> *</span><span class="identifier">csp</span><span class="plain"> = </span><span class="identifier">ParseTree::get_control_structure_used</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">);</span>
|
||||
<span class="identifier">control_structure_phrase</span><span class="plain"> *</span><span class="identifier">csp</span><span class="plain"> = </span><span class="identifier">ParseTree::get_control_structure_used</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">);</span>
|
||||
<span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">to_compile</span><span class="plain"> = </span><span class="identifier">p</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Sentences::RuleSubtrees::opens_block</span><span class="plain">(</span><span class="identifier">csp</span><span class="plain">)) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ControlStructures::opens_block</span><span class="plain">(</span><span class="identifier">csp</span><span class="plain">)) {</span>
|
||||
<span class="functiontext">Frames::Blocks::beginning_block_phrase</span><span class="plain">(</span><span class="identifier">csp</span><span class="plain">);</span>
|
||||
<span class="identifier">to_compile</span><span class="plain"> = </span><span class="identifier">p</span><span class="plain">-</span><span class="element">>down</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -409,7 +409,7 @@ henceforth to be true, so we simply compile empty code in that case.
|
|||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">cs</span><span class="plain">));</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ParseTree::is</span><span class="plain">(</span><span class="identifier">cs</span><span class="plain">, </span><span class="constant">TEST_VALUE_NT</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadNow1</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadNow1</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but although '%2' is a condition which it is legal "</span>
|
||||
<span class="string">"to test with 'if', 'when', and so forth, it is not something I "</span>
|
||||
|
@ -418,14 +418,14 @@ henceforth to be true, so we simply compile empty code in that case.
|
|||
<span class="string">"need to adjust those circumstances."</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ParseTree::is</span><span class="plain">(</span><span class="identifier">cs</span><span class="plain">, </span><span class="constant">LOGICAL_AND_NT</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadNow2</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadNow2</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but 'now' does not work with the condition '%2' "</span>
|
||||
<span class="string">"because it can only make one wish come true at a time: so it "</span>
|
||||
<span class="string">"doesn't like the 'and'. Try rewriting as two 'now's in a row?"</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadNow3</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadNow3</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but '%2' isn't the sort of condition which can be "</span>
|
||||
<span class="string">"made to be true, in the way that 'the ball is on the table' can be "</span>
|
||||
|
@ -447,7 +447,7 @@ henceforth to be true, so we simply compile empty code in that case.
|
|||
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"$T\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">cs</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(...));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(...));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but '%2' isn't a condition, so I can't see how to "</span>
|
||||
<span class="string">"make it true from here on."</span><span class="plain">);</span>
|
||||
|
@ -466,7 +466,7 @@ henceforth to be true, so we simply compile empty code in that case.
|
|||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">cs</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(...));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(...));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but '%2' isn't an action, so I can't see how to try it."</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
|
@ -490,7 +490,7 @@ henceforth to be true, so we simply compile empty code in that case.
|
|||
<span class="plain">(</span><span class="identifier">ram</span><span class="plain"> != </span><span class="constant">RULE_NOT_IN_RULEBOOK_EFF</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">to_compile</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_MisplacedRulebookOutcome2</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_MisplacedRulebookOutcome2</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but this is a rulebook outcome which can only be used "</span>
|
||||
<span class="string">"within rulebooks which recognise it. You've used it in a definition "</span>
|
||||
|
@ -503,7 +503,7 @@ henceforth to be true, so we simply compile empty code in that case.
|
|||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">to_compile</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(3, </span><span class="identifier">rb</span><span class="plain">-</span><span class="element">>primary_name</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_MisplacedRulebookOutcome</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_MisplacedRulebookOutcome</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but this is a rulebook outcome which can only be used "</span>
|
||||
<span class="string">"within rulebooks which recognise it. You've used it in a rule which "</span>
|
||||
|
@ -610,7 +610,7 @@ henceforth to be true, so we simply compile empty code in that case.
|
|||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">ParseTree::get_kind_of_value</span><span class="plain">(</span><span class="identifier">case_spec</span><span class="plain">) == </span><span class="identifier">NULL</span><span class="plain">) && (</span><span class="identifier">I</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(2, </span><span class="identifier">switch_kind</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CaseValueNonConstant</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CaseValueNonConstant</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The case %1 is required to be a constant value, rather than "</span>
|
||||
<span class="string">"something which has different values at different times: "</span>
|
||||
|
@ -621,7 +621,7 @@ henceforth to be true, so we simply compile empty code in that case.
|
|||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(2, </span><span class="identifier">case_kind</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(3, </span><span class="identifier">switch_kind</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CaseValueMismatch</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CaseValueMismatch</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The case %1 has the wrong kind of value for the possibilities "</span>
|
||||
<span class="string">"being chosen from: %2 instead of %3."</span><span class="plain">);</span>
|
||||
|
@ -656,7 +656,7 @@ henceforth to be true, so we simply compile empty code in that case.
|
|||
<span class="identifier">current_sentence</span><span class="plain"> = </span><span class="identifier">A</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">A</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_spec</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_evaluation</span><span class="plain">(</span><span class="identifier">A</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CaseValueDuplicated</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CaseValueDuplicated</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The case %1 occurs more than once in this 'if' switch."</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
||||
|
@ -777,7 +777,7 @@ henceforth to be true, so we simply compile empty code in that case.
|
|||
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">csp</span><span class="plain"> == </span><span class="identifier">switch_CSP</span><span class="plain">) </span><<span class="cwebmacro">Compile a switch tail</span> <span class="cwebmacronumber">5.4.2</span>>
|
||||
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">csp</span><span class="plain"> == </span><span class="identifier">say_CSP</span><span class="plain">) </span><<span class="cwebmacro">Compile a say tail</span> <span class="cwebmacronumber">5.4.3</span>>
|
||||
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">csp</span><span class="plain"> == </span><span class="identifier">instead_CSP</span><span class="plain">) </span><<span class="cwebmacro">Compile an instead tail</span> <span class="cwebmacronumber">5.4.4</span>>
|
||||
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Sentences::RuleSubtrees::opens_block</span><span class="plain">(</span><span class="identifier">csp</span><span class="plain">)) </span><<span class="cwebmacro">Compile a loop tail</span> <span class="cwebmacronumber">5.4.5</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">ControlStructures::opens_block</span><span class="plain">(</span><span class="identifier">csp</span><span class="plain">)) </span><<span class="cwebmacro">Compile a loop tail</span> <span class="cwebmacronumber">5.4.5</span>><span class="plain">;</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
@ -822,7 +822,7 @@ the ceaseless repetition of the keyword "case". Thus, <code class="display"><spa
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CaseValueUnknown</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CaseValueUnknown</span><span class="plain">),</span>
|
||||
<span class="string">"I don't recognise this case value"</span><span class="plain">,</span>
|
||||
<span class="string">"that is, the value written after the '--'."</span><span class="plain">);</span>
|
||||
</pre>
|
||||
|
@ -1226,7 +1226,7 @@ the "[if...]".
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_issued</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">inv</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ComplicatedSayStructure</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ComplicatedSayStructure</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In the text at %1, the text substitution '[%2]' ought to occur as the "</span>
|
||||
<span class="string">"middle part of its construction, but it appears to be on its own."</span><span class="plain">);</span>
|
||||
|
@ -1249,7 +1249,7 @@ the "[if...]".
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_issued</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">inv</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ComplicatedSayStructure2</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ComplicatedSayStructure2</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In the text at %1, the text substitution '[%2]' ought to occur as the "</span>
|
||||
<span class="string">"ending part of its construction, but it appears to be on its own."</span><span class="plain">);</span>
|
||||
|
@ -1270,7 +1270,7 @@ the "[if...]".
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_issued</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_SayIfNested</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_SayIfNested</span><span class="plain">),</span>
|
||||
<span class="string">"a second '[if ...]' text substitution occurs inside an existing one"</span><span class="plain">,</span>
|
||||
<span class="string">"which makes this text too complicated. While a single text can contain "</span>
|
||||
<span class="string">"more than one '[if ...]', this can only happen if the old if is finished "</span>
|
||||
|
@ -1293,7 +1293,7 @@ the "[if...]".
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_issued</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_SayOverComplex</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_SayOverComplex</span><span class="plain">),</span>
|
||||
<span class="string">"this is too complex a text substitution"</span><span class="plain">,</span>
|
||||
<span class="string">"and needs to be simplified. You might find it helful to define "</span>
|
||||
<span class="string">"a new text substitution of your own ('To say fiddly details: "</span>
|
||||
|
@ -1313,7 +1313,7 @@ the "[if...]".
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_issued</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_SayOtherwiseWithoutIf</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_SayOtherwiseWithoutIf</span><span class="plain">),</span>
|
||||
<span class="string">"an '[otherwise]' text substitution occurs where there appears to be no "</span>
|
||||
<span class="string">"[if ...]"</span><span class="plain">,</span>
|
||||
<span class="string">"which doesn't make sense - there is nothing for it to be otherwise to."</span><span class="plain">);</span>
|
||||
|
@ -1334,7 +1334,7 @@ the "[if...]".
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_issued</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">inv</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ComplicatedSayStructure5</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ComplicatedSayStructure5</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In the text at %1, the '[%2]' ought to occur inside an [if ...], but "</span>
|
||||
<span class="string">"is cut off because it has been interleaved with a complicated say "</span>
|
||||
|
@ -1356,7 +1356,7 @@ the "[if...]".
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_issued</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TwoSayOtherwises</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TwoSayOtherwises</span><span class="plain">),</span>
|
||||
<span class="string">"there's already an (unconditional) \</span><span class="plain">"</span><span class="string">[otherwise]\</span><span class="plain">"</span><span class="string"> or \</span><span class="plain">"</span><span class="string">[else]\</span><span class="plain">"</span><span class="string"> "</span>
|
||||
<span class="string">"in this text substitution"</span><span class="plain">,</span>
|
||||
<span class="string">"so it doesn't make sense to follow that with a further one."</span><span class="plain">);</span>
|
||||
|
@ -1375,7 +1375,7 @@ the "[if...]".
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_issued</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_SayEndIfWithoutSayIf</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_SayEndIfWithoutSayIf</span><span class="plain">),</span>
|
||||
<span class="string">"an '[end if]' text substitution occurs where there appears to be no "</span>
|
||||
<span class="string">"[if ...]"</span><span class="plain">,</span>
|
||||
<span class="string">"which doesn't make sense - there is nothing for it to end."</span><span class="plain">);</span>
|
||||
|
@ -1396,7 +1396,7 @@ the "[if...]".
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_issued</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">inv</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ComplicatedSayStructure4</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ComplicatedSayStructure4</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In the text at %1, the '[%2]' is cut off from its [if ...], because "</span>
|
||||
<span class="string">"it has been interleaved with a complicated say construction."</span><span class="plain">);</span>
|
||||
|
@ -1427,7 +1427,7 @@ the "[if...]".
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">stinv</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">stinv</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ComplicatedSayStructure3</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ComplicatedSayStructure3</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In the text at %1, the text substitution '[%2]' seems to start a "</span>
|
||||
<span class="string">"complicated say construction, but it doesn't have a matching end."</span><span class="plain">);</span>
|
||||
|
|
|
@ -825,7 +825,7 @@ invocations listed:
|
|||
<span class="reserved">for</span><span class="plain"> (</span><span class="identifier">j</span><span class="plain">=0; </span><span class="identifier">j</span><span class="plain"><</span><span class="functiontext">Invocations::get_no_tokens</span><span class="plain">(</span><span class="identifier">inv</span><span class="plain">); </span><span class="identifier">j</span><span class="plain">++) {</span>
|
||||
<span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">tok</span><span class="plain"> = </span><span class="functiontext">Invocations::get_token_as_parsed</span><span class="plain">(</span><span class="identifier">inv</span><span class="plain">, </span><span class="identifier">j</span><span class="plain">);</span>
|
||||
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">" %d: $P\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">j</span><span class="plain">, </span><span class="identifier">tok</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ParseTree::is</span><span class="plain">(</span><span class="identifier">tok</span><span class="plain">-</span><span class="element">>down</span><span class="plain">, </span><span class="constant">INVOCATION_LIST_NT</span><span class="plain">)) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ParseTree::is</span><span class="plain">(</span><span class="identifier">tok</span><span class="plain">-</span><span class="element">>down</span><span class="plain">, </span><span class="identifier">INVOCATION_LIST_NT</span><span class="plain">)) {</span>
|
||||
<span class="identifier">LOG_INDENT</span><span class="plain">;</span>
|
||||
<span class="functiontext">Invocations::log_list_in_detail</span><span class="plain">(</span><span class="identifier">tok</span><span class="plain">-</span><span class="element">>down</span><span class="plain">-</span><span class="element">>down</span><span class="plain">);</span>
|
||||
<span class="identifier">LOG_OUTDENT</span><span class="plain">;</span>
|
||||
|
|
|
@ -136,7 +136,7 @@ the phrase under, and must make the actual registration.
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ph</span><span class="plain"> != </span><span class="identifier">last_phrase_where_rp_problemed</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_QuotedInPhrase</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_QuotedInPhrase</span><span class="plain">),</span>
|
||||
<span class="string">"phrases can't be defined with quoted text as part of the fixed wording"</span><span class="plain">,</span>
|
||||
<span class="string">"so something like 'To go \</span><span class="plain">"</span><span class="string">voluntarily\</span><span class="plain">"</span><span class="string"> to jail: ...' is not allowed."</span><span class="plain">);</span>
|
||||
<span class="identifier">last_phrase_where_rp_problemed</span><span class="plain"> = </span><span class="identifier">ph</span><span class="plain">;</span>
|
||||
|
@ -155,7 +155,7 @@ the phrase under, and must make the actual registration.
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ph</span><span class="plain"> != </span><span class="identifier">last_phrase_where_rp_problemed</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_AdjacentTokens</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_AdjacentTokens</span><span class="plain">),</span>
|
||||
<span class="string">"phrases can't be defined so that they have two bracketed varying elements "</span>
|
||||
<span class="string">"immediately next to each other"</span><span class="plain">,</span>
|
||||
<span class="string">"but instead need at least one fixed word in between. Thus 'To combine "</span>
|
||||
|
@ -178,7 +178,7 @@ the phrase under, and must make the actual registration.
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ph</span><span class="plain"> != </span><span class="identifier">last_phrase_where_rp_problemed</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_MustBeOneWord</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_MustBeOneWord</span><span class="plain">),</span>
|
||||
<span class="string">"a 'To...' phrase must contain at least one fixed word"</span><span class="plain">,</span>
|
||||
<span class="string">"that is, one word other than the bracketed variables. So a declaration "</span>
|
||||
<span class="string">"like 'To (N - number): ...' is not allowed."</span><span class="plain">);</span>
|
||||
|
@ -327,7 +327,7 @@ word, though.)
|
|||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">Str::eq_wide_string</span><span class="plain">(</span><span class="identifier">a_form</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"say"</span><span class="plain">)) &&</span>
|
||||
<span class="plain">(</span><span class="identifier">i</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">phrase_mc</span><span class="plain"> != </span><span class="constant">SAY_PHRASE_MC</span><span class="plain">))</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ph</span><span class="plain"> != </span><span class="identifier">last_phrase_where_rp_problemed</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_SaySlashed</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_SaySlashed</span><span class="plain">),</span>
|
||||
<span class="string">"'say' is not allowed as the first word of a phrase"</span><span class="plain">,</span>
|
||||
<span class="string">"even when presented as one of a number of slashed alternatives. "</span>
|
||||
<span class="string">"(This is because 'say' is reserved for creating text substitutions.)"</span><span class="plain">);</span>
|
||||
|
|
|
@ -148,7 +148,7 @@ Inform's own version number), but it belongs nowhere else either, so:
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function FundamentalConstants::emit_build_number is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function FundamentalConstants::emit_build_number is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP3"></a><b>§3. </b>This also doesn't really belong here, but...
|
||||
</p>
|
||||
|
@ -158,7 +158,7 @@ Inform's own version number), but it belongs nowhere else either, so:
|
|||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">FundamentalConstants::veto_number</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">X</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (((</span><span class="identifier">X</span><span class="plain"> > 32767) || (</span><span class="identifier">X</span><span class="plain"> < -32768)) &&</span>
|
||||
<span class="plain">(</span><span class="identifier">TargetVMs::is_16_bit</span><span class="plain">(</span><span class="functiontext">Task::vm</span><span class="plain">()))) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LiteralOverflow</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LiteralOverflow</span><span class="plain">),</span>
|
||||
<span class="string">"you use a number which is too large"</span><span class="plain">,</span>
|
||||
<span class="string">"at least with the Settings for this project as they currently "</span>
|
||||
<span class="string">"are. (Change to Glulx to be allowed to use much larger numbers.)"</span><span class="plain">);</span>
|
||||
|
|
|
@ -126,7 +126,7 @@ though seasoned I6 hackers tend to reach for them a little sooner than that.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_WhenDefiningUnknown</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_WhenDefiningUnknown</span><span class="plain">),</span>
|
||||
<span class="string">"I do not understand what definition you're referring to"</span><span class="plain">,</span>
|
||||
<span class="string">"so I can't make an Inform 6 inclusion there."</span><span class="plain">);</span>
|
||||
</pre>
|
||||
|
@ -141,7 +141,7 @@ though seasoned I6 hackers tend to reach for them a little sooner than that.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BeforeTheLibrary</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BeforeTheLibrary</span><span class="plain">),</span>
|
||||
<span class="string">"this syntax was withdrawn in January 2008"</span><span class="plain">,</span>
|
||||
<span class="string">"in favour of a more finely controlled I6 inclusion command. The effect "</span>
|
||||
<span class="string">"you want can probably be achieved by writing 'after \</span><span class="plain">"</span><span class="string">Definitions.i6t\</span><span class="plain">"</span><span class="string">.' "</span>
|
||||
|
@ -160,7 +160,7 @@ handled here: if we see one, we ignore it.
|
|||
|
||||
<pre class="display">
|
||||
<span class="reserved">sentence_handler</span><span class="plain"> </span><span class="identifier">INFORM6CODE_SH_handler</span><span class="plain"> =</span>
|
||||
<span class="plain">{ </span><span class="constant">INFORM6CODE_NT</span><span class="plain">, -1, 2, </span><span class="functiontext">Config::Inclusions::inform_6_inclusion</span><span class="plain"> };</span>
|
||||
<span class="plain">{ </span><span class="identifier">INFORM6CODE_NT</span><span class="plain">, -1, 2, </span><span class="functiontext">Config::Inclusions::inform_6_inclusion</span><span class="plain"> };</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Config::Inclusions::inform_6_inclusion</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="identifier">current_sentence</span><span class="plain"> = </span><span class="identifier">PN</span><span class="plain">;</span>
|
||||
|
@ -293,7 +293,7 @@ code instructions; we remember what's needed ourselves:
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadI6Inclusion</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadI6Inclusion</span><span class="plain">),</span>
|
||||
<span class="string">"this is not a form of I6 code inclusion I recognise"</span><span class="plain">,</span>
|
||||
<span class="string">"because the clause at the end telling me where to put the code "</span>
|
||||
<span class="string">"excerpt is not one of the possibilities I know. The clause can "</span>
|
||||
|
|
|
@ -52,16 +52,16 @@ and <code class="display"><span class="extract">+)</span></code> Inform 7 escape
|
|||
|
||||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">I6T::interpret_kindt</span><span class="plain">(</span><span class="identifier">filename</span><span class="plain"> *</span><span class="identifier">segment_file</span><span class="plain">) {</span>
|
||||
<span class="functiontext">I6T::interpreter_shared</span><span class="plain">(</span><span class="constant">KINDT_MODE</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, -1, </span><span class="identifier">segment_file</span><span class="plain">);</span>
|
||||
<span class="functiontext">I6T::interpreter_shared</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="constant">KINDT_MODE</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, -1, </span><span class="identifier">segment_file</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">I6T::interpret_indext</span><span class="plain">(</span><span class="identifier">filename</span><span class="plain"> *</span><span class="identifier">indext_file</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">do_not_generate_index</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">)</span>
|
||||
<span class="functiontext">I6T::interpreter_shared</span><span class="plain">(</span><span class="constant">INDEXT_MODE</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, -1, </span><span class="identifier">indext_file</span><span class="plain">);</span>
|
||||
<span class="functiontext">I6T::interpreter_shared</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="constant">INDEXT_MODE</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, -1, </span><span class="identifier">indext_file</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">I6T::interpret_i6t</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="identifier">wchar_t</span><span class="plain"> *</span><span class="identifier">sf</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">N_escape</span><span class="plain">) {</span>
|
||||
<span class="functiontext">I6T::interpreter_shared</span><span class="plain">(</span><span class="constant">I6TCODE_MODE</span><span class="plain">, </span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">sf</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">N_escape</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">);</span>
|
||||
<span class="functiontext">I6T::interpreter_shared</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="constant">I6TCODE_MODE</span><span class="plain">, </span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">sf</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">N_escape</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
|
@ -69,7 +69,7 @@ and <code class="display"><span class="extract">+)</span></code> Inform 7 escape
|
|||
|
||||
<p class="endnote">The function I6T::interpret_kindt appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function I6T::interpret_indext is used in 3/nl (<a href="3-nl.html#SP3">§3</a>).</p>
|
||||
<p class="endnote">The function I6T::interpret_indext is used in 3/nl (<a href="3-nl.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function I6T::interpret_i6t is used in 26/i6i (<a href="26-i6i.html#SP7">§7</a>, <a href="26-i6i.html#SP8">§8</a>), 26/uo (<a href="26-uo.html#SP17">§17</a>).</p>
|
||||
|
||||
|
@ -82,7 +82,7 @@ is run only to call other functions.
|
|||
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">I6T::interpreter_shared</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">int_mode</span><span class="plain">, </span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="identifier">wchar_t</span><span class="plain"> *</span><span class="identifier">sf</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">segment_name</span><span class="plain">,</span>
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">I6T::interpreter_shared</span><span class="plain">(</span><span class="identifier">parse_node_tree</span><span class="plain"> *</span><span class="identifier">T</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">int_mode</span><span class="plain">, </span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="identifier">wchar_t</span><span class="plain"> *</span><span class="identifier">sf</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">segment_name</span><span class="plain">,</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">N_escape</span><span class="plain">, </span><span class="identifier">filename</span><span class="plain"> *</span><span class="identifier">index_template</span><span class="plain">) {</span>
|
||||
<span class="reserved">FILE</span><span class="plain"> *</span><span class="identifier">Input_File</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">col</span><span class="plain"> = 1, </span><span class="identifier">cr</span><span class="plain">, </span><span class="identifier">sfp</span><span class="plain"> = 0;</span>
|
||||
|
@ -106,7 +106,7 @@ is run only to call other functions.
|
|||
<<span class="cwebmacro">Read rest of line as argument</span> <span class="cwebmacronumber">2.3</span>><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">Str::get_first_char</span><span class="plain">(</span><span class="identifier">argument</span><span class="plain">) == </span><span class="character">'!'</span><span class="plain">) ||</span>
|
||||
<span class="plain">(</span><span class="identifier">Str::get_first_char</span><span class="plain">(</span><span class="identifier">argument</span><span class="plain">) == 0)) </span><span class="reserved">continue</span><span class="plain">; </span> <span class="comment">skip blanks and comments</span>
|
||||
<span class="identifier">Kinds::Interpreter::despatch_kind_command</span><span class="plain">(</span><span class="identifier">argument</span><span class="plain">);</span>
|
||||
<span class="identifier">Kinds::Interpreter::despatch_kind_command</span><span class="plain">(</span><span class="identifier">T</span><span class="plain">, </span><span class="identifier">argument</span><span class="plain">);</span>
|
||||
<span class="reserved">continue</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">cr</span><span class="plain"> == </span><span class="character">'{'</span><span class="plain">) {</span>
|
||||
|
@ -168,14 +168,14 @@ file.
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">segment_name</span><span class="plain">) > 0) {</span>
|
||||
<span class="identifier">Input_File</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">STDERR</span><span class="plain">, </span><span class="string">"inform: Unable to open segment <%S>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">segment_name</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::unlocated_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">), </span> <span class="comment">or anyway not usefully testable</span>
|
||||
<span class="identifier">Problems::Issue::unlocated_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">), </span> <span class="comment">or anyway not usefully testable</span>
|
||||
<span class="string">"I couldn't open a requested I6T segment: see the console "</span>
|
||||
<span class="string">"output for details."</span><span class="plain">);</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">index_template</span><span class="plain">) {</span>
|
||||
<span class="identifier">Input_File</span><span class="plain"> = </span><span class="identifier">Filenames::fopen</span><span class="plain">(</span><span class="identifier">index_template</span><span class="plain">, </span><span class="string">"r"</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Input_File</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
|
||||
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Filename was %f\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">index_template</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::unlocated_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">), </span> <span class="comment">or anyway not usefully testable</span>
|
||||
<span class="identifier">Problems::Issue::unlocated_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">), </span> <span class="comment">or anyway not usefully testable</span>
|
||||
<span class="string">"I couldn't open the template file for the index."</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -331,7 +331,7 @@ I6 code like so:
|
|||
|
||||
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"command: <%S> argument: <%S>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">command</span><span class="plain">, </span><span class="identifier">argument</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_stream</span><span class="plain">(1, </span><span class="identifier">command</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::unlocated_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TemplateError</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::unlocated_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TemplateError</span><span class="plain">),</span>
|
||||
<span class="string">"In an explicit Inform 6 code insertion, I recognise a few special "</span>
|
||||
<span class="string">"notations in the form '{-command}'. This time, though, the unknown notation "</span>
|
||||
<span class="string">"{-%1} has been used, and this is an error. (It seems very unlikely indeed "</span>
|
||||
|
@ -417,7 +417,7 @@ using template-hacking there are a handful of cases that can't be avoided, so...
|
|||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">I6T::error</span><span class="plain">(</span><span class="reserved">char</span><span class="plain"> *</span><span class="identifier">message</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::quote_text</span><span class="plain">(1, </span><span class="identifier">message</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(...));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(...));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"I ran into a mistake in a template file command: %1. The I6 "</span>
|
||||
<span class="string">"template files (or .i6t files) are a very low-level part of Inform, "</span>
|
||||
|
|
|
@ -58,7 +58,7 @@ reserves no memory.
|
|||
<span class="reserved">label_namespace</span><span class="plain"> *</span><span class="functiontext">JumpLabels::new_namespace</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">compilation_module</span><span class="plain"> *</span><span class="identifier">cm</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">) > </span><span class="constant">MAX_NAMESPACE_PREFIX_LENGTH</span><span class="plain">) {</span>
|
||||
<span class="plain">#</span><span class="identifier">ifdef</span><span class="plain"> </span><span class="constant">CORE_MODULE</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LabelNamespaceTooLong</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LabelNamespaceTooLong</span><span class="plain">),</span>
|
||||
<span class="string">"a label namespace prefix is too long"</span><span class="plain">,</span>
|
||||
<span class="string">"and should be shortened to a few alphabetic characters."</span><span class="plain">);</span>
|
||||
<span class="plain">#</span><span class="identifier">endif</span>
|
||||
|
@ -181,7 +181,7 @@ specification <code class="display"><span class="extract">--> 0</span></code>
|
|||
|
||||
<p class="endnote">The function JumpLabels::allocate_counter is used in 25/cii (<a href="25-cii.html#SP3_4_6">§3.4.6</a>).</p>
|
||||
|
||||
<p class="endnote">The function JumpLabels::compile_necessary_storage is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function JumpLabels::compile_necessary_storage is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<hr class="tocbar">
|
||||
<ul class="toc"><li><a href="26-lt.html">Back to 'List Together'</a></li><li><a href="26-ct.html">Continue with 'Compiled Text'</a></li></ul><hr class="tocbar">
|
||||
|
|
|
@ -70,7 +70,7 @@
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The structure plugin_call is accessed in 3/pd, 5/lp, 5/ut, 5/un, 5/ins, 6/rlt, 6/nv, 7/ss, 7/hdn, 7/ns, 7/oaf, 7/rs, 8/ie, 9/tfa, 9/tbath, 9/rpt, 9/tc, 9/ma, 9/rk, 9/ass, 9/imp, 9/pd, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/tti, 26/ts, 27/cm and here.</p>
|
||||
<p class="endnote">The structure plugin_call is accessed in 3/pd, 5/lp, 5/ut, 5/un, 5/ins, 6/rlt, 6/nv, 7/ns, 7/oaf, 7/rs, 9/tfa, 9/tbath, 9/rpt, 9/tc, 9/ma, 9/rk, 9/ass, 9/imp, 9/pd, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/tti, 26/ts, 27/cm and here.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP4"></a><b>§4. </b></p>
|
||||
|
||||
|
|
|
@ -56,7 +56,7 @@
|
|||
|
||||
<span class="plain">#</span><span class="identifier">ifdef</span><span class="plain"> </span><span class="identifier">IF_MODULE</span>
|
||||
<span class="reserved">sentence_handler</span><span class="plain"> </span><span class="identifier">BIBLIOGRAPHIC_SH_handler</span><span class="plain"> =</span>
|
||||
<span class="plain">{ </span><span class="constant">BIBLIOGRAPHIC_NT</span><span class="plain">, -1, 2, </span><span class="identifier">PL::Bibliographic::bibliographic_data</span><span class="plain"> };</span>
|
||||
<span class="plain">{ </span><span class="identifier">BIBLIOGRAPHIC_NT</span><span class="plain">, -1, 2, </span><span class="identifier">PL::Bibliographic::bibliographic_data</span><span class="plain"> };</span>
|
||||
<span class="plain">#</span><span class="identifier">endif</span>
|
||||
</pre>
|
||||
|
||||
|
@ -238,7 +238,7 @@ present.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Plugins::Manage::start is used in 1/htc (<a href="1-htc.html#SP2_2">§2.2</a>).</p>
|
||||
<p class="endnote">The function Plugins::Manage::start is used in 1/mr (<a href="1-mr.html#SP1_1">§1.1</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP9"></a><b>§9. </b>Although most of Inform's brain remains the same, the outermost part can
|
||||
be put together from whatever skills are required: our modular oblongata,
|
||||
|
@ -344,7 +344,7 @@ with the following.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">Untestable</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">Untestable</span><span class="plain">),</span>
|
||||
<span class="string">"the core of the Inform language cannot be removed"</span><span class="plain">,</span>
|
||||
<span class="string">"because then what should we do? What should we ever do?"</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain">;</span>
|
||||
|
@ -371,7 +371,7 @@ with the following.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Plugins::Manage::start_plugins is used in 1/htc (<a href="1-htc.html#SP2_4">§2.4</a>).</p>
|
||||
<p class="endnote">The function Plugins::Manage::start_plugins is used in 1/htc (<a href="1-htc.html#SP2_3">§2.3</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP12"></a><b>§12. Describing the current VM. </b></p>
|
||||
|
||||
|
|
|
@ -301,7 +301,7 @@ after the call parameters, and is used only as a scratch variable.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TooManyLocals</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TooManyLocals</span><span class="plain">),</span>
|
||||
<span class="string">"there are too many temporarily-named values in this phrase"</span><span class="plain">,</span>
|
||||
<span class="string">"which may be a sign that it is complicated enough to need breaking up "</span>
|
||||
<span class="string">"into smaller phrases making use of each other. "</span>
|
||||
|
|
|
@ -246,7 +246,7 @@ without notice.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TestBadRequirements</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TestBadRequirements</span><span class="plain">),</span>
|
||||
<span class="string">"I didn't recognise the requirements for this test scenario"</span><span class="plain">,</span>
|
||||
<span class="string">"which should be 'test ... with ... in ...' or '... "</span>
|
||||
<span class="string">"holding ...'"</span><span class="plain">);</span>
|
||||
|
@ -263,7 +263,7 @@ without notice.
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="plain">*</span><span class="identifier">X</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TestQuoted</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TestQuoted</span><span class="plain">),</span>
|
||||
<span class="string">"test scenarios must have unquoted names"</span><span class="plain">,</span>
|
||||
<span class="string">"so 'test garden with ...' is allowed but not 'test \</span><span class="plain">"</span><span class="string">garden\</span><span class="plain">"</span><span class="string"> with...'"</span><span class="plain">);</span>
|
||||
</pre>
|
||||
|
@ -279,7 +279,7 @@ without notice.
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="plain">*</span><span class="identifier">X</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TestMultiWord</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TestMultiWord</span><span class="plain">),</span>
|
||||
<span class="string">"test scenarios must have single-word names"</span><span class="plain">,</span>
|
||||
<span class="string">"so 'test garden with ...' is allowed but not 'test garden gate with...'"</span><span class="plain">);</span>
|
||||
</pre>
|
||||
|
@ -295,7 +295,7 @@ without notice.
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="plain">*</span><span class="identifier">X</span><span class="plain"> = </span><span class="constant">NO_INTT</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_UnknownInternalTest</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_UnknownInternalTest</span><span class="plain">),</span>
|
||||
<span class="string">"that's an internal test case which I don't know"</span><span class="plain">,</span>
|
||||
<span class="string">"so I am taking no action."</span><span class="plain">);</span>
|
||||
</pre>
|
||||
|
@ -310,7 +310,7 @@ without notice.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TestDoubleWith</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TestDoubleWith</span><span class="plain">),</span>
|
||||
<span class="string">"the second 'with' should be 'holding'"</span><span class="plain">,</span>
|
||||
<span class="string">"as in 'test frogs with \</span><span class="plain">"</span><span class="string">get frogs\</span><span class="plain">"</span><span class="string"> holding net' rather than "</span>
|
||||
<span class="string">"'test frogs with \</span><span class="plain">"</span><span class="string">get frogs\</span><span class="plain">"</span><span class="string"> with net'."</span><span class="plain">);</span>
|
||||
|
@ -373,7 +373,7 @@ without notice.
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Wordings::match</span><span class="plain">(</span><span class="identifier">XW</span><span class="plain">, </span><span class="identifier">test</span><span class="plain">-</span><span class="element">>name</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">test</span><span class="plain">-</span><span class="element">>sentence_test_declared_at</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(2, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TestDuplicate</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TestDuplicate</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"Two test scripts have been set up with the same name: "</span>
|
||||
<span class="string">"%1 and %2."</span><span class="plain">);</span>
|
||||
|
@ -406,7 +406,7 @@ without notice.
|
|||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">PL::Parsing::TestScripts::check_test_command</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">p</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::eq_wide_string</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"undo"</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TestContainsUndo</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TestContainsUndo</span><span class="plain">),</span>
|
||||
<span class="string">"this test script contains an UNDO command"</span><span class="plain">,</span>
|
||||
<span class="string">"which the story file has no way to automate the running of. "</span>
|
||||
<span class="string">"(An UNDO is such a complete reversion to the previous state "</span>
|
||||
|
@ -415,7 +415,7 @@ without notice.
|
|||
<span class="reserved">return</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">) > </span><span class="constant">MAX_LENGTH_OF_COMMAND</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TestCommandTooLong</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TestCommandTooLong</span><span class="plain">),</span>
|
||||
<span class="string">"this test script contains a command which is too long"</span><span class="plain">,</span>
|
||||
<span class="string">"and cannot be fed into Inform for automatic testing. "</span>
|
||||
<span class="string">"(The format for a test script is a sequence of commands, "</span>
|
||||
|
@ -531,11 +531,11 @@ without notice.
|
|||
|
||||
<p class="endnote">The function PL::Parsing::TestScripts::check_test_command is used in <a href="#SP8_1">§8.1</a>.</p>
|
||||
|
||||
<p class="endnote">The function PL::Parsing::TestScripts::write_text is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function PL::Parsing::TestScripts::write_text is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<p class="endnote">The function PL::Parsing::TestScripts::TestScriptSub_stub_routine is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function PL::Parsing::TestScripts::TestScriptSub_stub_routine is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<p class="endnote">The function PL::Parsing::TestScripts::TestScriptSub_routine is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function PL::Parsing::TestScripts::TestScriptSub_routine is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP11"></a><b>§11. </b></p>
|
||||
|
||||
|
@ -685,7 +685,7 @@ without notice.
|
|||
|
||||
<p class="endnote">The function PL::Parsing::TestScripts::new_internal is used in <a href="#SP9">§9</a>.</p>
|
||||
|
||||
<p class="endnote">The function PL::Parsing::TestScripts::InternalTestCases_routine is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function PL::Parsing::TestScripts::InternalTestCases_routine is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<p class="endnote">The function PL::Parsing::TestScripts::begin_internal_reporting is used in 20/eq (<a href="20-eq.html#SP52">§52</a>).</p>
|
||||
|
||||
|
|
|
@ -65,7 +65,7 @@ such as "The yourself object" in
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="plain">*</span><span class="identifier">X</span><span class="plain"> = </span><span class="constant">INVALID_I6TR</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TranslatedUnknownCategory</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TranslatedUnknownCategory</span><span class="plain">),</span>
|
||||
<span class="string">"that isn't one of the things which can be translated to I6"</span><span class="plain">,</span>
|
||||
<span class="string">"and should be '... variable', '... property', '... object', "</span>
|
||||
<span class="string">"'... kind', '... rule', or '... action'. For instance, 'The yourself "</span>
|
||||
|
@ -109,7 +109,7 @@ will be required to pass <code class="display"><span class="extract"><extra-r
|
|||
<span class="identifier">ParseTree::annotate_int</span><span class="plain">(</span><span class="identifier">pn</span><span class="plain">, </span><span class="constant">category_of_I6_translation_ANNOT</span><span class="plain">, </span><span class="constant">INVALID_I6TR</span><span class="plain">);</span>
|
||||
<<span class="cwebmacro">Ensure that we are translating to a quoted I6 identifier</span> <span class="cwebmacronumber">5.2</span>><span class="plain">;</span>
|
||||
<span class="identifier">ParseTree::annotate_int</span><span class="plain">(</span><span class="identifier">pn</span><span class="plain">, </span><span class="constant">category_of_I6_translation_ANNOT</span><span class="plain">, </span><span class="identifier">category</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">responses_list</span><span class="plain">) </span><span class="identifier">ParseTree::graft</span><span class="plain">(</span><span class="identifier">responses_list</span><span class="plain">, </span><span class="identifier">p2</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">responses_list</span><span class="plain">) </span><span class="identifier">ParseTree::graft</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">responses_list</span><span class="plain">, </span><span class="identifier">p2</span><span class="plain">);</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="identifier">category</span><span class="plain"> = </span><span class="identifier">ParseTree::int_annotation</span><span class="plain">(</span><span class="identifier">pn</span><span class="plain">, </span><span class="constant">category_of_I6_translation_ANNOT</span><span class="plain">);</span>
|
||||
|
||||
<<span class="cwebmacro">Take immediate action on the translation where possible</span> <span class="cwebmacronumber">5.1</span>><span class="plain">;</span>
|
||||
|
@ -164,7 +164,7 @@ traversing the parse tree to look for translation sentences of the right sort.
|
|||
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">responses_list</span><span class="plain"> = <<</span><span class="identifier">rp</span><span class="plain">>>;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">valid</span><span class="plain">) </span><<span class="cwebmacro">Dequote it and see if it's valid</span> <span class="cwebmacronumber">5.2.1</span>><span class="character">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">valid</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TranslatedToNonIdentifier</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TranslatedToNonIdentifier</span><span class="plain">),</span>
|
||||
<span class="string">"Inform 7 constructions can only translate into quoted I6 identifiers"</span><span class="plain">,</span>
|
||||
<span class="string">"which must be strings of 1 to 31 characters drawn from 1, 2, ..., 9, "</span>
|
||||
<span class="string">"a or A, b or B, ..., z or Z, or underscore '_', except that the "</span>
|
||||
|
@ -223,7 +223,7 @@ traversing the parse tree to look for translation sentences of the right sort.
|
|||
<span class="identifier">code</span><span class="plain">, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">), </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">);</span>
|
||||
<span class="functiontext">Rules::now_rule_defines_response</span><span class="plain">(</span><span class="identifier">R</span><span class="plain">, </span><span class="identifier">code</span><span class="plain">, </span><span class="identifier">resp</span><span class="plain">);</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_I6ResponsesAwry</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_I6ResponsesAwry</span><span class="plain">),</span>
|
||||
<span class="string">"additional information about I6 translation of a rule can "</span>
|
||||
<span class="string">"only take the form of a list of responses"</span><span class="plain">,</span>
|
||||
<span class="string">"each quoted and followed by a bracketed letter."</span><span class="plain">);</span>
|
||||
|
|
|
@ -171,7 +171,7 @@ by hand with a sentence in the source text.
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="plain">*</span><span class="identifier">X</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_UseTranslatesNotI6</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_UseTranslatesNotI6</span><span class="plain">),</span>
|
||||
<span class="string">"that translates into something which isn't a simple I6 inclusion"</span><span class="plain">,</span>
|
||||
<span class="string">"placed in '(-' and '-)' markers."</span><span class="plain">);</span>
|
||||
</pre>
|
||||
|
@ -322,7 +322,7 @@ there is no need to translate this to other languages.)
|
|||
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (<</span><span class="identifier">use</span><span class="plain">-</span><span class="identifier">sentence</span><span class="plain">-</span><span class="identifier">object</span><span class="plain">>(</span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">))) </span><<span class="cwebmacro">Set the option given in this word range</span> <span class="cwebmacronumber">11.1</span>><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">traverse</span><span class="plain"> == 1) </span><span class="reserved">return</span><span class="plain">;</span>
|
||||
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Used: %W\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_UnknownUseOption</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_UnknownUseOption</span><span class="plain">),</span>
|
||||
<span class="string">"that isn't a 'Use' option known to me"</span><span class="plain">,</span>
|
||||
<span class="string">"and needs to be one of the ones listed in the documentation."</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -351,7 +351,7 @@ there is no need to translate this to other languages.)
|
|||
<span class="identifier">inform_extension</span><span class="plain"> *</span><span class="identifier">E</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<<span class="cwebmacro">Adjust the minimum setting</span> <span class="cwebmacronumber">11.1.1</span>><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">uo</span><span class="plain">-</span><span class="element">>source_file_scoped</span><span class="plain">) {</span>
|
||||
<span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">SourceFiles::get_extension_corresponding</span><span class="plain">(</span><span class="identifier">Lexer::file_of_origin</span><span class="plain">(</span><span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">OW</span><span class="plain">)));</span>
|
||||
<span class="identifier">E</span><span class="plain"> = </span><span class="identifier">Extensions::corresponding_to</span><span class="plain">(</span><span class="identifier">Lexer::file_of_origin</span><span class="plain">(</span><span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">OW</span><span class="plain">)));</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">E</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) { </span> <span class="comment">that is, if used in the main source text</span>
|
||||
<span class="identifier">uo</span><span class="plain">-</span><span class="element">>option_used</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="identifier">uo</span><span class="plain">-</span><span class="element">>where_used</span><span class="plain"> = </span><span class="identifier">current_sentence</span><span class="plain">;</span>
|
||||
|
@ -392,7 +392,7 @@ there is no need to translate this to other languages.)
|
|||
<pre class="displaydefn">
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">uo</span><span class="plain">-</span><span class="element">>minimum_setting_value</span><span class="plain"> == -1) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">min_setting</span><span class="plain"> != -1)</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_UONotNumerical</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_UONotNumerical</span><span class="plain">),</span>
|
||||
<span class="string">"that 'Use' option does not have a numerical setting"</span><span class="plain">,</span>
|
||||
<span class="string">"but is either used or not used."</span><span class="plain">);</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
||||
|
@ -415,7 +415,7 @@ there is no need to translate this to other languages.)
|
|||
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">new_identifier</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">new_identifier</span><span class="plain">, </span><span class="string">"%+W"</span><span class="plain">, </span><span class="identifier">Wordings::one_word</span><span class="plain">(</span><span class="identifier">w1</span><span class="plain">));</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">new_identifier</span><span class="plain">) > 63) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadICLIdentifier</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadICLIdentifier</span><span class="plain">),</span>
|
||||
<span class="string">"that is too long to be an ICL identifier"</span><span class="plain">,</span>
|
||||
<span class="string">"so can't be the name of any I6 memory setting."</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -450,7 +450,7 @@ there is no need to translate this to other languages.)
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function UseOptions::set_immediate_option_flags is used in <a href="#SP11_1">§11.1</a>, 3/rst (<a href="3-rst.html#SP3">§3</a>).</p>
|
||||
<p class="endnote">The function UseOptions::set_immediate_option_flags is used in <a href="#SP11_1">§11.1</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP13"></a><b>§13. </b>Some use options need to acted on immediately — for instance, if they're
|
||||
set in the "Options.txt" file and they affect how Inform parses subsequent
|
||||
|
@ -485,7 +485,7 @@ those which need immediate action.
|
|||
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain">[1]) {</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="constant">AUTHORIAL_MODESTY_UO</span><span class="plain">: {</span>
|
||||
<span class="identifier">inform_extension</span><span class="plain"> *</span><span class="identifier">E</span><span class="plain"> =</span>
|
||||
<span class="functiontext">SourceFiles::get_extension_corresponding</span><span class="plain">(</span>
|
||||
<span class="identifier">Extensions::corresponding_to</span><span class="plain">(</span>
|
||||
<span class="identifier">Lexer::file_of_origin</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="reserved">if</span><span class="plain"> (</span><span class="identifier">E</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">Extensions::set_general_authorial_modesty</span><span class="plain">();</span>
|
||||
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">Extensions::set_authorial_modesty</span><span class="plain">(</span><span class="identifier">E</span><span class="plain">);</span>
|
||||
|
@ -562,7 +562,7 @@ pragma is set:
|
|||
<pre class="display">
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">UseOptions::uo_set_from</span><span class="plain">(</span><span class="reserved">use_option</span><span class="plain"> *</span><span class="identifier">uo</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">category</span><span class="plain">, </span><span class="identifier">inform_extension</span><span class="plain"> *</span><span class="identifier">E</span><span class="plain">) {</span>
|
||||
<span class="identifier">source_file</span><span class="plain"> *</span><span class="identifier">sf</span><span class="plain"> = (</span><span class="identifier">uo</span><span class="plain">-</span><span class="element">>where_used</span><span class="plain">)?(</span><span class="identifier">Lexer::file_of_origin</span><span class="plain">(</span><span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">uo</span><span class="plain">-</span><span class="element">>where_used</span><span class="plain">)))):</span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">inform_extension</span><span class="plain"> *</span><span class="identifier">efo</span><span class="plain"> = (</span><span class="identifier">sf</span><span class="plain">)?(</span><span class="functiontext">SourceFiles::get_extension_corresponding</span><span class="plain">(</span><span class="identifier">sf</span><span class="plain">)):</span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">inform_extension</span><span class="plain"> *</span><span class="identifier">efo</span><span class="plain"> = (</span><span class="identifier">sf</span><span class="plain">)?(</span><span class="identifier">Extensions::corresponding_to</span><span class="plain">(</span><span class="identifier">sf</span><span class="plain">)):</span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">category</span><span class="plain">) {</span>
|
||||
<span class="reserved">case</span><span class="plain"> 1: </span><span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">sf</span><span class="plain">) && (</span><span class="identifier">efo</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> 2: </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">sf</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
|
||||
|
@ -603,7 +603,7 @@ and problem messages must be issued.)
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function UseOptions::compile is used in 1/htc (<a href="1-htc.html#SP2_6">§2.6</a>).</p>
|
||||
<p class="endnote">The function UseOptions::compile is used in 1/htc (<a href="1-htc.html#SP2_5">§2.5</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP18"></a><b>§18. </b>I6 memory settings need to be issued as ICL commands at the top of the I6
|
||||
source code: see the DM4 for details.
|
||||
|
@ -628,7 +628,7 @@ source code: see the DM4 for details.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function UseOptions::compile_icl_commands is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function UseOptions::compile_icl_commands is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP19"></a><b>§19. </b>Now for indexing, where there's nothing much to see.
|
||||
</p>
|
||||
|
@ -794,7 +794,7 @@ one to test them, one to print them.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function UseOptions::TestUseOption_routine is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function UseOptions::TestUseOption_routine is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP21_1"></a><b>§21.1. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Compile the TestUseOption routine</span> <span class="cwebmacronumber">21.1</span>> =
|
||||
|
@ -927,7 +927,7 @@ one to test them, one to print them.
|
|||
|
||||
<p class="endnote">The function UseOptions::ranking_table_given appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function UseOptions::configure_template is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function UseOptions::configure_template is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<hr class="tocbar">
|
||||
<ul class="toc"><li><a href="26-i6i.html">Back to 'Inform 6 Inclusions'</a></li><li><a href="26-lt.html">Continue with 'List Together'</a></li></ul><hr class="tocbar">
|
||||
|
|
|
@ -51,20 +51,20 @@ level-0 headings, which are the nodes from which these blocks of source text han
|
|||
|
||||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Modules::traverse_to_define</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
|
||||
<span class="identifier">ParseTree::traverse</span><span class="plain">(</span><span class="functiontext">Modules::look_for_cu</span><span class="plain">);</span>
|
||||
<span class="identifier">ParseTree::traverse</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="functiontext">Modules::look_for_cu</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Modules::look_for_cu</span><span class="plain">(</span><span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">p</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ParseTree::get_type</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">) == </span><span class="identifier">HEADING_NT</span><span class="plain">) {</span>
|
||||
<span class="reserved">heading</span><span class="plain"> *</span><span class="identifier">h</span><span class="plain"> = </span><span class="identifier">ParseTree::get_embodying_heading</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">h</span><span class="plain">) && (</span><span class="identifier">h</span><span class="plain">-</span><span class="element">>level</span><span class="plain"> == 0)) </span><span class="functiontext">Modules::new</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">);</span>
|
||||
<span class="identifier">heading</span><span class="plain"> *</span><span class="identifier">h</span><span class="plain"> = </span><span class="identifier">InbuildModule::heading</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">h</span><span class="plain">) && (</span><span class="identifier">h</span><span class="plain">-></span><span class="identifier">level</span><span class="plain"> == 0)) </span><span class="functiontext">Modules::new</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="identifier">compilation_module</span><span class="plain"> *</span><span class="functiontext">Modules::new</span><span class="plain">(</span><span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">from</span><span class="plain">) {</span>
|
||||
<span class="identifier">source_location</span><span class="plain"> </span><span class="identifier">sl</span><span class="plain"> = </span><span class="identifier">Wordings::location</span><span class="plain">(</span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">from</span><span class="plain">));</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">sl</span><span class="plain">.</span><span class="identifier">file_of_origin</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"null foo"</span><span class="plain">);</span>
|
||||
<span class="identifier">inform_extension</span><span class="plain"> *</span><span class="identifier">owner</span><span class="plain"> = </span><span class="functiontext">SourceFiles::get_extension_corresponding</span><span class="plain">(</span>
|
||||
<span class="identifier">inform_extension</span><span class="plain"> *</span><span class="identifier">owner</span><span class="plain"> = </span><span class="identifier">Extensions::corresponding_to</span><span class="plain">(</span>
|
||||
<span class="identifier">Lexer::file_of_origin</span><span class="plain">(</span><span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">from</span><span class="plain">))));</span>
|
||||
|
||||
<span class="identifier">compilation_module</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain"> = </span><span class="identifier">Packaging::new_cm</span><span class="plain">();</span>
|
||||
|
@ -95,7 +95,7 @@ level-0 headings, which are the nodes from which these blocks of source text han
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Modules::traverse_to_define is used in 1/htc (<a href="1-htc.html#SP2_4">§2.4</a>).</p>
|
||||
<p class="endnote">The function Modules::traverse_to_define is used in 1/htc (<a href="1-htc.html#SP2_3">§2.3</a>).</p>
|
||||
|
||||
<p class="endnote">The function Modules::look_for_cu appears nowhere else.</p>
|
||||
|
||||
|
|
|
@ -798,7 +798,7 @@ insert them into the Inter stream close to the top.
|
|||
|
||||
<p class="endnote">The structure dval_written is private to this section.</p>
|
||||
|
||||
<p class="endnote">The structure nascent_array is accessed in 5/lp, 5/un, 7/hdn, 7/ns, 7/oaf, 7/rs, 8/ie, 9/tfa, 9/tbath, 9/rpt, 9/tc, 9/ma, 9/rk, 9/ass, 9/imp, 9/pd, 10/aots, 10/teav, 10/varc, 10/cap, 11/bas, 11/tc, 11/sc, 11/sm, 12/dtd, 14/sp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/cp, 17/ts, 18/lc, 19/tb, 19/rsft, 19/tod, 21/rl, 21/rl2, 21/rps, 21/ac, 22/cs, 22/ph, 23/ad, 24/lv, 24/ch, 25/in, 25/pi, 25/cp, 26/uo, 26/tti, 27/cm and here.</p>
|
||||
<p class="endnote">The structure nascent_array is accessed in 5/lp, 5/un, 7/ns, 7/oaf, 7/rs, 9/tfa, 9/tbath, 9/rpt, 9/tc, 9/ma, 9/rk, 9/ass, 9/imp, 9/pd, 10/aots, 10/teav, 10/varc, 10/cap, 11/bas, 11/tc, 11/sc, 11/sm, 12/dtd, 14/sp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/cp, 17/ts, 18/lc, 19/tb, 19/rsft, 19/tod, 21/rl, 21/rl2, 21/rps, 21/ac, 22/cs, 22/ph, 23/ad, 24/lv, 24/ch, 25/in, 25/pi, 25/cp, 26/uo, 26/tti, 27/cm and here.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP4"></a><b>§4. </b></p>
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>3/rst</title>
|
||||
<title>2/pwst</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="Content-Language" content="en-gb">
|
||||
<link href="inweb.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
@ -11,7 +11,7 @@
|
|||
<!--Weave of '3/nl' generated by 7-->
|
||||
<ul class="crumbs"><li><a href="../webs.html">★</a></li><li><a href="index.html">core</a></li><li><a href="index.html#3">Chapter 3: Bridge to Words Module</a></li><li><b>Natural Languages</b></li></ul><p class="purpose">To manage definitions of natural languages, such as English or French, which may be used either to write Inform or to read the works it compiles.</p>
|
||||
|
||||
<ul class="toc"><li><a href="#SP1">§1. The bundle scan</a></li><li><a href="#SP2">§2. Language of play</a></li><li><a href="#SP3">§3. Indexing</a></li><li><a href="#SP5">§5. Parsing</a></li><li><a href="#SP6">§6. The natural language kind</a></li><li><a href="#SP7">§7. The adaptive person</a></li><li><a href="#SP8">§8. Including Preform syntax</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="#SP1">§1. The bundle scan</a></li><li><a href="#SP2">§2. Indexing</a></li><li><a href="#SP4">§4. Parsing</a></li><li><a href="#SP5">§5. The natural language kind</a></li><li><a href="#SP6">§6. The adaptive person</a></li><li><a href="#SP7">§7. Including Preform syntax</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="inwebparagraph"><a id="SP1"></a><b>§1. The bundle scan. </b>Early in Inform's run we scan for installed language bundle folders. This is
|
||||
done on demand (i.e., when we need to know something about languages). We
|
||||
|
@ -26,7 +26,6 @@ can simply discard the search results.
|
|||
|
||||
<pre class="display">
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">bundle_scan_made</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">language_scan_top</span><span class="plain"> = -1;</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">NaturalLanguages::scan</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">bundle_scan_made</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
||||
|
@ -34,32 +33,15 @@ can simply discard the search results.
|
|||
<span class="identifier">inbuild_requirement</span><span class="plain"> *</span><span class="identifier">req</span><span class="plain"> = </span><span class="identifier">Requirements::anything_of_genre</span><span class="plain">(</span><span class="identifier">language_genre</span><span class="plain">);</span>
|
||||
<span class="identifier">linked_list</span><span class="plain"> *</span><span class="identifier">L</span><span class="plain"> = </span><span class="identifier">NEW_LINKED_LIST</span><span class="plain">(</span><span class="identifier">inbuild_search_result</span><span class="plain">);</span>
|
||||
<span class="identifier">Nests::search_for</span><span class="plain">(</span><span class="identifier">req</span><span class="plain">, </span><span class="identifier">Inbuild::nest_list</span><span class="plain">(), </span><span class="identifier">L</span><span class="plain">);</span>
|
||||
<span class="identifier">language_scan_top</span><span class="plain"> = </span><span class="identifier">lexer_wordcount</span><span class="plain"> - 1;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function NaturalLanguages::scan is used in <a href="#SP2">§2</a>, 4/its (<a href="4-its.html#SP7">§7</a>), 8/ie (<a href="8-ie.html#SP5">§5</a>).</p>
|
||||
<p class="endnote">The function NaturalLanguages::scan appears nowhere else.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP2"></a><b>§2. Language of play. </b></p>
|
||||
|
||||
|
||||
<pre class="display">
|
||||
<span class="identifier">inform_language</span><span class="plain"> *</span><span class="functiontext">NaturalLanguages::English</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
|
||||
<span class="functiontext">NaturalLanguages::scan</span><span class="plain">();</span>
|
||||
<span class="identifier">inform_language</span><span class="plain"> *</span><span class="identifier">L</span><span class="plain"> = </span><span class="identifier">Languages::from_name</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"english"</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">L</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"unable to find English language bundle"</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">L</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function NaturalLanguages::English is used in 1/wtc (<a href="1-wtc.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP3"></a><b>§3. Indexing. </b></p>
|
||||
<p class="inwebparagraph"><a id="SP2"></a><b>§2. Indexing. </b></p>
|
||||
|
||||
|
||||
<pre class="display">
|
||||
|
@ -75,15 +57,15 @@ can simply discard the search results.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function NaturalLanguages::produce_index is used in 1/htc (<a href="1-htc.html#SP2_10">§2.10</a>).</p>
|
||||
<p class="endnote">The function NaturalLanguages::produce_index is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP4"></a><b>§4. </b></p>
|
||||
<p class="inwebparagraph"><a id="SP3"></a><b>§3. </b></p>
|
||||
|
||||
|
||||
<pre class="definitions">
|
||||
<span class="definitionkeyword">define</span> <span class="constant">NATURAL_LANGUAGES_PRESENT</span>
|
||||
</pre>
|
||||
<p class="inwebparagraph"><a id="SP5"></a><b>§5. Parsing. </b>The following matches the English-language name of a language: for example,
|
||||
<p class="inwebparagraph"><a id="SP4"></a><b>§4. Parsing. </b>The following matches the English-language name of a language: for example,
|
||||
"French". It will only make a match if Inform has successfully found a
|
||||
bundle for that language during its initial scan.
|
||||
</p>
|
||||
|
@ -102,7 +84,7 @@ bundle for that language during its initial scan.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP6"></a><b>§6. The natural language kind. </b>Inform has a kind built in called "natural language", whose values are
|
||||
<p class="inwebparagraph"><a id="SP5"></a><b>§5. The natural language kind. </b>Inform has a kind built in called "natural language", whose values are
|
||||
enumerated names: English language, French language, German language and so on.
|
||||
When the kind is created, the following routine makes these instances. We do
|
||||
this exactly as we would to create any other instance — we write a logical
|
||||
|
@ -129,7 +111,7 @@ in German; but this is how we'll do it, anyway.
|
|||
|
||||
<p class="endnote">The function NaturalLanguages::stock_nl_kind appears nowhere else.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP7"></a><b>§7. The adaptive person. </b>The following is only relevant for the language of play, whose extension will
|
||||
<p class="inwebparagraph"><a id="SP6"></a><b>§6. The adaptive person. </b>The following is only relevant for the language of play, whose extension will
|
||||
always be read in. That in turn is expected to contain a declaration like
|
||||
this one:
|
||||
</p>
|
||||
|
@ -167,7 +149,7 @@ this because we need access to it very quickly when parsing text substitutions.)
|
|||
|
||||
<p class="endnote">The function NaturalLanguages::adaptive_person appears nowhere else.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP8"></a><b>§8. Including Preform syntax. </b>At present we do this only for English, but some day...
|
||||
<p class="inwebparagraph"><a id="SP7"></a><b>§7. Including Preform syntax. </b>At present we do this only for English, but some day...
|
||||
</p>
|
||||
|
||||
|
||||
|
@ -176,7 +158,7 @@ this because we need access to it very quickly when parsing text substitutions.)
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">L</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"can't load preform from null language"</span><span class="plain">);</span>
|
||||
<span class="identifier">language_being_read_by_Preform</span><span class="plain"> = </span><span class="identifier">L</span><span class="plain">;</span>
|
||||
<span class="identifier">filename</span><span class="plain"> *</span><span class="identifier">preform_file</span><span class="plain"> = </span><span class="identifier">Filenames::in_folder</span><span class="plain">(</span><span class="identifier">Languages::path_to_bundle</span><span class="plain">(</span><span class="identifier">L</span><span class="plain">), </span><span class="identifier">I</span><span class="string">"Syntax.preform"</span><span class="plain">);</span>
|
||||
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Reading language definition from <%f>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">preform_file</span><span class="plain">);</span>
|
||||
<span class="identifier">PRINT</span><span class="plain">(</span><span class="string">"Reading language definition from <%f>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">preform_file</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">Preform::load_from_file</span><span class="plain">(</span><span class="identifier">preform_file</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
@ -185,7 +167,7 @@ this because we need access to it very quickly when parsing text substitutions.)
|
|||
|
||||
<p class="endnote">The function NaturalLanguages::load_preform is used in 4/its (<a href="4-its.html#SP7">§7</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP9"></a><b>§9. </b>Preform errors are handled here:
|
||||
<p class="inwebparagraph"><a id="SP8"></a><b>§8. </b>Preform errors are handled here:
|
||||
</p>
|
||||
|
||||
|
||||
|
@ -201,7 +183,7 @@ this because we need access to it very quickly when parsing text substitutions.)
|
|||
<span class="reserved">else</span>
|
||||
<span class="identifier">Problems::quote_wide_text</span><span class="plain">(1, </span><span class="identifier">Vocabulary::get_exemplar</span><span class="plain">(</span><span class="identifier">nt</span><span class="plain">-></span><span class="identifier">nonterminal_id</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::quote_text</span><span class="plain">(2, </span><span class="identifier">message</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">Untestable</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">Untestable</span><span class="plain">));</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">WordAssemblages::nonempty</span><span class="plain">(</span><span class="identifier">base_text</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Problems::quote_wa</span><span class="plain">(5, &</span><span class="identifier">base_text</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
|
@ -238,7 +220,7 @@ this because we need access to it very quickly when parsing text substitutions.)
|
|||
<p class="endnote">The function NaturalLanguages::preform_error appears nowhere else.</p>
|
||||
|
||||
<hr class="tocbar">
|
||||
<ul class="toc"><li><a href="3-rst.html">Back to 'Read Source Text'</a></li><li><a href="3-pd.html">Continue with 'Plural Dictionary'</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><i>(This section begins Chapter 3: Bridge to Words Module.)</i></li><li><a href="3-pd.html">Continue with 'Plural Dictionary'</a></li></ul><hr class="tocbar">
|
||||
<!--End of weave-->
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -77,7 +77,7 @@ text anyway, so the following problem messages are not too gratuitous.
|
|||
<pre class="displaydefn">
|
||||
<span class="identifier">LOOP_THROUGH_WORDING</span><span class="plain">(</span><span class="identifier">i</span><span class="plain">, </span><span class="identifier">S</span><span class="plain">)</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Vocabulary::test_flags</span><span class="plain">(</span><span class="identifier">i</span><span class="plain">, </span><span class="identifier">TEXT_MC</span><span class="plain">+</span><span class="identifier">TEXTWITHSUBS_MC</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_PluralOfQuoted</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_PluralOfQuoted</span><span class="plain">),</span>
|
||||
<span class="string">"declares a plural for a phrase containing quoted text"</span><span class="plain">,</span>
|
||||
<span class="string">"which is forbidden. Sentences like this are supposed to "</span>
|
||||
<span class="string">"declare plurals without quotation marks: for instance, "</span>
|
||||
|
@ -86,7 +86,7 @@ text anyway, so the following problem messages are not too gratuitous.
|
|||
<span class="plain">}</span>
|
||||
<span class="identifier">LOOP_THROUGH_WORDING</span><span class="plain">(</span><span class="identifier">i</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">)</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Vocabulary::test_flags</span><span class="plain">(</span><span class="identifier">i</span><span class="plain">, </span><span class="identifier">TEXT_MC</span><span class="plain">+</span><span class="identifier">TEXTWITHSUBS_MC</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_PluralIsQuoted</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_PluralIsQuoted</span><span class="plain">),</span>
|
||||
<span class="string">"declares a plural for a phrase using quoted text"</span><span class="plain">,</span>
|
||||
<span class="string">"which is forbidden. Sentences like this are supposed to "</span>
|
||||
<span class="string">"declare plurals without quotation marks: for instance, "</span>
|
||||
|
|
|
@ -381,7 +381,7 @@ early in the run when sorting cannot yet be done.
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_count</span><span class="plain"> == 0) {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">Clusters::get_name</span><span class="plain">(</span><span class="identifier">aph</span><span class="plain">-></span><span class="identifier">adjective_names</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_AdjectiveCircular</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_AdjectiveCircular</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In the sentence %1, it looks as if the definition of the adjective "</span>
|
||||
<span class="string">"'%2' may be circular."</span><span class="plain">);</span>
|
||||
|
@ -861,7 +861,7 @@ can't be avoided.
|
|||
<pre class="displaydefn">
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">early</span><span class="plain">) || (</span><span class="identifier">am</span><span class="plain">-</span><span class="element">>problems_thrown</span><span class="plain">++ > 0)) </span><span class="reserved">return</span><span class="plain">;</span>
|
||||
<span class="identifier">current_sentence</span><span class="plain"> = </span><span class="identifier">am</span><span class="plain">-</span><span class="element">>defined_at</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::adjective_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_AdjDomainUnknown</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::adjective_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_AdjDomainUnknown</span><span class="plain">),</span>
|
||||
<span class="identifier">am</span><span class="plain">-</span><span class="element">>adjective_index_text</span><span class="plain">, </span><span class="identifier">am</span><span class="plain">-</span><span class="element">>domain_text</span><span class="plain">,</span>
|
||||
<span class="string">"this isn't a thing, a kind of thing or a kind of value"</span><span class="plain">,</span>
|
||||
<span class="string">"and indeed doesn't have any meaning I can make sense of."</span><span class="plain">);</span>
|
||||
|
@ -880,7 +880,7 @@ can't be avoided.
|
|||
<pre class="displaydefn">
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">early</span><span class="plain">) || (</span><span class="identifier">am</span><span class="plain">-</span><span class="element">>problems_thrown</span><span class="plain">++ > 0)) </span><span class="reserved">return</span><span class="plain">;</span>
|
||||
<span class="identifier">current_sentence</span><span class="plain"> = </span><span class="identifier">am</span><span class="plain">-</span><span class="element">>defined_at</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::adjective_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_AdjDomainVague</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::adjective_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_AdjDomainVague</span><span class="plain">),</span>
|
||||
<span class="identifier">am</span><span class="plain">-</span><span class="element">>adjective_index_text</span><span class="plain">, </span><span class="identifier">am</span><span class="plain">-</span><span class="element">>domain_text</span><span class="plain">,</span>
|
||||
<span class="string">"this isn't allowed as the domain of a definition"</span><span class="plain">,</span>
|
||||
<span class="string">"since it potentially describes many different kinds, not just one."</span><span class="plain">);</span>
|
||||
|
@ -899,7 +899,7 @@ can't be avoided.
|
|||
<pre class="displaydefn">
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">early</span><span class="plain">) || (</span><span class="identifier">am</span><span class="plain">-</span><span class="element">>problems_thrown</span><span class="plain">++ > 0)) </span><span class="reserved">return</span><span class="plain">;</span>
|
||||
<span class="identifier">current_sentence</span><span class="plain"> = </span><span class="identifier">am</span><span class="plain">-</span><span class="element">>defined_at</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::adjective_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_AdjDomainTopic</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::adjective_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_AdjDomainTopic</span><span class="plain">),</span>
|
||||
<span class="identifier">am</span><span class="plain">-</span><span class="element">>adjective_index_text</span><span class="plain">, </span><span class="identifier">am</span><span class="plain">-</span><span class="element">>domain_text</span><span class="plain">,</span>
|
||||
<span class="string">"this isn't allowed as the domain of a definition"</span><span class="plain">,</span>
|
||||
<span class="string">"because 'topic' doesn't behave the way other kinds of value do when "</span>
|
||||
|
@ -926,7 +926,7 @@ can't be avoided.
|
|||
<span class="plain">(</span><span class="functiontext">Rvalues::to_instance</span><span class="plain">(</span><span class="identifier">supplied</span><span class="plain">) == </span><span class="identifier">NULL</span><span class="plain">)) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">early</span><span class="plain">) || (</span><span class="identifier">am</span><span class="plain">-</span><span class="element">>problems_thrown</span><span class="plain">++ > 0)) </span><span class="reserved">return</span><span class="plain">;</span>
|
||||
<span class="identifier">current_sentence</span><span class="plain"> = </span><span class="identifier">am</span><span class="plain">-</span><span class="element">>defined_at</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::adjective_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_AdjDomainSurreal</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::adjective_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_AdjDomainSurreal</span><span class="plain">),</span>
|
||||
<span class="identifier">am</span><span class="plain">-</span><span class="element">>adjective_index_text</span><span class="plain">, </span><span class="identifier">am</span><span class="plain">-</span><span class="element">>domain_text</span><span class="plain">,</span>
|
||||
<span class="string">"this isn't allowed as the domain of a definition"</span><span class="plain">,</span>
|
||||
<span class="string">"since adjectives like this can be applied only to specific things, "</span>
|
||||
|
@ -955,7 +955,7 @@ can't be avoided.
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Descriptions::is_qualified</span><span class="plain">(</span><span class="identifier">supplied</span><span class="plain">)) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">am</span><span class="plain">-</span><span class="element">>problems_thrown</span><span class="plain">++ > 0) </span><span class="reserved">return</span><span class="plain">;</span>
|
||||
<span class="identifier">current_sentence</span><span class="plain"> = </span><span class="identifier">am</span><span class="plain">-</span><span class="element">>defined_at</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::adjective_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_AdjDomainSlippery</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::adjective_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_AdjDomainSlippery</span><span class="plain">),</span>
|
||||
<span class="identifier">am</span><span class="plain">-</span><span class="element">>adjective_index_text</span><span class="plain">, </span><span class="identifier">am</span><span class="plain">-</span><span class="element">>domain_text</span><span class="plain">,</span>
|
||||
<span class="string">"this is slippery"</span><span class="plain">,</span>
|
||||
<span class="string">"because it can change during play. Definitions can only be "</span>
|
||||
|
@ -1066,16 +1066,16 @@ author's source text.)
|
|||
<span class="plain">(</span><span class="identifier">am1</span><span class="plain">-</span><span class="element">>adjective_form</span><span class="plain"> != </span><span class="constant">ENUMERATIVE_KADJ</span><span class="plain">) &&</span>
|
||||
<span class="plain">(</span><span class="identifier">am2</span><span class="plain">-</span><span class="element">>adjective_form</span><span class="plain"> != </span><span class="constant">ENUMERATIVE_KADJ</span><span class="plain">)) {</span>
|
||||
<span class="identifier">inform_extension</span><span class="plain"> *</span><span class="identifier">ef1</span><span class="plain"> =</span>
|
||||
<span class="functiontext">SourceFiles::get_extension_corresponding</span><span class="plain">(</span>
|
||||
<span class="identifier">Extensions::corresponding_to</span><span class="plain">(</span>
|
||||
<span class="identifier">Lexer::file_of_origin</span><span class="plain">(</span><span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">am1</span><span class="plain">-</span><span class="element">>defined_at</span><span class="plain">))));</span>
|
||||
<span class="identifier">inform_extension</span><span class="plain"> *</span><span class="identifier">ef2</span><span class="plain"> =</span>
|
||||
<span class="functiontext">SourceFiles::get_extension_corresponding</span><span class="plain">(</span>
|
||||
<span class="identifier">Extensions::corresponding_to</span><span class="plain">(</span>
|
||||
<span class="identifier">Lexer::file_of_origin</span><span class="plain">(</span><span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">am2</span><span class="plain">-</span><span class="element">>defined_at</span><span class="plain">))));</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">ef1</span><span class="plain"> == </span><span class="identifier">ef2</span><span class="plain">) || ((</span><span class="identifier">ef1</span><span class="plain">) && (</span><span class="identifier">ef2</span><span class="plain">))) {</span>
|
||||
<span class="identifier">current_sentence</span><span class="plain"> = </span><span class="identifier">am1</span><span class="plain">-</span><span class="element">>defined_at</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::quote_wording_as_source</span><span class="plain">(1, </span><span class="identifier">am1</span><span class="plain">-</span><span class="element">>adjective_index_text</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording_as_source</span><span class="plain">(2, </span><span class="identifier">am2</span><span class="plain">-</span><span class="element">>adjective_index_text</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_AdjDomainDuplicated</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_AdjDomainDuplicated</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The definitions %1 and %2 both try to cover the same situation: "</span>
|
||||
<span class="string">"the same adjective applied to the exact same range. %P"</span>
|
||||
|
@ -1976,7 +1976,7 @@ prefaced "(of a rulebook)", "(of an activity)", and so on.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Adjectives::Meanings::agreements is used in 1/htc (<a href="1-htc.html#SP2_9">§2.9</a>).</p>
|
||||
<p class="endnote">The function Adjectives::Meanings::agreements is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
|
||||
<p class="endnote">The function Adjectives::Meanings::emit is used in 25/ci (<a href="25-ci.html#SP3_1">§3.1</a>, <a href="25-ci.html#SP3_2_3_3_1">§3.2.3.3.1</a>, <a href="25-ci.html#SP3_2_3_4_1">§3.2.3.4.1</a>).</p>
|
||||
|
||||
|
|
|
@ -245,12 +245,10 @@ whole thing into a <code class="display"><span class="extract">specification</sp
|
|||
</pre>
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Semantics::read_preform</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">Semantics::read_preform</span><span class="plain">(</span><span class="identifier">inform_language</span><span class="plain"> *</span><span class="identifier">L</span><span class="plain">) {</span>
|
||||
<<span class="cwebmacro">Mark certain nonterminals to have their vocabularies numbered and flagged</span> <span class="cwebmacronumber">7.1</span>><span class="plain">;</span>
|
||||
<span class="functiontext">NaturalLanguages::scan</span><span class="plain">();</span>
|
||||
<span class="identifier">wording</span><span class="plain"> </span><span class="identifier">W</span><span class="plain"> = </span><span class="functiontext">NaturalLanguages::load_preform</span><span class="plain">(</span><span class="identifier">Projects::get_language_of_syntax</span><span class="plain">(</span><span class="functiontext">Task::project</span><span class="plain">()));</span>
|
||||
<span class="identifier">wording</span><span class="plain"> </span><span class="identifier">W</span><span class="plain"> = </span><span class="functiontext">NaturalLanguages::load_preform</span><span class="plain">(</span><span class="identifier">L</span><span class="plain">);</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">nonterminals_declared</span><span class="plain"> = </span><span class="identifier">Preform::parse_preform</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">);</span>
|
||||
<span class="identifier">language_definition_top</span><span class="plain"> = </span><span class="identifier">lexer_wordcount</span><span class="plain"> - 1;</span>
|
||||
|
||||
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"%d declarations read (%d words)\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">nonterminals_declared</span><span class="plain">, </span><span class="identifier">Wordings::length</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">));</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -258,7 +256,7 @@ whole thing into a <code class="display"><span class="extract">specification</sp
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Semantics::read_preform is used in 1/htc (<a href="1-htc.html#SP2_2">§2.2</a>).</p>
|
||||
<p class="endnote">The function Semantics::read_preform appears nowhere else.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP7_1"></a><b>§7.1. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Mark certain nonterminals to have their vocabularies numbered and flagged</span> <span class="cwebmacronumber">7.1</span>> =
|
||||
|
|
|
@ -82,7 +82,7 @@ evidence turns up to suggest otherwise).
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The structure instance_usage is accessed in 3/pd, 5/lp, 5/ut, 5/un, 6/rlt, 6/nv, 7/ss, 7/hdn, 7/ns, 7/oaf, 7/rs, 8/ie, 9/tfa, 9/tbath, 9/rpt, 9/tc, 9/ma, 9/rk, 9/ass, 9/imp, 9/pd, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/tti, 26/pc, 26/ts, 27/cm and here.</p>
|
||||
<p class="endnote">The structure instance_usage is accessed in 3/pd, 5/lp, 5/ut, 5/un, 6/rlt, 6/nv, 7/ns, 7/oaf, 7/rs, 9/tfa, 9/tbath, 9/rpt, 9/tc, 9/ma, 9/rk, 9/ass, 9/imp, 9/pd, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/tti, 26/pc, 26/ts, 27/cm and here.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP4"></a><b>§4. </b>We record the one most recently made:
|
||||
</p>
|
||||
|
@ -271,7 +271,7 @@ be done later on: see the "Instance Counts" plugin.
|
|||
<span class="reserved">if</span><span class="plain"> (!(</span><span class="identifier">Kinds::Compare::le</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">, </span><span class="identifier">K_object</span><span class="plain">))) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Kinds::Behaviour::has_named_constant_values</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">)</span>
|
||||
<span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"tried to make an instance value for impossible kind"</span><span class="plain">);</span>
|
||||
<span class="identifier">I</span><span class="plain">-</span><span class="element">>enumeration_index</span><span class="plain"> = </span><span class="identifier">Kinds::Behaviour::new_enumerated_value</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">);</span>
|
||||
<span class="identifier">I</span><span class="plain">-</span><span class="element">>enumeration_index</span><span class="plain"> = </span><span class="identifier">Kinds::Behaviour::new_enumerated_value</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">K</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">cp</span><span class="plain">) </span><span class="functiontext">Instances::register_as_adjectival_constant</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">cp</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
@ -420,9 +420,9 @@ turns up subsequently, e.g., in response to
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Instances::get_numerical_value is used in 3/nl (<a href="3-nl.html#SP7">§7</a>), 14/rv (<a href="14-rv.html#SP3">§3</a>).</p>
|
||||
<p class="endnote">The function Instances::get_numerical_value is used in 3/nl (<a href="3-nl.html#SP6">§6</a>), 14/rv (<a href="14-rv.html#SP3">§3</a>).</p>
|
||||
|
||||
<p class="endnote">The function Instances::as_subject is used in <a href="#SP33">§33</a>, 3/nl (<a href="3-nl.html#SP7">§7</a>), 4/am (<a href="4-am.html#SP22">§22</a>), 5/ipw (<a href="5-ipw.html#SP3_7">§3.7</a>, <a href="5-ipw.html#SP3_9">§3.9</a>), 6/rlt (<a href="6-rlt.html#SP26">§26</a>), 9/rpt (<a href="9-rpt.html#SP9_5_1">§9.5.1</a>, <a href="9-rpt.html#SP10_1">§10.1</a>), 9/tc (<a href="9-tc.html#SP5_4">§5.4</a>, <a href="9-tc.html#SP5_4_1_1">§5.4.1.1</a>, <a href="9-tc.html#SP8_4_1">§8.4.1</a>), 9/ma (<a href="9-ma.html#SP3_3_41_5">§3.3.41.5</a>), 11/tc (<a href="11-tc.html#SP2">§2</a>), 12/ap (<a href="12-ap.html#SP9_5_2">§9.5.2</a>, <a href="12-ap.html#SP12">§12</a>), 14/ds2 (<a href="14-ds2.html#SP11_9_1_1_5_1_3">§11.9.1.1.5.1.3</a>), 15/pr (<a href="15-pr.html#SP27">§27</a>), 15/pov (<a href="15-pov.html#SP4">§4</a>), 16/is (<a href="16-is.html#SP6">§6</a>, <a href="16-is.html#SP12">§12</a>, <a href="16-is.html#SP17">§17</a>), 16/in (<a href="16-in.html#SP19">§19</a>), 16/ic (<a href="16-ic.html#SP8">§8</a>, <a href="16-ic.html#SP12_1">§12.1</a>, <a href="16-ic.html#SP12_3_1">§12.3.1</a>, <a href="16-ic.html#SP12_3_2">§12.3.2</a>, <a href="16-ic.html#SP12_3_3">§12.3.3</a>).</p>
|
||||
<p class="endnote">The function Instances::as_subject is used in <a href="#SP33">§33</a>, 3/nl (<a href="3-nl.html#SP6">§6</a>), 4/am (<a href="4-am.html#SP22">§22</a>), 5/ipw (<a href="5-ipw.html#SP3_7">§3.7</a>, <a href="5-ipw.html#SP3_9">§3.9</a>), 6/rlt (<a href="6-rlt.html#SP26">§26</a>), 9/rpt (<a href="9-rpt.html#SP9_5_1">§9.5.1</a>, <a href="9-rpt.html#SP10_1">§10.1</a>), 9/tc (<a href="9-tc.html#SP5_4">§5.4</a>, <a href="9-tc.html#SP5_4_1_1">§5.4.1.1</a>, <a href="9-tc.html#SP8_4_1">§8.4.1</a>), 9/ma (<a href="9-ma.html#SP3_3_41_5">§3.3.41.5</a>), 11/tc (<a href="11-tc.html#SP2">§2</a>), 12/ap (<a href="12-ap.html#SP9_5_2">§9.5.2</a>, <a href="12-ap.html#SP12">§12</a>), 14/ds2 (<a href="14-ds2.html#SP11_9_1_1_5_1_3">§11.9.1.1.5.1.3</a>), 15/pr (<a href="15-pr.html#SP27">§27</a>), 15/pov (<a href="15-pov.html#SP4">§4</a>), 16/is (<a href="16-is.html#SP6">§6</a>, <a href="16-is.html#SP12">§12</a>, <a href="16-is.html#SP17">§17</a>), 16/in (<a href="16-in.html#SP19">§19</a>), 16/ic (<a href="16-ic.html#SP8">§8</a>, <a href="16-ic.html#SP12_1">§12.1</a>, <a href="16-ic.html#SP12_3_1">§12.3.1</a>, <a href="16-ic.html#SP12_3_2">§12.3.2</a>, <a href="16-ic.html#SP12_3_3">§12.3.3</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP14"></a><b>§14. As mere names. </b></p>
|
||||
|
||||
|
@ -692,7 +692,7 @@ are allowed to refine it. Such revisions are allowed to specialise the kind
|
|||
<span class="identifier">Problems::quote_source</span><span class="plain">(2, </span><span class="identifier">I</span><span class="plain">-</span><span class="element">>instance_of_set_at</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(3, </span><span class="identifier">new</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(4, </span><span class="identifier">existing</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_KindsIncompatible</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_KindsIncompatible</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, but that seems to contradict %2, as %3 and %4 "</span>
|
||||
<span class="string">"are incompatible. (If %3 were a kind of %4 or vice versa "</span>
|
||||
|
@ -703,7 +703,7 @@ are allowed to refine it. Such revisions are allowed to specialise the kind
|
|||
<span class="functiontext">Problems::quote_object</span><span class="plain">(2, </span><span class="identifier">I</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(3, </span><span class="identifier">new</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(4, </span><span class="identifier">existing</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"You wrote %1, which made me think the kind of %2 was %4, "</span>
|
||||
<span class="string">"but for other reasons I now think it ought to be %3, and those "</span>
|
||||
|
@ -1012,7 +1012,7 @@ Note that only instances, not kinds, appear.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Instances::place_objects_in_definition_sequence is used in 1/htc (<a href="1-htc.html#SP2_6">§2.6</a>).</p>
|
||||
<p class="endnote">The function Instances::place_objects_in_definition_sequence is used in 1/htc (<a href="1-htc.html#SP2_5">§2.5</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP32"></a><b>§32. </b>And we read the order back using these macros:
|
||||
</p>
|
||||
|
|
|
@ -233,7 +233,7 @@ mass might also support "in kilograms" and "in grams", for instance.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The structure literal_pattern_name is accessed in 3/pd, 5/ut, 5/un, 5/ins, 6/rlt, 6/nv, 7/ss, 7/hdn, 7/ns, 7/oaf, 7/rs, 8/ie, 9/tfa, 9/tbath, 9/rpt, 9/tc, 9/ma, 9/rk, 9/ass, 9/imp, 9/pd, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/tti, 26/pc, 26/ts, 27/cm and here.</p>
|
||||
<p class="endnote">The structure literal_pattern_name is accessed in 3/pd, 5/ut, 5/un, 5/ins, 6/rlt, 6/nv, 7/ns, 7/oaf, 7/rs, 9/tfa, 9/tbath, 9/rpt, 9/tc, 9/ma, 9/rk, 9/ass, 9/imp, 9/pd, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/tti, 26/pc, 26/ts, 27/cm and here.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP9"></a><b>§9. Creating patterns, tokens and elements. </b></p>
|
||||
|
||||
|
@ -378,7 +378,7 @@ equivalent to an exact value.
|
|||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">TargetVMs::is_16_bit</span><span class="plain">(</span><span class="functiontext">Task::vm</span><span class="plain">())) && (</span><span class="identifier">PM_ZMachineOverflow2_issued</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">))</span>
|
||||
<span class="reserved">for</span><span class="plain"> (</span><span class="identifier">lp</span><span class="plain"> = </span><span class="identifier">list_head</span><span class="plain">; </span><span class="identifier">lp</span><span class="plain">; </span><span class="identifier">lp</span><span class="plain"> = </span><span class="identifier">lp</span><span class="plain">-</span><span class="element">>next_for_this_kind</span><span class="plain">)</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Kinds::Scalings::quantum</span><span class="plain">(</span><span class="identifier">lp</span><span class="plain">-</span><span class="element">>scaling</span><span class="plain">) > 32767) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ZMachineOverflow2</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ZMachineOverflow2</span><span class="plain">),</span>
|
||||
<span class="string">"you've set up literal specifications needing a range of "</span>
|
||||
<span class="string">"values too broad to be stored at run-time"</span><span class="plain">,</span>
|
||||
<span class="string">"at least with the Settings for this project as they currently are. "</span>
|
||||
|
@ -841,7 +841,7 @@ which is annoying. So we have a mechanism to suppress duplicates:
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Kinds::FloatingPoint::uses_floating_point</span><span class="plain">(</span><span class="identifier">lp</span><span class="plain">-</span><span class="element">>kind_specified</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">sign_used_at</span><span class="plain">-</span><span class="element">>element_index</span><span class="plain"> != 0) {</span>
|
||||
<span class="constant">ISSUING_LP_PROBLEM</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NegationInternal</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NegationInternal</span><span class="plain">),</span>
|
||||
<span class="string">"a negative number can't be used in the middle of a constant"</span><span class="plain">,</span>
|
||||
<span class="string">"and the minus sign makes it look as if that's what you are "</span>
|
||||
<span class="string">"trying here."</span><span class="plain">);</span>
|
||||
|
@ -849,7 +849,7 @@ which is annoying. So we have a mechanism to suppress duplicates:
|
|||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">lp</span><span class="plain">-</span><span class="element">>number_signed</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
||||
<span class="constant">ISSUING_LP_PROBLEM</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NegationForbidden</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NegationForbidden</span><span class="plain">),</span>
|
||||
<span class="string">"the minus sign is not allowed here"</span><span class="plain">,</span>
|
||||
<span class="string">"since this is a kind of value which only allows positive "</span>
|
||||
<span class="string">"values to be written."</span><span class="plain">);</span>
|
||||
|
@ -874,7 +874,7 @@ which is annoying. So we have a mechanism to suppress duplicates:
|
|||
<pre class="displaydefn">
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">overflow_32_bit_flag</span><span class="plain">) {</span>
|
||||
<span class="constant">ISSUING_LP_PROBLEM</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_EvenOverflow</span><span class="plain">-</span><span class="identifier">G</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_EvenOverflow</span><span class="plain">-</span><span class="identifier">G</span><span class="plain">),</span>
|
||||
<span class="string">"you use a literal specification to make a value which is too large"</span><span class="plain">,</span>
|
||||
<span class="string">"even for a story file compiled with the Glulx setting. (You can "</span>
|
||||
<span class="string">"see the size limits for each way of writing a value on the Kinds "</span>
|
||||
|
@ -883,7 +883,7 @@ which is annoying. So we have a mechanism to suppress duplicates:
|
|||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">overflow_16_bit_flag</span><span class="plain">) && (</span><span class="identifier">TargetVMs::is_16_bit</span><span class="plain">(</span><span class="functiontext">Task::vm</span><span class="plain">()))) {</span>
|
||||
<span class="constant">ISSUING_LP_PROBLEM</span><span class="plain">;</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ZMachineOverflow</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ZMachineOverflow</span><span class="plain">),</span>
|
||||
<span class="string">"you use a literal specification to make a value which is too large"</span><span class="plain">,</span>
|
||||
<span class="string">"at least with the Settings for this project as they currently are. "</span>
|
||||
<span class="string">"(Change to Glulx to be allowed to use much larger numbers; "</span>
|
||||
|
@ -925,7 +925,7 @@ which is annoying. So we have a mechanism to suppress duplicates:
|
|||
<span class="reserved">case</span><span class="plain"> 9: </span><span class="identifier">Problems::quote_text</span><span class="plain">(5, </span><span class="string">"tenth"</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">default</span><span class="plain">: </span><span class="identifier">Problems::quote_text</span><span class="plain">(5, </span><span class="string">"eventual"</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ElementOverflow</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ElementOverflow</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In the sentence %1, you use the notation '%2' to write a constant value. "</span>
|
||||
<span class="string">"But the notation was specified as '%3', which means that the %5 numerical "</span>
|
||||
|
@ -947,7 +947,7 @@ which is annoying. So we have a mechanism to suppress duplicates:
|
|||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(3, </span><span class="identifier">lp</span><span class="plain">-</span><span class="element">>prototype_text</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LPTooLittleAccuracy</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LPTooLittleAccuracy</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In the sentence %1, you use the notation '%2' to write a constant value. "</span>
|
||||
<span class="string">"But to store that, I would need greater accuracy than this kind of "</span>
|
||||
|
@ -3231,7 +3231,7 @@ set.
|
|||
<pre class="displaydefn">
|
||||
<span class="plain">*</span><span class="identifier">X</span><span class="plain"> = </span><span class="constant">ABANDON_LPN</span><span class="plain">; *</span><span class="identifier">XP</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">preform_lookahead_mode</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_MultiplyingNonKOVs</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_MultiplyingNonKOVs</span><span class="plain">),</span>
|
||||
<span class="string">"only kinds of value can be multiplied here"</span><span class="plain">,</span>
|
||||
<span class="string">"and only in a sentence like 'A length times a length specifies an area.'"</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -3251,7 +3251,7 @@ set.
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">preform_lookahead_mode</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadLPNameOption</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadLPNameOption</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In the specification %1, I was expecting that '%2' would be an optional "</span>
|
||||
<span class="string">"note about one of the notations: it should have been one of 'singular', "</span>
|
||||
|
@ -3324,7 +3324,7 @@ set.
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">preform_lookahead_mode</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LPNotKOV</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LPNotKOV</span><span class="plain">),</span>
|
||||
<span class="string">"you can only specify ways to write kinds of value"</span><span class="plain">,</span>
|
||||
<span class="string">"as created with sentences like 'A weight is a kind of value.'"</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -3386,7 +3386,7 @@ set.
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">preform_lookahead_mode</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadLPPartOption</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadLPPartOption</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In the specification %1, I was expecting that '%2' would be an optional "</span>
|
||||
<span class="string">"note about one of the parts: it should have been one of 'optional', "</span>
|
||||
|
@ -3413,7 +3413,7 @@ set.
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Rvalues::is_CONSTANT_of_kind</span><span class="plain">(</span><span class="identifier">LP_equivalent_value</span><span class="plain">, </span><span class="identifier">K</span><span class="plain">)) {</span>
|
||||
<span class="identifier">scaled_dir</span><span class="plain"> = </span><span class="identifier">LP_SCALED_UP</span><span class="plain">; </span><span class="identifier">scaled</span><span class="plain"> = </span><span class="functiontext">Rvalues::to_encoded_notation</span><span class="plain">(</span><span class="identifier">LP_equivalent_value</span><span class="plain">);</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem_with_note</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadLPEquivalent</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem_with_note</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadLPEquivalent</span><span class="plain">),</span>
|
||||
<span class="string">"the equivalent value needs to be a constant of the same kind "</span>
|
||||
<span class="string">"of value as you are specifying"</span><span class="plain">,</span>
|
||||
<span class="string">"and this seems not to be."</span><span class="plain">,</span>
|
||||
|
@ -3426,7 +3426,7 @@ set.
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Rvalues::is_CONSTANT_of_kind</span><span class="plain">(</span><span class="identifier">LP_offset_value</span><span class="plain">, </span><span class="identifier">K</span><span class="plain">)) {</span>
|
||||
<span class="identifier">offset</span><span class="plain"> = </span><span class="functiontext">Rvalues::to_encoded_notation</span><span class="plain">(</span><span class="identifier">LP_offset_value</span><span class="plain">);</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem_with_note</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadLPOffset</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem_with_note</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_BadLPOffset</span><span class="plain">),</span>
|
||||
<span class="string">"the offset value needs to be a constant of the same kind "</span>
|
||||
<span class="string">"of value as you are specifying"</span><span class="plain">,</span>
|
||||
<span class="string">"and this seems not to be."</span><span class="plain">,</span>
|
||||
|
@ -3471,7 +3471,7 @@ set.
|
|||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(2, </span><span class="identifier">K</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(3, </span><span class="identifier">SPW</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_DuplicateUnitSpec</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_DuplicateUnitSpec</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In the sentence %1, it looks as if you intend to give a new meaning "</span>
|
||||
<span class="string">"to expressions like '%3', but this is already something I "</span>
|
||||
|
@ -3494,7 +3494,7 @@ set.
|
|||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(2, </span><span class="identifier">K</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LPNeedsReal</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LPNeedsReal</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"In the sentence %1, it looks as if you intend to give a real "</span>
|
||||
<span class="string">"number as a scale factor for values of %2. However, as you've "</span>
|
||||
|
@ -3543,21 +3543,21 @@ set.
|
|||
<pre class="displaydefn">
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Kinds::Behaviour::is_built_in</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">)) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Kinds::Behaviour::get_index_priority</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">) == 0)</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LPBuiltInKOVHidden</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LPBuiltInKOVHidden</span><span class="plain">),</span>
|
||||
<span class="string">"you can only specify ways to write new kinds of value"</span><span class="plain">,</span>
|
||||
<span class="string">"as created with sentences like 'A weight is a kind of value.', "</span>
|
||||
<span class="string">"and not the built-in ones like 'number' or 'time'. (This one is "</span>
|
||||
<span class="string">"a kind used behind the scenes by Inform, so it's reserved "</span>
|
||||
<span class="string">"for Inform's own use, and you can't do much else with it.)"</span><span class="plain">);</span>
|
||||
<span class="reserved">else</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LPBuiltInKOV</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LPBuiltInKOV</span><span class="plain">),</span>
|
||||
<span class="string">"you can only specify ways to write new kinds of value"</span><span class="plain">,</span>
|
||||
<span class="string">"as created with sentences like 'A weight is a kind of value.', "</span>
|
||||
<span class="string">"and not the built-in ones like 'number' or 'time'."</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">owner</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Kinds::Behaviour::convert_to_unit</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LPEnumeration</span><span class="plain">),</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Kinds::Behaviour::convert_to_unit</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">K</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LPEnumeration</span><span class="plain">),</span>
|
||||
<span class="string">"this is a kind of value which already has named values"</span><span class="plain">,</span>
|
||||
<span class="string">"so it can't have a basically numerical form as well."</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">owner</span><span class="plain">;</span>
|
||||
|
@ -3581,7 +3581,7 @@ set.
|
|||
<span class="identifier">lp</span><span class="plain"> = </span><span class="functiontext">LiteralPatterns::lp_new</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">, </span><span class="identifier">SPW</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">LP_equivalent_value</span><span class="plain">) </span><span class="identifier">LP_real_scaling_amount</span><span class="plain"> = </span><span class="identifier">LP_real_equivalent</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">scaled</span><span class="plain"> <= 0) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LPNonpositiveScaling</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LPNonpositiveScaling</span><span class="plain">),</span>
|
||||
<span class="string">"you can only scale by a positive multiple"</span><span class="plain">,</span>
|
||||
<span class="string">"so something like 'scaled up by -1' is not allowed."</span><span class="plain">);</span>
|
||||
<span class="identifier">scaled</span><span class="plain"> = 1;</span>
|
||||
|
@ -3632,7 +3632,7 @@ set.
|
|||
<span class="identifier">lp</span><span class="plain">-</span><span class="element">>no_lp_tokens</span><span class="plain"> = </span><span class="identifier">tc</span><span class="plain">;</span>
|
||||
<span class="identifier">lp</span><span class="plain">-</span><span class="element">>no_lp_elements</span><span class="plain"> = </span><span class="identifier">ec</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">lp</span><span class="plain">-</span><span class="element">>no_lp_elements</span><span class="plain"> == 0) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LPWithoutElement</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LPWithoutElement</span><span class="plain">),</span>
|
||||
<span class="string">"a way to specify a kind of value must involve numbers"</span><span class="plain">,</span>
|
||||
<span class="string">"so '10kg specifies a weight' is allowed, but not 'tonne "</span>
|
||||
<span class="string">"specifies a weight'."</span><span class="plain">);</span>
|
||||
|
@ -3665,7 +3665,7 @@ set.
|
|||
<span class="reserved">while</span><span class="plain"> (</span><span class="identifier">Characters::isdigit</span><span class="plain">(</span><span class="identifier">text_of_word</span><span class="plain">[</span><span class="identifier">j</span><span class="plain">++])) {</span>
|
||||
<span class="identifier">digit_found</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">tot</span><span class="plain"> > 999999999) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LPElementTooLarge</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LPElementTooLarge</span><span class="plain">),</span>
|
||||
<span class="string">"that specification contains numbers that are too large"</span><span class="plain">,</span>
|
||||
<span class="string">"and would construct values which could not sensibly "</span>
|
||||
<span class="string">"be stored at run-time."</span><span class="plain">);</span>
|
||||
|
@ -3680,7 +3680,7 @@ set.
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">digit_found</span><span class="plain">) {</span>
|
||||
<span class="reserved">literal_pattern_element</span><span class="plain"> </span><span class="identifier">new_element</span><span class="plain"> = </span><span class="functiontext">LiteralPatterns::lpe_new</span><span class="plain">(</span><span class="identifier">ec</span><span class="plain">, </span><span class="identifier">tot</span><span class="plain">+1, </span><span class="identifier">sgn</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ec</span><span class="plain"> >= </span><span class="constant">MAX_ELEMENTS_PER_LITERAL</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LPTooManyElements</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LPTooManyElements</span><span class="plain">),</span>
|
||||
<span class="string">"that specification contains too many numerical elements"</span><span class="plain">,</span>
|
||||
<span class="string">"and is too complicated for Inform to handle."</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">owner</span><span class="plain">;</span>
|
||||
|
@ -3720,7 +3720,7 @@ set.
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">tc</span><span class="plain"> >= </span><span class="constant">MAX_TOKENS_PER_LITERAL</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LPTooComplicated</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LPTooComplicated</span><span class="plain">),</span>
|
||||
<span class="string">"that specification is too complicated"</span><span class="plain">,</span>
|
||||
<span class="string">"and will have to be shortened."</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">owner</span><span class="plain">;</span>
|
||||
|
@ -3739,7 +3739,7 @@ set.
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">integer_scaling</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
||||
<span class="identifier">Kinds::Behaviour::convert_to_real</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">);</span>
|
||||
<span class="identifier">Kinds::Behaviour::convert_to_real</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">K</span><span class="plain">);</span>
|
||||
<span class="identifier">Kinds::Scalings::convert_to_real</span><span class="plain">(&(</span><span class="identifier">lp</span><span class="plain">-</span><span class="element">>scaling</span><span class="plain">));</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
@ -3794,20 +3794,20 @@ set.
|
|||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">O</span><span class="plain"> & </span><span class="constant">WITHOUT_LEADING_ZEROS_LSO</span><span class="plain">) </span><span class="identifier">lpe</span><span class="plain">-</span><span class="element">>without_leading_zeros</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">i</span><span class="plain"> == </span><span class="identifier">lp</span><span class="plain">-</span><span class="element">>no_lp_elements</span><span class="plain"> - 1) && (</span><span class="identifier">p</span><span class="plain">-</span><span class="element">>next</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LPTooManyPartNames</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LPTooManyPartNames</span><span class="plain">),</span>
|
||||
<span class="string">"this gives names for too many parts"</span><span class="plain">,</span>
|
||||
<span class="string">"that is, for more parts than there are in the pattern."</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">owner</span><span class="plain">;</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">j</span><span class="plain"> = 0; </span><span class="identifier">j</span><span class="plain"><</span><span class="identifier">i</span><span class="plain">; </span><span class="identifier">j</span><span class="plain">++)</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Wordings::match</span><span class="plain">(</span><span class="identifier">lp</span><span class="plain">-</span><span class="element">>lp_elements</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">]</span><span class="element">.element_name</span><span class="plain">, </span><span class="identifier">lp</span><span class="plain">-</span><span class="element">>lp_elements</span><span class="plain">[</span><span class="identifier">j</span><span class="plain">]</span><span class="element">.element_name</span><span class="plain">))</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LPRepeatedPartNames</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LPRepeatedPartNames</span><span class="plain">),</span>
|
||||
<span class="string">"this repeats a part name"</span><span class="plain">,</span>
|
||||
<span class="string">"that is, it uses the same name for two different parts "</span>
|
||||
<span class="string">"of the pattern."</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">i</span><span class="plain"> > 0) && (</span><span class="identifier">i</span><span class="plain"> != </span><span class="identifier">lp</span><span class="plain">-</span><span class="element">>no_lp_elements</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LPNotAllNamed</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LPNotAllNamed</span><span class="plain">),</span>
|
||||
<span class="string">"you must supply names for all the parts"</span><span class="plain">,</span>
|
||||
<span class="string">"if for any"</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">owner</span><span class="plain">;</span>
|
||||
|
@ -3833,14 +3833,14 @@ set.
|
|||
<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"><</span><span class="identifier">lp</span><span class="plain">-</span><span class="element">>no_lp_elements</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">lp</span><span class="plain">-</span><span class="element">>lp_elements</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">]</span><span class="element">.element_optional</span><span class="plain">) {</span>
|
||||
<span class="identifier">opt_count</span><span class="plain">++;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">i</span><span class="plain"> == 0) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LPFirstOptional</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LPFirstOptional</span><span class="plain">),</span>
|
||||
<span class="string">"the first part is not allowed to be optional"</span><span class="plain">,</span>
|
||||
<span class="string">"since it is needed to identify the value."</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">owner</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">opt_count</span><span class="plain"> >= 2) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LPMultipleOptional</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LPMultipleOptional</span><span class="plain">),</span>
|
||||
<span class="string">"only one part can be called optional"</span><span class="plain">,</span>
|
||||
<span class="string">"since if any part is omitted then so are all subsequent parts."</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">owner</span><span class="plain">;</span>
|
||||
|
@ -3924,7 +3924,7 @@ set.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function LiteralPatterns::define_named_phrases is used in 1/htc (<a href="1-htc.html#SP2_8">§2.8</a>).</p>
|
||||
<p class="endnote">The function LiteralPatterns::define_named_phrases is used in 1/htc (<a href="1-htc.html#SP2_7">§2.7</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP40_1"></a><b>§40.1. </b>These text substitutions correspond exactly neither to the LPs nor to the
|
||||
names. For instance, "in tonnes" produces a text substitution which takes
|
||||
|
@ -3964,7 +3964,7 @@ set.
|
|||
<span class="identifier">Feeds::feed_text</span><span class="plain">(</span><span class="identifier">L</span><span class="string">" ) "</span><span class="plain">);</span>
|
||||
<span class="identifier">Feeds::feed_wording</span><span class="plain">(</span><span class="identifier">lpn</span><span class="plain">-</span><span class="element">>notation_name</span><span class="plain">);</span>
|
||||
<span class="identifier">wording</span><span class="plain"> </span><span class="identifier">XW</span><span class="plain"> = </span><span class="identifier">Feeds::end</span><span class="plain">(</span><span class="identifier">id</span><span class="plain">);</span>
|
||||
<span class="identifier">Sentences::make_node</span><span class="plain">(</span><span class="identifier">XW</span><span class="plain">, </span><span class="character">':'</span><span class="plain">);</span>
|
||||
<span class="identifier">Sentences::make_node</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">XW</span><span class="plain">, </span><span class="character">':'</span><span class="plain">);</span>
|
||||
|
||||
<span class="identifier">id</span><span class="plain"> = </span><span class="identifier">Feeds::begin</span><span class="plain">();</span>
|
||||
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">print_rule_buff</span><span class="plain">);</span>
|
||||
|
@ -3973,7 +3973,7 @@ set.
|
|||
<span class="identifier">Feeds::feed_stream</span><span class="plain">(</span><span class="identifier">print_rule_buff</span><span class="plain">);</span>
|
||||
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">print_rule_buff</span><span class="plain">);</span>
|
||||
<span class="identifier">XW</span><span class="plain"> = </span><span class="identifier">Feeds::end</span><span class="plain">(</span><span class="identifier">id</span><span class="plain">);</span>
|
||||
<span class="identifier">Sentences::make_node</span><span class="plain">(</span><span class="identifier">XW</span><span class="plain">, </span><span class="character">'.'</span><span class="plain">);</span>
|
||||
<span class="identifier">Sentences::make_node</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">XW</span><span class="plain">, </span><span class="character">'.'</span><span class="plain">);</span>
|
||||
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">);</span>
|
||||
|
||||
<span class="reserved">literal_pattern_name</span><span class="plain"> *</span><span class="identifier">lpn3</span><span class="plain">;</span>
|
||||
|
@ -4051,7 +4051,7 @@ set.
|
|||
<span class="identifier">Feeds::feed_stream</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">);</span>
|
||||
<span class="identifier">Feeds::feed_text</span><span class="plain">(</span><span class="identifier">L</span><span class="string">" ) "</span><span class="plain">);</span>
|
||||
<span class="identifier">wording</span><span class="plain"> </span><span class="identifier">XW</span><span class="plain"> = </span><span class="identifier">Feeds::end</span><span class="plain">(</span><span class="identifier">id</span><span class="plain">);</span>
|
||||
<span class="identifier">Sentences::make_node</span><span class="plain">(</span><span class="identifier">XW</span><span class="plain">, </span><span class="character">':'</span><span class="plain">);</span>
|
||||
<span class="identifier">Sentences::make_node</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">XW</span><span class="plain">, </span><span class="character">':'</span><span class="plain">);</span>
|
||||
|
||||
<span class="identifier">id</span><span class="plain"> = </span><span class="identifier">Feeds::begin</span><span class="plain">();</span>
|
||||
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">print_rule_buff</span><span class="plain">);</span>
|
||||
|
@ -4067,7 +4067,7 @@ set.
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Wordings::phrasual_length</span><span class="plain">(</span><span class="identifier">XW</span><span class="plain">) >= </span><span class="constant">MAX_WORDS_PER_PHRASE</span><span class="plain"> + 5)</span>
|
||||
<<span class="cwebmacro">Issue a problem for overly long part names</span> <span class="cwebmacronumber">41.1.1</span>>
|
||||
<span class="reserved">else</span>
|
||||
<span class="identifier">Sentences::make_node</span><span class="plain">(</span><span class="identifier">XW</span><span class="plain">, </span><span class="character">'.'</span><span class="plain">);</span>
|
||||
<span class="identifier">Sentences::make_node</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">XW</span><span class="plain">, </span><span class="character">'.'</span><span class="plain">);</span>
|
||||
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">print_rule_buff</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
@ -4115,7 +4115,7 @@ set.
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Wordings::phrasual_length</span><span class="plain">(</span><span class="identifier">XW</span><span class="plain">) >= </span><span class="constant">MAX_WORDS_PER_PHRASE</span><span class="plain"> + 5)</span>
|
||||
<<span class="cwebmacro">Issue a problem for overly long part names</span> <span class="cwebmacronumber">41.1.1</span>>
|
||||
<span class="reserved">else</span><span class="plain"> {</span>
|
||||
<span class="identifier">Sentences::make_node</span><span class="plain">(</span><span class="identifier">XW</span><span class="plain">, </span><span class="character">':'</span><span class="plain">);</span>
|
||||
<span class="identifier">Sentences::make_node</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">XW</span><span class="plain">, </span><span class="character">':'</span><span class="plain">);</span>
|
||||
<span class="identifier">id</span><span class="plain"> = </span><span class="identifier">Feeds::begin</span><span class="plain">();</span>
|
||||
<span class="identifier">Str::clear</span><span class="plain">(</span><span class="identifier">print_rule_buff</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">print_rule_buff</span><span class="plain">, </span><span class="string">" (- ("</span><span class="plain">);</span>
|
||||
|
@ -4129,7 +4129,7 @@ set.
|
|||
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">print_rule_buff</span><span class="plain">, </span><span class="string">") -) "</span><span class="plain">);</span>
|
||||
<span class="identifier">Feeds::feed_stream</span><span class="plain">(</span><span class="identifier">print_rule_buff</span><span class="plain">);</span>
|
||||
<span class="identifier">XW</span><span class="plain"> = </span><span class="identifier">Feeds::end</span><span class="plain">(</span><span class="identifier">id</span><span class="plain">);</span>
|
||||
<span class="identifier">Sentences::make_node</span><span class="plain">(</span><span class="identifier">XW</span><span class="plain">, </span><span class="character">'.'</span><span class="plain">);</span>
|
||||
<span class="identifier">Sentences::make_node</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">XW</span><span class="plain">, </span><span class="character">'.'</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">print_rule_buff</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -4145,7 +4145,7 @@ set.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LPPartNamesTooLong</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_LPPartNamesTooLong</span><span class="plain">),</span>
|
||||
<span class="string">"the names for these parts are too long"</span><span class="plain">,</span>
|
||||
<span class="string">"and will have to be cut down."</span><span class="plain">);</span>
|
||||
</pre>
|
||||
|
|
|
@ -167,7 +167,7 @@ reference to how it's stored at run-time.
|
|||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(1, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(2, </span><span class="identifier">K</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_IndefiniteVariable</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_IndefiniteVariable</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"I am unable to create the variable '%1', because its kind (%2) is too "</span>
|
||||
<span class="string">"vague. I need to know exactly what kind of value goes into each "</span>
|
||||
|
@ -296,13 +296,13 @@ variable should hold it:
|
|||
<span class="reserved">nonlocal_variable</span><span class="plain"> *</span><span class="identifier">nlv</span><span class="plain"> = </span><span class="functiontext">NonlocalVariables::parse</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">nlv</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) || (</span><span class="identifier">nlv</span><span class="plain">-</span><span class="element">>scope</span><span class="plain">)) {</span>
|
||||
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Tried %W\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NonQuantityTranslated</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NonQuantityTranslated</span><span class="plain">),</span>
|
||||
<span class="string">"this is not the name of a variable"</span><span class="plain">,</span>
|
||||
<span class="string">"or at any rate not one global in scope."</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nlv</span><span class="plain">-</span><span class="element">>nlv_name_translated</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_QuantityTranslatedAlready</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_QuantityTranslatedAlready</span><span class="plain">),</span>
|
||||
<span class="string">"this variable has already been translated"</span><span class="plain">,</span>
|
||||
<span class="string">"so there must be some duplication somewhere."</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain">;</span>
|
||||
|
@ -454,7 +454,7 @@ run-time locations to any variable without them:
|
|||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">nlv</span><span class="plain">-</span><span class="element">>name</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The sentence %1 seems to need the value '%2', but that currently "</span>
|
||||
<span class="string">"has no definition."</span><span class="plain">);</span>
|
||||
|
@ -512,7 +512,7 @@ I6 schema for how to change a variable:
|
|||
<span class="plain">#</span><span class="identifier">ifdef</span><span class="plain"> </span><span class="identifier">IF_MODULE</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">score_VAR</span><span class="plain">) && (</span><span class="identifier">nlv</span><span class="plain"> == </span><span class="identifier">score_VAR</span><span class="plain">)) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">scoring_option_set</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) || (</span><span class="identifier">scoring_option_set</span><span class="plain"> == </span><span class="identifier">NOT_APPLICABLE</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantChangeScore</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantChangeScore</span><span class="plain">),</span>
|
||||
<span class="string">"this is a story with no scoring"</span><span class="plain">,</span>
|
||||
<span class="string">"so it makes no sense to change the 'score' value. You can add "</span>
|
||||
<span class="string">"scoring to the story by including the sentence 'Use scoring.', "</span>
|
||||
|
@ -688,7 +688,7 @@ that faraway I6 code said it was.
|
|||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">nlv</span><span class="plain">-</span><span class="element">>name</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_stream</span><span class="plain">(3, </span><span class="identifier">nlv</span><span class="plain">-</span><span class="element">>lvalue_nve.textual_form</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_InaccessibleVariable</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_InaccessibleVariable</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The sentence %1 tells me that '%2' has a specific initial value, "</span>
|
||||
<span class="string">"but this is a variable which has been translated into an I6 'Global' "</span>
|
||||
|
@ -892,7 +892,7 @@ means that a value can be set by an assertion in the source text.
|
|||
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">NonlocalVariables::must_be_constant</span><span class="plain">(</span><span class="reserved">nonlocal_variable</span><span class="plain"> *</span><span class="identifier">nlv</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nlv</span><span class="plain">-</span><span class="element">>constant_at_run_time</span><span class="plain">) {</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantChangeConstants</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_CantChangeConstants</span><span class="plain">),</span>
|
||||
<span class="string">"this is a name for a value which never changes during the story"</span><span class="plain">,</span>
|
||||
<span class="string">"so it can't be altered with 'now'."</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
|
@ -929,7 +929,7 @@ and leaving everything else alone.
|
|||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">nlv</span><span class="plain">-</span><span class="element">>name</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(3, </span><span class="identifier">nlv</span><span class="plain">-</span><span class="element">>nlv_kind</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_MeaningRecursive</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_MeaningRecursive</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The sentence %1 tells me that '%2', which should be %3 "</span>
|
||||
<span class="string">"that varies, is to have an initial value which can't "</span>
|
||||
|
@ -1058,7 +1058,7 @@ which makes its kind safe. Hence the error messages.
|
|||
<span class="identifier">wording</span><span class="plain"> </span><span class="identifier">W</span><span class="plain"> = </span><span class="identifier">Kinds::Behaviour::get_name</span><span class="plain">(</span><span class="identifier">nlv</span><span class="plain">-</span><span class="element">>nlv_kind</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(1, </span><span class="identifier">nlv</span><span class="plain">-</span><span class="element">>name</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_EmptyDataType</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_EmptyDataType</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"I am unable to put any value into the variable '%1', because "</span>
|
||||
<span class="string">"%2 is a kind of value with no actual values."</span><span class="plain">);</span>
|
||||
|
@ -1084,7 +1084,7 @@ which makes its kind safe. Hence the error messages.
|
|||
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">nlv</span><span class="plain">-</span><span class="element">>name</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(3, </span><span class="identifier">nlv</span><span class="plain">-</span><span class="element">>nlv_kind</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_InitialiseQ2</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_InitialiseQ2</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The sentence %1 tells me that '%2', which should be %3 "</span>
|
||||
<span class="string">"that varies, is to have an initial value equal to itself - "</span>
|
||||
|
@ -1097,7 +1097,7 @@ which makes its kind safe. Hence the error messages.
|
|||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(3, </span><span class="identifier">nlv</span><span class="plain">-</span><span class="element">>nlv_kind</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::quote_wording</span><span class="plain">(4, </span><span class="identifier">the_other</span><span class="plain">-</span><span class="element">>name</span><span class="plain">);</span>
|
||||
<span class="functiontext">Problems::quote_kind</span><span class="plain">(5, </span><span class="identifier">the_other</span><span class="plain">-</span><span class="element">>nlv_kind</span><span class="plain">);</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_InitialiseQ1</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_InitialiseQ1</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
||||
<span class="string">"The sentence %1 tells me that '%2', which should be %3 "</span>
|
||||
<span class="string">"that varies, is to have an initial value equal to '%4', "</span>
|
||||
|
@ -1135,7 +1135,7 @@ the following:
|
|||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">NonlocalVariables::index_all</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">) {</span>
|
||||
<span class="reserved">nonlocal_variable</span><span class="plain"> *</span><span class="identifier">nlv</span><span class="plain">;</span>
|
||||
<span class="reserved">heading</span><span class="plain"> *</span><span class="identifier">definition_area</span><span class="plain">, *</span><span class="identifier">current_area</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">heading</span><span class="plain"> *</span><span class="identifier">definition_area</span><span class="plain">, *</span><span class="identifier">current_area</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">HTML_OPEN</span><span class="plain">(</span><span class="string">"p"</span><span class="plain">);</span>
|
||||
<span class="identifier">Index::anchor</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"NAMES"</span><span class="plain">);</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">understood_note_given</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
|
@ -1177,10 +1177,10 @@ the following:
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">definition_area</span><span class="plain"> = </span><span class="functiontext">Sentences::Headings::of_wording</span><span class="plain">(</span><span class="identifier">nlv</span><span class="plain">-</span><span class="element">>name</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Sentences::Headings::indexed</span><span class="plain">(</span><span class="identifier">definition_area</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="reserved">continue</span><span class="plain">;</span>
|
||||
<span class="identifier">definition_area</span><span class="plain"> = </span><span class="identifier">Headings::of_wording</span><span class="plain">(</span><span class="identifier">nlv</span><span class="plain">-</span><span class="element">>name</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Headings::indexed</span><span class="plain">(</span><span class="identifier">definition_area</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="reserved">continue</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">definition_area</span><span class="plain"> != </span><span class="identifier">current_area</span><span class="plain">) {</span>
|
||||
<span class="identifier">wording</span><span class="plain"> </span><span class="identifier">W</span><span class="plain"> = </span><span class="functiontext">Sentences::Headings::get_text</span><span class="plain">(</span><span class="identifier">definition_area</span><span class="plain">);</span>
|
||||
<span class="identifier">wording</span><span class="plain"> </span><span class="identifier">W</span><span class="plain"> = </span><span class="identifier">Headings::get_text</span><span class="plain">(</span><span class="identifier">definition_area</span><span class="plain">);</span>
|
||||
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"p"</span><span class="plain">);</span>
|
||||
<span class="identifier">HTML_OPEN</span><span class="plain">(</span><span class="string">"p"</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">W</span><span class="plain">)) </span><span class="functiontext">Phrases::Index::index_definition_area</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">);</span>
|
||||
|
|
|
@ -242,7 +242,7 @@ a specific time of day, or when a named event occurs.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_AtTimeThat</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_AtTimeThat</span><span class="plain">),</span>
|
||||
<span class="string">"this seems to use 'that' where it should use 'when'"</span><span class="plain">,</span>
|
||||
<span class="string">"assuming it's trying to apply a rule to an event. (The convention is "</span>
|
||||
<span class="string">"that any rule beginning 'At' is a timed one. The time can either be a "</span>
|
||||
|
@ -260,7 +260,7 @@ a specific time of day, or when a named event occurs.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_AtWithoutTime</span><span class="plain">),</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="functiontext">Task::syntax_tree</span><span class="plain">(), </span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_AtWithoutTime</span><span class="plain">),</span>
|
||||
<span class="string">"'at' what time? No description of a time is given"</span><span class="plain">,</span>
|
||||
<span class="string">"which means that this rule can never have effect. (The convention is "</span>
|
||||
<span class="string">"that any rule beginning 'At' is a timed one. The time can either be a "</span>
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue