mirror of
https://github.com/ganelson/inform.git
synced 2024-06-26 04:00:43 +03:00
Digits and values for LPEs
This commit is contained in:
parent
ed743bbcb6
commit
f6c3b1f505
|
@ -1,6 +1,6 @@
|
|||
# Inform 7
|
||||
|
||||
[Version](notes/versioning.md): 10.2.0-beta+6W81 'Krypton' (14 July 2023)
|
||||
[Version](notes/versioning.md): 10.2.0-beta+6W82 'Krypton' (15 July 2023)
|
||||
|
||||
## About Inform
|
||||
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
Prerelease: beta
|
||||
Build Date: 14 July 2023
|
||||
Build Number: 6W81
|
||||
Build Date: 15 July 2023
|
||||
Build Number: 6W82
|
||||
|
|
|
@ -328,11 +328,11 @@ in base 3 and 1Z141Y3 in base 36.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">PrintInBase</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax"> </span><span class="identifier-syntax">base</span><span class="plain-syntax"> </span><span class="identifier-syntax">digits</span><span class="plain-syntax"> </span><span class="identifier-syntax">a</span><span class="plain-syntax"> </span><span class="identifier-syntax">digit_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">j</span><span class="plain-syntax"> </span><span class="identifier-syntax">k</span><span class="plain-syntax"> </span><span class="identifier-syntax">d</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">PrintInBase</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax"> </span><span class="identifier-syntax">base</span><span class="plain-syntax"> </span><span class="identifier-syntax">digits</span><span class="plain-syntax"> </span><span class="identifier-syntax">digitset</span><span class="plain-syntax"> </span><span class="identifier-syntax">a</span><span class="plain-syntax"> </span><span class="identifier-syntax">digit_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">j</span><span class="plain-syntax"> </span><span class="identifier-syntax">k</span><span class="plain-syntax"> </span><span class="identifier-syntax">d</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">base</span><span class="plain-syntax"> < </span><span class="constant-syntax">2</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">base</span><span class="plain-syntax"> > </span><span class="constant-syntax">36</span><span class="plain-syntax">)) { </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">"("</span><span class="plain-syntax">, </span><span class="identifier-syntax">n</span><span class="plain-syntax">, </span><span class="string-syntax">" in base "</span><span class="plain-syntax">, </span><span class="identifier-syntax">base</span><span class="plain-syntax">, </span><span class="string-syntax">")"</span><span class="plain-syntax">; </span><span class="reserved-syntax">return</span><span class="plain-syntax">; }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">digits</span><span class="plain-syntax"> < </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><span class="identifier-syntax">digits</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">digits</span><span class="plain-syntax"> > </span><span class="constant-syntax">100</span><span class="plain-syntax">) </span><span class="identifier-syntax">digits</span><span class="plain-syntax"> = </span><span class="constant-syntax">100</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">base</span><span class="plain-syntax"> == </span><span class="constant-syntax">10</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">digits</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">)) { </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax">; </span><span class="reserved-syntax">return</span><span class="plain-syntax">; }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">base</span><span class="plain-syntax"> == </span><span class="constant-syntax">10</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">digits</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">digitset</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">)) { </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax">; </span><span class="reserved-syntax">return</span><span class="plain-syntax">; }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">n</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">digit_count</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
|
@ -343,11 +343,18 @@ in base 3 and 1Z141Y3 in base 36.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">digit_count</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">until</span><span class="plain-syntax"> (</span><span class="identifier-syntax">a</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">j</span><span class="plain-syntax"> = </span><span class="identifier-syntax">digits</span><span class="plain-syntax">: </span><span class="identifier-syntax">j</span><span class="plain-syntax"> > </span><span class="identifier-syntax">digit_count</span><span class="plain-syntax">: </span><span class="identifier-syntax">j</span><span class="plain-syntax">--) </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">"0"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">j</span><span class="plain-syntax"> = </span><span class="identifier-syntax">digits</span><span class="plain-syntax">: </span><span class="identifier-syntax">j</span><span class="plain-syntax"> > </span><span class="identifier-syntax">digit_count</span><span class="plain-syntax">: </span><span class="identifier-syntax">j</span><span class="plain-syntax">--) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">digitset</span><span class="plain-syntax">) </span><span class="identifier-syntax">digitset</span><span class="plain-syntax">(0);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">"0"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">j</span><span class="plain-syntax"> = </span><span class="identifier-syntax">digit_count</span><span class="plain-syntax">: </span><span class="identifier-syntax">j</span><span class="plain-syntax"> >= </span><span class="constant-syntax">1</span><span class="plain-syntax">: </span><span class="identifier-syntax">j</span><span class="plain-syntax">--) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">a</span><span class="plain-syntax"> = </span><span class="identifier-syntax">n</span><span class="plain-syntax">; </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">k</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">: </span><span class="identifier-syntax">k</span><span class="plain-syntax"> < </span><span class="identifier-syntax">j</span><span class="plain-syntax">: </span><span class="identifier-syntax">k</span><span class="plain-syntax">++) </span><span class="identifier-syntax">a</span><span class="plain-syntax"> = </span><span class="identifier-syntax">DropDigit</span><span class="plain-syntax">(</span><span class="identifier-syntax">a</span><span class="plain-syntax">, </span><span class="identifier-syntax">base</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">d</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LeastDigit</span><span class="plain-syntax">(</span><span class="identifier-syntax">a</span><span class="plain-syntax">, </span><span class="identifier-syntax">base</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">d</span><span class="plain-syntax"> < </span><span class="constant-syntax">10</span><span class="plain-syntax">) </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="identifier-syntax">d</span><span class="plain-syntax">; </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">print</span><span class="plain-syntax"> (</span><span class="identifier-syntax">char</span><span class="plain-syntax">) </span><span class="character-syntax">'A'</span><span class="plain-syntax"> + </span><span class="identifier-syntax">d</span><span class="plain-syntax"> - </span><span class="constant-syntax">10</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">digitset</span><span class="plain-syntax">) </span><span class="identifier-syntax">digitset</span><span class="plain-syntax">(</span><span class="identifier-syntax">d</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">d</span><span class="plain-syntax"> < </span><span class="constant-syntax">10</span><span class="plain-syntax">) </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="identifier-syntax">d</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">print</span><span class="plain-syntax"> (</span><span class="identifier-syntax">char</span><span class="plain-syntax">) </span><span class="character-syntax">'A'</span><span class="plain-syntax"> + </span><span class="identifier-syntax">d</span><span class="plain-syntax"> - </span><span class="constant-syntax">10</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
|
|
|
@ -413,7 +413,7 @@ by a bracketed list of up to three options in any order.
|
|||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><lp-part></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { 0, RP[1] }</span>
|
||||
|
||||
<span class="Preform-function-syntax"><lp-part></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><np-unparsed-bal></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">(</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><lp-part-option-list></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">)</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { 0, LPRequests::mark(RP[1], R[2], <<min_part_val>>, <<max_part_val>>) }</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><np-unparsed-bal></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">(</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><lp-part-option-list></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">)</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { 0, LPRequests::mark(RP[1], R[2], <<min_part_val>>, <<max_part_val>>, <<digits_wd_val>>, <<values_wd_val>>) }</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><np-unparsed-bal></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { 0, RP[1] }</span>
|
||||
|
||||
<span class="Preform-function-syntax"><lp-part-option-list></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
|
@ -435,7 +435,9 @@ by a bracketed list of up to three options in any order.
|
|||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">up</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">to</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><cardinal-number></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">digit/digits</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-nlpr.html#SP8_2" class="named-paragraph-link"><span class="named-paragraph">Apply max digit count</span><span class="named-paragraph-number">8.2</span></a></span><span class="Preform-constant-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><cardinal-number></span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><number-base></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">digit/digits</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-nlpr.html#SP8_5" class="named-paragraph-link"><span class="named-paragraph">Apply based digit count</span><span class="named-paragraph-number">8.5</span></a></span><span class="Preform-constant-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><cardinal-number></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">digit/digits</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-nlpr.html#SP8_3" class="named-paragraph-link"><span class="named-paragraph">Apply digit count</span><span class="named-paragraph-number">8.3</span></a></span><span class="Preform-constant-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">......</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-nlpr.html#SP8_6" class="named-paragraph-link"><span class="named-paragraph">Issue PM_BadLPPartOption problem</span><span class="named-paragraph-number">8.6</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">digits</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">{</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><quoted-text></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">}</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> <<digits_wd_val>> = Wordings::first_wn(WR[1]); </span><span class="named-paragraph-container code-font"><a href="3-nlpr.html#SP8_6" class="named-paragraph-link"><span class="named-paragraph">Apply digits text</span><span class="named-paragraph-number">8.6</span></a></span><span class="Preform-constant-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">values</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">{</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><quoted-text></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">}</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> <<values_wd_val>> = Wordings::first_wn(WR[1]); </span><span class="named-paragraph-container code-font"><a href="3-nlpr.html#SP8_7" class="named-paragraph-link"><span class="named-paragraph">Apply values text</span><span class="named-paragraph-number">8.7</span></a></span><span class="Preform-constant-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">......</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-nlpr.html#SP8_8" class="named-paragraph-link"><span class="named-paragraph">Issue PM_BadLPPartOption problem</span><span class="named-paragraph-number">8.8</span></a></span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP8_1" class="paragraph-anchor"></a><b>§8.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Apply range</span><span class="named-paragraph-number">8.1</span></span><span class="Preform-comment-syntax"> =</span>
|
||||
|
@ -493,7 +495,21 @@ by a bracketed list of up to three options in any order.
|
|||
<span class="plain-syntax"> ==> { </span><span class="constant-syntax">MAX_DIGITS_LSO</span><span class="plain-syntax">*</span><span class="identifier-syntax">R</span><span class="plain-syntax">[1] + </span><span class="constant-syntax">MIN_DIGITS_LSO</span><span class="plain-syntax">*</span><span class="identifier-syntax">R</span><span class="plain-syntax">[1] + </span><span class="constant-syntax">BASE_LSO</span><span class="plain-syntax">*</span><span class="identifier-syntax">R</span><span class="plain-syntax">[2] + </span><span class="constant-syntax">WITH_LEADING_ZEROS_LSO</span><span class="plain-syntax">, - };</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-nlpr.html#SP8">§8</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP8_6" class="paragraph-anchor"></a><b>§8.6. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_BadLPPartOption problem</span><span class="named-paragraph-number">8.6</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP8_6" class="paragraph-anchor"></a><b>§8.6. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Apply digits text</span><span class="named-paragraph-number">8.6</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> ==> { </span><span class="constant-syntax">DIGITS_TEXT_LSO</span><span class="plain-syntax">, - };</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-nlpr.html#SP8">§8</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP8_7" class="paragraph-anchor"></a><b>§8.7. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Apply values text</span><span class="named-paragraph-number">8.7</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> ==> { </span><span class="constant-syntax">VALUES_TEXT_LSO</span><span class="plain-syntax">, - };</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-nlpr.html#SP8">§8</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP8_8" class="paragraph-anchor"></a><b>§8.8. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_BadLPPartOption problem</span><span class="named-paragraph-number">8.8</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -528,6 +544,8 @@ by a bracketed list of up to three options in any order.
|
|||
<span class="definition-keyword">define</span> <span class="constant-syntax">WITHOUT_LEADING_ZEROS_LSO</span><span class="plain-syntax"> </span><span class="constant-syntax">0x00000008</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">MAXIMUM_LSO</span><span class="plain-syntax"> </span><span class="constant-syntax">0x00000010</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">MINIMUM_LSO</span><span class="plain-syntax"> </span><span class="constant-syntax">0x00000020</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">DIGITS_TEXT_LSO</span><span class="plain-syntax"> </span><span class="constant-syntax">0x00000040</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">VALUES_TEXT_LSO</span><span class="plain-syntax"> </span><span class="constant-syntax">0x00000080</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">BASE_LSO</span><span class="plain-syntax"> </span><span class="constant-syntax">0x00000100</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">BASE_MASK_LSO</span><span class="plain-syntax"> </span><span class="constant-syntax">0x0000ff00</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">MIN_DIGITS_LSO</span><span class="plain-syntax"> </span><span class="constant-syntax">0x00010000</span>
|
||||
|
@ -536,11 +554,13 @@ by a bracketed list of up to three options in any order.
|
|||
<span class="definition-keyword">define</span> <span class="constant-syntax">MAX_DIGITS_MASK_LSO</span><span class="plain-syntax"> </span><span class="constant-syntax">0x7f000000</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">LPRequests::mark</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">LPRequests::mark</span></span>:<br/><a href="3-nlpr.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">A</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">MI</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">MA</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">LPRequests::mark</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">LPRequests::mark</span></span>:<br/><a href="3-nlpr.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">A</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">MI</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">MA</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">DT</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">VT</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">A</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::write_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">, </span><span class="identifier-syntax">lpe_options_ANNOT</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax"> & </span><span class="constant-syntax">MINIMUM_LSO</span><span class="plain-syntax">) </span><span class="identifier-syntax">Annotations::write_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">, </span><span class="identifier-syntax">lpe_min_ANNOT</span><span class="plain-syntax">, </span><span class="identifier-syntax">MI</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax"> & </span><span class="constant-syntax">MAXIMUM_LSO</span><span class="plain-syntax">) </span><span class="identifier-syntax">Annotations::write_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">, </span><span class="identifier-syntax">lpe_max_ANNOT</span><span class="plain-syntax">, </span><span class="identifier-syntax">MA</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax"> & </span><span class="constant-syntax">DIGITS_TEXT_LSO</span><span class="plain-syntax">) </span><span class="identifier-syntax">Annotations::write_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">, </span><span class="identifier-syntax">lpe_digits_ANNOT</span><span class="plain-syntax">, </span><span class="identifier-syntax">DT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax"> & </span><span class="constant-syntax">VALUES_TEXT_LSO</span><span class="plain-syntax">) </span><span class="identifier-syntax">Annotations::write_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">, </span><span class="identifier-syntax">lpe_values_ANNOT</span><span class="plain-syntax">, </span><span class="identifier-syntax">VT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">A</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
|
|
@ -152,6 +152,8 @@ We begin with <a href="index.html" class="internal">core</a> itself.
|
|||
<span class="definition-keyword">enum</span> <span class="constant-syntax">literal_list_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">literal_pattern_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">literal_pattern_name_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">literal_pattern_element_value_set_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">literal_pattern_element_value_pair_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">llist_entry_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">nonlocal_variable_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">response_message_CLASS</span>
|
||||
|
@ -167,6 +169,8 @@ We begin with <a href="index.html" class="internal">core</a> itself.
|
|||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">literal_list</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">literal_pattern</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">literal_pattern_name</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">literal_pattern_element_value_set</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">literal_pattern_element_value_pair</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">llist_entry</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">response_message</span><span class="plain-syntax">)</span>
|
||||
|
|
|
@ -530,6 +530,8 @@ which compilation unit the node belongs.
|
|||
<span class="definition-keyword">enum</span> <span class="constant-syntax">lpe_options_ANNOT</span><span class="plain-syntax"> </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">int</span></span><span class="comment-syntax">: options set for a literal pattern part</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">lpe_min_ANNOT</span><span class="plain-syntax"> </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">int</span></span><span class="comment-syntax">: value offset for a literal pattern part</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">lpe_max_ANNOT</span><span class="plain-syntax"> </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">int</span></span><span class="comment-syntax">: maximum value for a literal pattern part</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">lpe_digits_ANNOT</span><span class="plain-syntax"> </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">int</span></span><span class="comment-syntax">: word number of digits text for a literal pattern part</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">lpe_values_ANNOT</span><span class="plain-syntax"> </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">int</span></span><span class="comment-syntax">: word number of values text for a literal pattern part</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">multiplicity_ANNOT</span><span class="plain-syntax"> </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">int</span></span><span class="comment-syntax">: e.g., 5 for "five gold rings"</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">new_relation_here_ANNOT</span><span class="plain-syntax"> </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">binary_predicate</span></span><span class="comment-syntax">: new relation as subject of "relates" sentence</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">nowhere_ANNOT</span><span class="plain-syntax"> </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">int</span></span><span class="comment-syntax">: used by the spatial feature to show this represents "nowhere"</span>
|
||||
|
@ -586,6 +588,10 @@ which compilation unit the node belongs.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::declare_type</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="constant-syntax">lpe_min_ANNOT</span><span class="plain-syntax">, </span><a href="1-inaa.html#SP16" class="function-link"><span class="function-syntax">CoreSyntax::write_lpe_min_ANNOT</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::declare_type</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="constant-syntax">lpe_digits_ANNOT</span><span class="plain-syntax">, </span><a href="1-inaa.html#SP16" class="function-link"><span class="function-syntax">CoreSyntax::write_lpe_digits_ANNOT</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::declare_type</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="constant-syntax">lpe_values_ANNOT</span><span class="plain-syntax">, </span><a href="1-inaa.html#SP16" class="function-link"><span class="function-syntax">CoreSyntax::write_lpe_values_ANNOT</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::declare_type</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="constant-syntax">multiplicity_ANNOT</span><span class="plain-syntax">, </span><a href="1-inaa.html#SP16" class="function-link"><span class="function-syntax">CoreSyntax::write_multiplicity_ANNOT</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::declare_type</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="constant-syntax">new_relation_here_ANNOT</span><span class="plain-syntax">, </span><a href="1-inaa.html#SP16" class="function-link"><span class="function-syntax">CoreSyntax::write_new_relation_here_ANNOT</span></a><span class="plain-syntax">);</span>
|
||||
|
@ -643,6 +649,12 @@ which compilation unit the node belongs.
|
|||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CoreSyntax::write_lpe_min_ANNOT</span><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" {lpe offset: %d}"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="constant-syntax">lpe_min_ANNOT</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CoreSyntax::write_lpe_digits_ANNOT</span><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" {lpe digits: %W}"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::one_word</span><span class="plain-syntax">(</span><span class="identifier-syntax">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="constant-syntax">lpe_digits_ANNOT</span><span class="plain-syntax">)));</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CoreSyntax::write_lpe_values_ANNOT</span><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" {lpe values: %W}"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::one_word</span><span class="plain-syntax">(</span><span class="identifier-syntax">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="constant-syntax">lpe_values_ANNOT</span><span class="plain-syntax">)));</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CoreSyntax::write_multiplicity_ANNOT</span><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="constant-syntax">multiplicity_ANNOT</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" {multiplicity %d}"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="constant-syntax">multiplicity_ANNOT</span><span class="plain-syntax">));</span>
|
||||
|
@ -720,6 +732,8 @@ which compilation unit the node belongs.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow</span><span class="plain-syntax">(</span><span class="identifier-syntax">PROPER_NOUN_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">lpe_options_ANNOT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow</span><span class="plain-syntax">(</span><span class="identifier-syntax">PROPER_NOUN_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">lpe_max_ANNOT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow</span><span class="plain-syntax">(</span><span class="identifier-syntax">PROPER_NOUN_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">lpe_min_ANNOT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow</span><span class="plain-syntax">(</span><span class="identifier-syntax">PROPER_NOUN_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">lpe_digits_ANNOT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow</span><span class="plain-syntax">(</span><span class="identifier-syntax">PROPER_NOUN_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">lpe_values_ANNOT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow</span><span class="plain-syntax">(</span><span class="identifier-syntax">PROPER_NOUN_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">multiplicity_ANNOT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow</span><span class="plain-syntax">(</span><span class="identifier-syntax">UNPARSED_NOUN_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">new_relation_here_ANNOT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow</span><span class="plain-syntax">(</span><span class="identifier-syntax">PROPER_NOUN_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">new_relation_here_ANNOT</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -184,7 +184,7 @@ number of successes.
|
|||
<span class="plain-syntax">Size of lexicon: 3163 excerpt meanings</span>
|
||||
<span class="plain-syntax"> Stored among 856 words out of total vocabulary of 10784</span>
|
||||
<span class="plain-syntax"> 720 words have a start list: longest belongs to report (with 293 meanings)</span>
|
||||
<span class="plain-syntax"> 21 words have an end list: longest belongs to digit (with 7 meanings)</span>
|
||||
<span class="plain-syntax"> 21 words have an end list: longest belongs to digits (with 7 meanings)</span>
|
||||
<span class="plain-syntax"> 29 words have a middle list: longest belongs to to (with 4 meanings)</span>
|
||||
<span class="plain-syntax"> 108 words have a subset list: longest belongs to street (with 4 meanings)</span>
|
||||
|
||||
|
|
|
@ -81,10 +81,12 @@ which use this module:
|
|||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b></p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">contents_entry_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">digit_manager_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">mapping_hint_CLASS</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">contents_entry</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">digit_manager</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">mapping_hint</span><span class="plain-syntax">)</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -79,7 +79,7 @@ creates the <span class="extract"><span class="extract-syntax">main</span></span
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">LargeScale::begin_new_tree</span><span class="plain-syntax">(</span><span class="identifier-syntax">main_emission_tree</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">main_emission_tree</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="function-syntax">Emit::tree</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Emit::tree</span></span>:<br/><a href="2-emt.html#SP4">§4</a>, <a href="2-emt.html#SP5">§5</a>, <a href="2-emt.html#SP6">§6</a>, <a href="2-emt.html#SP7">§7</a>, <a href="2-emt.html#SP8">§8</a>, <a href="2-emt.html#SP9">§9</a>, <a href="2-emt.html#SP11">§11</a>, <a href="2-emt.html#SP12">§12</a>, <a href="2-emt.html#SP13">§13</a>, <a href="2-emt.html#SP14">§14</a><br/>Hierarchy - <a href="2-hrr.html#SP1">§1</a>, <a href="2-hrr.html#SP2">§2</a>, <a href="2-hrr.html#SP8">§8</a>, <a href="2-hrr.html#SP9">§9</a>, <a href="2-hrr.html#SP11">§11</a>, <a href="2-hrr.html#SP12">§12</a>, <a href="2-hrr.html#SP13">§13</a>, <a href="2-hrr.html#SP14">§14</a>, <a href="2-hrr.html#SP15">§15</a>, <a href="2-hrr.html#SP16">§16</a>, <a href="2-hrr.html#SP17">§17</a>, <a href="2-hrr.html#SP18">§18</a>, <a href="2-hrr.html#SP20">§20</a>, <a href="2-hrr.html#SP21">§21</a>, <a href="2-hrr.html#SP22">§22</a><br/>Compilation Units - <a href="2-cu.html#SP2_1">§2.1</a><br/>Emit Code - <a href="2-ec.html#SP2">§2</a>, <a href="2-ec.html#SP3">§3</a>, <a href="2-ec.html#SP4">§4</a>, <a href="2-ec.html#SP5">§5</a>, <a href="2-ec.html#SP7">§7</a>, <a href="2-ec.html#SP8">§8</a>, <a href="2-ec.html#SP10">§10</a>, <a href="2-ec.html#SP12">§12</a>, <a href="2-ec.html#SP13">§13</a>, <a href="2-ec.html#SP14">§14</a>, <a href="2-ec.html#SP15">§15</a>, <a href="2-ec.html#SP16">§16</a>, <a href="2-ec.html#SP17">§17</a><br/>Emit Arrays - <a href="2-ea.html#SP5">§5</a><br/>Default Values - <a href="2-dv.html#SP1">§1</a><br/>Generic Module - <a href="3-gm.html#SP1">§1</a><br/>Use Options - <a href="3-uo.html#SP3">§3</a><br/>Enclosures - <a href="4-enc.html#SP1">§1</a><br/>Text Substitutions - <a href="4-ts.html#SP7_4">§7.4</a><br/>Rules - <a href="5-rls.html#SP6">§6</a><br/>Variables - <a href="5-vrb.html#SP6">§6</a>, <a href="5-vrb.html#SP15">§15</a><br/>Kind Constructors - <a href="5-kc.html#SP3">§3</a>, <a href="5-kc.html#SP9">§9</a>, <a href="5-kc.html#SP12">§12</a>, <a href="5-kc.html#SP17_1">§17.1</a><br/>Property Permissions - <a href="6-pp.html#SP2">§2</a>, <a href="6-pp.html#SP3">§3</a><br/>Property Values - <a href="6-pv.html#SP2">§2</a>, <a href="6-pv.html#SP2_2_1">§2.2.1</a><br/>Command Grammars - <a href="7-cg.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="function-syntax">Emit::tree</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Emit::tree</span></span>:<br/><a href="2-emt.html#SP4">§4</a>, <a href="2-emt.html#SP5">§5</a>, <a href="2-emt.html#SP6">§6</a>, <a href="2-emt.html#SP7">§7</a>, <a href="2-emt.html#SP8">§8</a>, <a href="2-emt.html#SP9">§9</a>, <a href="2-emt.html#SP11">§11</a>, <a href="2-emt.html#SP12">§12</a>, <a href="2-emt.html#SP13">§13</a>, <a href="2-emt.html#SP14">§14</a><br/>Hierarchy - <a href="2-hrr.html#SP1">§1</a>, <a href="2-hrr.html#SP2">§2</a>, <a href="2-hrr.html#SP8">§8</a>, <a href="2-hrr.html#SP9">§9</a>, <a href="2-hrr.html#SP11">§11</a>, <a href="2-hrr.html#SP12">§12</a>, <a href="2-hrr.html#SP13">§13</a>, <a href="2-hrr.html#SP14">§14</a>, <a href="2-hrr.html#SP15">§15</a>, <a href="2-hrr.html#SP16">§16</a>, <a href="2-hrr.html#SP17">§17</a>, <a href="2-hrr.html#SP18">§18</a>, <a href="2-hrr.html#SP20">§20</a>, <a href="2-hrr.html#SP21">§21</a>, <a href="2-hrr.html#SP22">§22</a><br/>Compilation Units - <a href="2-cu.html#SP2_1">§2.1</a><br/>Emit Code - <a href="2-ec.html#SP2">§2</a>, <a href="2-ec.html#SP3">§3</a>, <a href="2-ec.html#SP4">§4</a>, <a href="2-ec.html#SP5">§5</a>, <a href="2-ec.html#SP7">§7</a>, <a href="2-ec.html#SP8">§8</a>, <a href="2-ec.html#SP10">§10</a>, <a href="2-ec.html#SP12">§12</a>, <a href="2-ec.html#SP13">§13</a>, <a href="2-ec.html#SP14">§14</a>, <a href="2-ec.html#SP15">§15</a>, <a href="2-ec.html#SP16">§16</a>, <a href="2-ec.html#SP17">§17</a><br/>Emit Arrays - <a href="2-ea.html#SP5">§5</a><br/>Default Values - <a href="2-dv.html#SP1">§1</a><br/>Generic Module - <a href="3-gm.html#SP1">§1</a><br/>Use Options - <a href="3-uo.html#SP3">§3</a><br/>Enclosures - <a href="4-enc.html#SP1">§1</a><br/>Text Substitutions - <a href="4-ts.html#SP7_4">§7.4</a><br/>Rules - <a href="5-rls.html#SP6">§6</a><br/>Variables - <a href="5-vrb.html#SP6">§6</a>, <a href="5-vrb.html#SP15">§15</a><br/>Literal Patterns - <a href="5-lp.html#SP7">§7</a><br/>Kind Constructors - <a href="5-kc.html#SP3">§3</a>, <a href="5-kc.html#SP9">§9</a>, <a href="5-kc.html#SP12">§12</a>, <a href="5-kc.html#SP17_1">§17.1</a><br/>Property Permissions - <a href="6-pp.html#SP2">§2</a>, <a href="6-pp.html#SP3">§3</a><br/>Property Values - <a href="6-pv.html#SP2">§2</a>, <a href="6-pv.html#SP2_2_1">§2.2.1</a><br/>Command Grammars - <a href="7-cg.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">main_emission_tree</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
@ -103,7 +103,7 @@ creates the <span class="extract"><span class="extract-syntax">main</span></span
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">InterBookmark::package</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::at</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">Emit::current_enclosure</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">Emit::current_enclosure</span></span>:<br/>Enclosures - <a href="4-enc.html#SP1">§1</a><br/>Text Substitutions - <a href="4-ts.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">Emit::current_enclosure</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">Emit::current_enclosure</span></span>:<br/>Enclosures - <a href="4-enc.html#SP1">§1</a><br/>Text Substitutions - <a href="4-ts.html#SP5">§5</a><br/>Literal Patterns - <a href="5-lp.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Packaging::enclosure</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -94,7 +94,7 @@ existed only to serve the needs of an unusual single work of IF called
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">VH</span><span class="plain-syntax">) </span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::holster_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">bq</span><span class="plain-syntax">-></span><span class="element-syntax">function_iname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure box_quotation is accessed in 3/uo and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure box_quotation is accessed in 3/uo, 5/lp and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>The box functions are then compiled in due course by the following agent
|
||||
(see <a href="../core-module/1-htc.html" class="internal">How To Compile (in core)</a>). The reason they weren't simply compiled earlier
|
||||
is that a function was already being compiled at the time, and you can't
|
||||
|
|
|
@ -232,7 +232,7 @@ the first function appears.)
|
|||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP14" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">EQ_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-lp.html#SP4_1_1_3_2" class="named-paragraph-link"><span class="named-paragraph">Evaluate LPE value to be printed</span><span class="named-paragraph-number">4.1.1.3.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-lp.html#SP4_1_1_3_3" class="named-paragraph-link"><span class="named-paragraph">Evaluate LPE value to be printed</span><span class="named-paragraph-number">4.1.1.3.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP8" class="function-link"><span class="function-syntax">EmitCode::val_number</span></a><span class="plain-syntax">(0);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
|
@ -245,17 +245,8 @@ the first function appears.)
|
|||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-lp.html#SP4_1_1_3_1" class="named-paragraph-link"><span class="named-paragraph">Print leading zeros</span><span class="named-paragraph-number">4.1.1.3.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">lpe</span><span class="plain-syntax">-></span><span class="identifier-syntax">number_base</span><span class="plain-syntax"> != </span><span class="constant-syntax">10</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP14" class="function-link"><span class="function-syntax">EmitCode::call</span></a><span class="plain-syntax">(</span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PRINTINBASE_HL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP14" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PRINTNUMBER_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-lp.html#SP4_1_1_3_2" class="named-paragraph-link"><span class="named-paragraph">Evaluate LPE value to be printed</span><span class="named-paragraph-number">4.1.1.3.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">lpe</span><span class="plain-syntax">-></span><span class="identifier-syntax">number_base</span><span class="plain-syntax"> != </span><span class="constant-syntax">10</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP8" class="function-link"><span class="function-syntax">EmitCode::val_number</span></a><span class="plain-syntax">((</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) (</span><span class="identifier-syntax">lpe</span><span class="plain-syntax">-></span><span class="identifier-syntax">number_base</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-lp.html#SP4_1_1_3_2" class="named-paragraph-link"><span class="named-paragraph">Print leading zeros</span><span class="named-paragraph-number">4.1.1.3.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-lp.html#SP4_1_1_3_1" class="named-paragraph-link"><span class="named-paragraph">Print the value itself</span><span class="named-paragraph-number">4.1.1.3.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">lp</span><span class="plain-syntax">-></span><span class="identifier-syntax">number_signed</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP14" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">IF_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
|
@ -279,23 +270,43 @@ the first function appears.)
|
|||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-lp.html#SP4_1_1_3_1" class="named-paragraph-link"><span class="named-paragraph">Print leading zeros</span><span class="named-paragraph-number">4.1.1.3.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">lpe</span><span class="plain-syntax">-></span><span class="identifier-syntax">number_base</span><span class="plain-syntax"> != </span><span class="constant-syntax">10</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP14" class="function-link"><span class="function-syntax">EmitCode::call</span></a><span class="plain-syntax">(</span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PRINTINBASE_HL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP14" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PRINTNUMBER_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-lp.html#SP4_1_1_3_2" class="named-paragraph-link"><span class="named-paragraph">Evaluate LPE value to be printed</span><span class="named-paragraph-number">4.1.1.3.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">lpe</span><span class="plain-syntax">-></span><span class="identifier-syntax">number_base</span><span class="plain-syntax"> != </span><span class="constant-syntax">10</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP8" class="function-link"><span class="function-syntax">EmitCode::val_number</span></a><span class="plain-syntax">((</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) (</span><span class="identifier-syntax">lpe</span><span class="plain-syntax">-></span><span class="identifier-syntax">number_base</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-lp.html#SP4_1_1_3_2" class="named-paragraph-link"><span class="named-paragraph">Print leading zeros</span><span class="named-paragraph-number">4.1.1.3.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-lp.html#SP4_1_1_3_1" class="named-paragraph-link"><span class="named-paragraph">Print the value itself</span><span class="named-paragraph-number">4.1.1.3.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ec</span><span class="plain-syntax">++;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-lp.html#SP4_1_1">§4.1.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_1_1_3_1" class="paragraph-anchor"></a><b>§4.1.1.3.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Print leading zeros</span><span class="named-paragraph-number">4.1.1.3.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP4_1_1_3_1" class="paragraph-anchor"></a><b>§4.1.1.3.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Print the value itself</span><span class="named-paragraph-number">4.1.1.3.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">LiteralPatterns::element_value_count</span><span class="plain-syntax">(</span><span class="identifier-syntax">lpe</span><span class="plain-syntax">-></span><span class="identifier-syntax">values</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP14" class="function-link"><span class="function-syntax">EmitCode::call</span></a><span class="plain-syntax">(</span><a href="5-lp.html#SP7" class="function-link"><span class="function-syntax">RTLiteralPatterns::values_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">lpe</span><span class="plain-syntax">-></span><span class="identifier-syntax">values</span><span class="plain-syntax">-></span><span class="identifier-syntax">source</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-lp.html#SP4_1_1_3_1_1" class="named-paragraph-link"><span class="named-paragraph">Evaluate LPE value to be printed without offset</span><span class="named-paragraph-number">4.1.1.3.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">lpe</span><span class="plain-syntax">-></span><span class="identifier-syntax">number_base</span><span class="plain-syntax"> == </span><span class="constant-syntax">10</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">lpe</span><span class="plain-syntax">-></span><span class="identifier-syntax">digits_text</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP14" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PRINTNUMBER_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-lp.html#SP4_1_1_3_3" class="named-paragraph-link"><span class="named-paragraph">Evaluate LPE value to be printed</span><span class="named-paragraph-number">4.1.1.3.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP14" class="function-link"><span class="function-syntax">EmitCode::call</span></a><span class="plain-syntax">(</span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PRINTINBASE_HL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-lp.html#SP4_1_1_3_3" class="named-paragraph-link"><span class="named-paragraph">Evaluate LPE value to be printed</span><span class="named-paragraph-number">4.1.1.3.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP8" class="function-link"><span class="function-syntax">EmitCode::val_number</span></a><span class="plain-syntax">((</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) (</span><span class="identifier-syntax">lpe</span><span class="plain-syntax">-></span><span class="identifier-syntax">number_base</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP8" class="function-link"><span class="function-syntax">EmitCode::val_number</span></a><span class="plain-syntax">(0);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">lpe</span><span class="plain-syntax">-></span><span class="identifier-syntax">digits_text</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP8" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="5-lp.html#SP7" class="function-link"><span class="function-syntax">RTLiteralPatterns::digits_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">lpe</span><span class="plain-syntax">-></span><span class="identifier-syntax">digits_text</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-lp.html#SP4_1_1_3">§4.1.1.3</a> (twice).</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_1_1_3_2" class="paragraph-anchor"></a><b>§4.1.1.3.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Print leading zeros</span><span class="named-paragraph-number">4.1.1.3.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -316,7 +327,7 @@ the first function appears.)
|
|||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP14" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">LT_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-lp.html#SP4_1_1_3_2" class="named-paragraph-link"><span class="named-paragraph">Evaluate LPE value to be printed</span><span class="named-paragraph-number">4.1.1.3.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-lp.html#SP4_1_1_3_3" class="named-paragraph-link"><span class="named-paragraph">Evaluate LPE value to be printed</span><span class="named-paragraph-number">4.1.1.3.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP8" class="function-link"><span class="function-syntax">EmitCode::val_number</span></a><span class="plain-syntax">((</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) (</span><span class="identifier-syntax">pow</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP5" class="function-link"><span class="function-syntax">EmitCode::code</span></a><span class="plain-syntax">();</span>
|
||||
|
@ -331,7 +342,7 @@ the first function appears.)
|
|||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-lp.html#SP4_1_1_3">§4.1.1.3</a> (twice).</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_1_1_3_2" class="paragraph-anchor"></a><b>§4.1.1.3.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Evaluate LPE value to be printed</span><span class="named-paragraph-number">4.1.1.3.2</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP4_1_1_3_3" class="paragraph-anchor"></a><b>§4.1.1.3.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Evaluate LPE value to be printed</span><span class="named-paragraph-number">4.1.1.3.3</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -357,7 +368,26 @@ the first function appears.)
|
|||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-lp.html#SP4_1_1_3">§4.1.1.3</a> (three times), <a href="5-lp.html#SP4_1_1_3_1">§4.1.1.3.1</a>, <a href="5-lp.html#SP4_1_1_4">§4.1.1.4</a> (twice).</li></ul>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-lp.html#SP4_1_1_3">§4.1.1.3</a>, <a href="5-lp.html#SP4_1_1_3_1">§4.1.1.3.1</a> (twice), <a href="5-lp.html#SP4_1_1_3_2">§4.1.1.3.2</a>, <a href="5-lp.html#SP4_1_1_4">§4.1.1.4</a> (twice).</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_1_1_3_1_1" class="paragraph-anchor"></a><b>§4.1.1.3.1.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Evaluate LPE value to be printed without offset</span><span class="named-paragraph-number">4.1.1.3.1.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">lpe</span><span class="plain-syntax">-></span><span class="identifier-syntax">element_range</span><span class="plain-syntax"> >= </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP14" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">MODULO_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP14" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">DIVIDE_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP8" class="function-link"><span class="function-syntax">EmitCode::val_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">value_s</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP8" class="function-link"><span class="function-syntax">EmitCode::val_number</span></a><span class="plain-syntax">((</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) (</span><span class="identifier-syntax">lpe</span><span class="plain-syntax">-></span><span class="identifier-syntax">element_multiplier</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">lpe</span><span class="plain-syntax">-></span><span class="identifier-syntax">element_range</span><span class="plain-syntax"> >= </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP8" class="function-link"><span class="function-syntax">EmitCode::val_number</span></a><span class="plain-syntax">((</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) (</span><span class="identifier-syntax">lpe</span><span class="plain-syntax">-></span><span class="identifier-syntax">element_range</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-lp.html#SP4_1_1_3_1">§4.1.1.3.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_1_1_4" class="paragraph-anchor"></a><b>§4.1.1.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Truncate the printed form here if subsequent numerical parts are zero</span><span class="named-paragraph-number">4.1.1.4</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
|
@ -369,7 +399,7 @@ the first function appears.)
|
|||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP14" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">EQ_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-lp.html#SP4_1_1_3_2" class="named-paragraph-link"><span class="named-paragraph">Evaluate LPE value to be printed</span><span class="named-paragraph-number">4.1.1.3.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-lp.html#SP4_1_1_3_3" class="named-paragraph-link"><span class="named-paragraph">Evaluate LPE value to be printed</span><span class="named-paragraph-number">4.1.1.3.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP8" class="function-link"><span class="function-syntax">EmitCode::val_number</span></a><span class="plain-syntax">(0);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP5" class="function-link"><span class="function-syntax">EmitCode::code</span></a><span class="plain-syntax">();</span>
|
||||
|
@ -382,7 +412,7 @@ the first function appears.)
|
|||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP14" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">EQ_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-lp.html#SP4_1_1_3_2" class="named-paragraph-link"><span class="named-paragraph">Evaluate LPE value to be printed</span><span class="named-paragraph-number">4.1.1.3.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-lp.html#SP4_1_1_3_3" class="named-paragraph-link"><span class="named-paragraph">Evaluate LPE value to be printed</span><span class="named-paragraph-number">4.1.1.3.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP8" class="function-link"><span class="function-syntax">EmitCode::val_number</span></a><span class="plain-syntax">(0);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP5" class="function-link"><span class="function-syntax">EmitCode::code</span></a><span class="plain-syntax">();</span>
|
||||
|
@ -1710,6 +1740,118 @@ the sorting measure.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b>Dealing with non-standard digits.
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">DIGIT_PRINTER_NSDF</span><span class="plain-syntax"> </span><span class="identifier-syntax">from</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">VALUES_PRINTER_NSDF</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">digits_iname_D</span><span class="plain-syntax">[4] = { </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax"> };</span>
|
||||
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTLiteralPatterns::digits_iname</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">RTLiteralPatterns::digits_iname</span></span>:<br/><a href="5-lp.html#SP4_1_1_3_1">§4.1.1.3.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">text</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="5-lp.html#SP7" class="function-link"><span class="function-syntax">RTLiteralPatterns::digits_iname_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="constant-syntax">DIGIT_PRINTER_NSDF</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTLiteralPatterns::values_iname</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">RTLiteralPatterns::values_iname</span></span>:<br/><a href="5-lp.html#SP4_1_1_3_1">§4.1.1.3.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">text</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="5-lp.html#SP7" class="function-link"><span class="function-syntax">RTLiteralPatterns::digits_iname_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="constant-syntax">VALUES_PRINTER_NSDF</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">digit_manager</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">function_iname</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">text</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">category</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">digit_manager</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTLiteralPatterns::digits_iname_inner</span><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">cat</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">digits_iname_D</span><span class="plain-syntax">[</span><span class="identifier-syntax">cat</span><span class="plain-syntax">] == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">digits_iname_D</span><span class="plain-syntax">[</span><span class="identifier-syntax">cat</span><span class="plain-syntax">] = </span><span class="identifier-syntax">Dictionaries::new</span><span class="plain-syntax">(16, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax"> = </span><span class="identifier-syntax">digits_iname_D</span><span class="plain-syntax">[</span><span class="identifier-syntax">cat</span><span class="plain-syntax">];</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Dictionaries::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">text</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Dictionaries::read_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">text</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">PR</span><span class="plain-syntax"> = </span><span class="identifier-syntax">HierarchyLocations::attach_new_package</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::current_enclosure</span></a><span class="plain-syntax">(), </span><span class="constant-syntax">DIGIT_MANAGERS_HAP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP12" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">DIGIT_MANAGER_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">PR</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">desc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::new</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">desc</span><span class="plain-syntax">, </span><span class="string-syntax">"digit manager for <%S> cat %d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">cat</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">digit_manager</span><span class="plain-syntax"> *</span><span class="identifier-syntax">dm</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">digit_manager</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">dm</span><span class="plain-syntax">-></span><span class="element-syntax">function_iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">iname</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">dm</span><span class="plain-syntax">-></span><span class="element-syntax">text</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">dm</span><span class="plain-syntax">-></span><span class="element-syntax">category</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cat</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Sequence::queue</span><span class="plain-syntax">(&</span><a href="5-lp.html#SP7" class="function-link"><span class="function-syntax">RTLiteralPatterns::dm_agent</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">STORE_POINTER_digit_manager</span><span class="plain-syntax">(</span><span class="identifier-syntax">dm</span><span class="plain-syntax">), </span><span class="identifier-syntax">desc</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Dictionaries::create</span><span class="plain-syntax">(</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">text</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Dictionaries::write_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">iname</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTLiteralPatterns::dm_agent</span><span class="plain-syntax">(</span><span class="identifier-syntax">compilation_subtask</span><span class="plain-syntax"> *</span><span class="identifier-syntax">t</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">digit_manager</span><span class="plain-syntax"> *</span><span class="identifier-syntax">dm</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_digit_manager</span><span class="plain-syntax">(</span><span class="identifier-syntax">t</span><span class="plain-syntax">-></span><span class="identifier-syntax">data</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Functions::begin</span><span class="plain-syntax">(</span><span class="identifier-syntax">dm</span><span class="plain-syntax">-></span><span class="element-syntax">function_iname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">value_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_other_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"value"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">dm</span><span class="plain-syntax">-></span><span class="element-syntax">category</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">DIGIT_PRINTER_NSDF:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-lp.html#SP7_1" class="named-paragraph-link"><span class="named-paragraph">Compile the body of a digit-printer function</span><span class="named-paragraph-number">7.1</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">VALUES_PRINTER_NSDF:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-lp.html#SP7_2" class="named-paragraph-link"><span class="named-paragraph">Compile the body of a value-printer function</span><span class="named-paragraph-number">7.2</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Functions::end</span><span class="plain-syntax">(</span><span class="identifier-syntax">save</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure digit_manager is accessed in 4/bq and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP7_1" class="paragraph-anchor"></a><b>§7.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile the body of a digit-printer function</span><span class="named-paragraph-number">7.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP14" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">SWITCH_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP8" class="function-link"><span class="function-syntax">EmitCode::val_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">value_s</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP5" class="function-link"><span class="function-syntax">EmitCode::code</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">; </span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">dm</span><span class="plain-syntax">-></span><span class="element-syntax">text</span><span class="plain-syntax">); </span><span class="identifier-syntax">c</span><span class="plain-syntax">++) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP14" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">CASE_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP8" class="function-link"><span class="function-syntax">EmitCode::val_number</span></a><span class="plain-syntax">((</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">c</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP5" class="function-link"><span class="function-syntax">EmitCode::code</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP14" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PRINTCHAR_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP8" class="function-link"><span class="function-syntax">EmitCode::val_number</span></a><span class="plain-syntax">((</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">Str::get_at</span><span class="plain-syntax">(</span><span class="identifier-syntax">dm</span><span class="plain-syntax">-></span><span class="element-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">c</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP15" class="function-link"><span class="function-syntax">EmitCode::rtrue</span></a><span class="plain-syntax">();</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-lp.html#SP7">§7</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP7_2" class="paragraph-anchor"></a><b>§7.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile the body of a value-printer function</span><span class="named-paragraph-number">7.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP14" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">SWITCH_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP8" class="function-link"><span class="function-syntax">EmitCode::val_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">value_s</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP5" class="function-link"><span class="function-syntax">EmitCode::code</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">literal_pattern_element_value_set</span><span class="plain-syntax"> *</span><span class="identifier-syntax">set</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LiteralPatterns::parse_value_set</span><span class="plain-syntax">(</span><span class="identifier-syntax">dm</span><span class="plain-syntax">-></span><span class="element-syntax">text</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">; </span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="identifier-syntax">LiteralPatterns::element_value_count</span><span class="plain-syntax">(</span><span class="identifier-syntax">set</span><span class="plain-syntax">); </span><span class="identifier-syntax">c</span><span class="plain-syntax">++) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP14" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">CASE_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP8" class="function-link"><span class="function-syntax">EmitCode::val_number</span></a><span class="plain-syntax">((</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">LiteralPatterns::element_value_equivalent</span><span class="plain-syntax">(</span><span class="identifier-syntax">set</span><span class="plain-syntax">, </span><span class="identifier-syntax">c</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP5" class="function-link"><span class="function-syntax">EmitCode::code</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP14" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PRINT_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP8" class="function-link"><span class="function-syntax">EmitCode::val_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">LiteralPatterns::element_value_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">set</span><span class="plain-syntax">, </span><span class="identifier-syntax">c</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP15" class="function-link"><span class="function-syntax">EmitCode::rtrue</span></a><span class="plain-syntax">();</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-lp.html#SP7">§7</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-rlt.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-adj.html">adj</a></li><li class="progresssection"><a href="5-chr.html">chr</a></li><li class="progresssection"><a href="5-cnj.html">cnj</a></li><li class="progresssection"><a href="5-eqt.html">eqt</a></li><li class="progresssection"><a href="5-ins.html">ins</a></li><li class="progresssection"><a href="5-bi.html">bi</a></li><li class="progresssection"><a href="5-di.html">di</a></li><li class="progresssection"><a href="5-ri.html">ri</a></li><li class="progresssection"><a href="5-si.html">si</a></li><li class="progresssection"><a href="5-mlt.html">mlt</a></li><li class="progresssection"><a href="5-tbl.html">tbl</a></li><li class="progresssection"><a href="5-tc.html">tc</a></li><li class="progresssection"><a href="5-dbi.html">dbi</a></li><li class="progresssection"><a href="5-dli.html">dli</a></li><li class="progresssection"><a href="5-dci.html">dci</a></li><li class="progresssection"><a href="5-rls.html">rls</a></li><li class="progresssection"><a href="5-rlb.html">rlb</a></li><li class="progresssection"><a href="5-vrb.html">vrb</a></li><li class="progresssection"><a href="5-prp.html">prp</a></li><li class="progresssection"><a href="5-rlt.html">rlt</a></li><li class="progresscurrent">lp</li><li class="progresssection"><a href="5-kc.html">kc</a></li><li class="progresssection"><a href="5-ki.html">ki</a></li><li class="progresssection"><a href="5-act2.html">act2</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresschapter"><a href="7-cg.html">7</a></li><li class="progressnext"><a href="5-kc.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
|
|
@ -69,6 +69,7 @@ which use this module:
|
|||
<span class="definition-keyword">enum</span> <span class="constant-syntax">VARIABLE_CREATIONS_DA</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">TABLES_DA</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">UNICODE_DATA_MREASON</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">LITERAL_PATTERN_MREASON</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *, </span><span class="identifier-syntax">Instances::log</span><span class="plain-syntax">)</span>
|
||||
|
@ -86,6 +87,7 @@ which use this module:
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Log::declare_aspect</span><span class="plain-syntax">(</span><span class="constant-syntax">VARIABLE_CREATIONS_DA</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"variable creations"</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Log::declare_aspect</span><span class="plain-syntax">(</span><span class="constant-syntax">TABLES_DA</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"table construction"</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Memory::reason_name</span><span class="plain-syntax">(</span><span class="constant-syntax">UNICODE_DATA_MREASON</span><span class="plain-syntax">, </span><span class="string-syntax">"Unicode data"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Memory::reason_name</span><span class="plain-syntax">(</span><span class="constant-syntax">LITERAL_PATTERN_MREASON</span><span class="plain-syntax">, </span><span class="string-syntax">"Literal pattern storage"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'O'</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::log</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'q'</span><span class="plain-syntax">, </span><span class="identifier-syntax">Equations::log</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'Z'</span><span class="plain-syntax">, </span><span class="identifier-syntax">NonlocalVariables::log</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -234,7 +234,7 @@ perhaps 24000, and the following turns that into an rvalue:
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_encoded_notation</span><button class="popup" onclick="togglePopup('usagePopup20')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup20">Usage of <span class="code-font"><span class="function-syntax">Rvalues::from_encoded_notation</span></span>:<br/>Literal Patterns - <a href="3-lp.html#SP32">§32</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">encoded_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_encoded_notation</span><button class="popup" onclick="togglePopup('usagePopup20')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup20">Usage of <span class="code-font"><span class="function-syntax">Rvalues::from_encoded_notation</span></span>:<br/>Literal Patterns - <a href="3-lp.html#SP35">§35</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">encoded_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::new_with_words</span><span class="plain-syntax">(</span><span class="identifier-syntax">CONSTANT_NT</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_kind_of_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::write_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">explicit_literal_ANNOT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
|
@ -242,7 +242,7 @@ perhaps 24000, and the following turns that into an rvalue:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">spec</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rvalues::to_encoded_notation</span><button class="popup" onclick="togglePopup('usagePopup21')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup21">Usage of <span class="code-font"><span class="function-syntax">Rvalues::to_encoded_notation</span></span>:<br/><a href="2-rvl.html#SP22">§22</a><br/>Literal Patterns - <a href="3-lp.html#SP25_2">§25.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rvalues::to_encoded_notation</span><button class="popup" onclick="togglePopup('usagePopup21')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup21">Usage of <span class="code-font"><span class="function-syntax">Rvalues::to_encoded_notation</span></span>:<br/><a href="2-rvl.html#SP22">§22</a><br/>Literal Patterns - <a href="3-lp.html#SP26_2">§26.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">explicit_literal_ANNOT</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">constant_number_ANNOT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
|
@ -442,7 +442,7 @@ in the proposition.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rvalues::is_CONSTANT_of_kind</span><button class="popup" onclick="togglePopup('usagePopup34')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup34">Usage of <span class="code-font"><span class="function-syntax">Rvalues::is_CONSTANT_of_kind</span></span>:<br/><a href="2-rvl.html#SP3">§3</a>, <a href="2-rvl.html#SP11">§11</a>, <a href="2-rvl.html#SP12">§12</a>, <a href="2-rvl.html#SP13">§13</a>, <a href="2-rvl.html#SP14">§14</a><br/>Literal Patterns - <a href="3-lp.html#SP25_2">§25.2</a><br/>Enter the S-Parser - <a href="4-ets.html#SP11">§11</a><br/>Constants and Descriptions - <a href="4-cad.html#SP3">§3</a>, <a href="4-cad.html#SP5">§5</a><br/>Type Expressions and Values - <a href="4-teav.html#SP11_2">§11.2</a><br/>Conditions and Phrases - <a href="4-cap.html#SP10_1">§10.1</a><br/>Dash - <a href="5-dsh.html#SP16">§16</a>, <a href="5-dsh.html#SP18_5_2">§18.5.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rvalues::is_CONSTANT_of_kind</span><button class="popup" onclick="togglePopup('usagePopup34')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup34">Usage of <span class="code-font"><span class="function-syntax">Rvalues::is_CONSTANT_of_kind</span></span>:<br/><a href="2-rvl.html#SP3">§3</a>, <a href="2-rvl.html#SP11">§11</a>, <a href="2-rvl.html#SP12">§12</a>, <a href="2-rvl.html#SP13">§13</a>, <a href="2-rvl.html#SP14">§14</a><br/>Literal Patterns - <a href="3-lp.html#SP26_2">§26.2</a><br/>Enter the S-Parser - <a href="4-ets.html#SP11">§11</a><br/>Constants and Descriptions - <a href="4-cad.html#SP3">§3</a>, <a href="4-cad.html#SP5">§5</a><br/>Type Expressions and Values - <a href="4-teav.html#SP11_2">§11.2</a><br/>Conditions and Phrases - <a href="4-cap.html#SP10_1">§10.1</a><br/>Dash - <a href="5-dsh.html#SP16">§16</a>, <a href="5-dsh.html#SP18_5_2">§18.5.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Node::is</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">CONSTANT_NT</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_kind_of_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">), </span><span class="identifier-syntax">K</span><span class="plain-syntax">)))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
|
@ -560,7 +560,7 @@ doesn't need to be especially rapid.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_kind</span><button class="popup" onclick="togglePopup('usagePopup37')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup37">Usage of <span class="code-font"><span class="function-syntax">Rvalues::to_kind</span></span>:<br/>Specifications - <a href="2-spc.html#SP1">§1</a><br/>Lvalues - <a href="2-lvl.html#SP12">§12</a><br/>Literal Patterns - <a href="3-lp.html#SP25_3">§25.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_kind</span><button class="popup" onclick="togglePopup('usagePopup37')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup37">Usage of <span class="code-font"><span class="function-syntax">Rvalues::to_kind</span></span>:<br/>Specifications - <a href="2-spc.html#SP1">§1</a><br/>Lvalues - <a href="2-lvl.html#SP12">§12</a><br/>Literal Patterns - <a href="3-lp.html#SP26_3">§26.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"Rvalues::to_kind on NULL"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CONSTANT_NT:</span>
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -194,7 +194,7 @@ misses out.
|
|||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">LiteralReals::ismultiplicationsign</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">LiteralReals::ismultiplicationsign</span></span>:<br/><a href="3-lrn.html#SP1_4">§1.4</a><br/>Literal Patterns - <a href="3-lp.html#SP16_1_3_2">§16.1.3.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">LiteralReals::ismultiplicationsign</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">LiteralReals::ismultiplicationsign</span></span>:<br/><a href="3-lrn.html#SP1_4">§1.4</a><br/>Literal Patterns - <a href="3-lp.html#SP17_1_3_2">§17.1.3.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="character-syntax">'x'</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="character-syntax">'*'</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -211,7 +211,7 @@ a zero value. If any of the inputs are NaN, this returns NaN.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">LiteralReals::construct_float</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">LiteralReals::construct_float</span></span>:<br/><a href="3-lrn.html#SP1">§1</a><br/>Literal Patterns - <a href="3-lp.html#SP16_1_3_2">§16.1.3.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">signbit</span><span class="plain-syntax">, </span><span class="reserved-syntax">double</span><span class="plain-syntax"> </span><span class="identifier-syntax">intv</span><span class="plain-syntax">, </span><span class="reserved-syntax">double</span><span class="plain-syntax"> </span><span class="identifier-syntax">fracv</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">expo</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">LiteralReals::construct_float</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">LiteralReals::construct_float</span></span>:<br/><a href="3-lrn.html#SP1">§1</a><br/>Literal Patterns - <a href="3-lp.html#SP17_1_3_2">§17.1.3.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">signbit</span><span class="plain-syntax">, </span><span class="reserved-syntax">double</span><span class="plain-syntax"> </span><span class="identifier-syntax">intv</span><span class="plain-syntax">, </span><span class="reserved-syntax">double</span><span class="plain-syntax"> </span><span class="identifier-syntax">fracv</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">expo</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">double</span><span class="plain-syntax"> </span><span class="identifier-syntax">absval</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">intv</span><span class="plain-syntax"> + </span><span class="identifier-syntax">fracv</span><span class="plain-syntax">) * </span><a href="3-lrn.html#SP4" class="function-link"><span class="function-syntax">LiteralReals::ten_to_the</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">expo</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">sign</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">signbit</span><span class="plain-syntax"> ? ((</span><span class="reserved-syntax">int</span><span class="plain-syntax">) </span><span class="constant-syntax">0x80000000</span><span class="plain-syntax">) : </span><span class="constant-syntax">0x0</span><span class="plain-syntax">);</span>
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
Size of lexicon: 3163 excerpt meanings
|
||||
Stored among 856 words out of total vocabulary of 10784
|
||||
720 words have a start list: longest belongs to report (with 293 meanings)
|
||||
21 words have an end list: longest belongs to digit (with 7 meanings)
|
||||
21 words have an end list: longest belongs to digits (with 7 meanings)
|
||||
29 words have a middle list: longest belongs to to (with 4 meanings)
|
||||
108 words have a subset list: longest belongs to street (with 4 meanings)
|
||||
|
||||
|
|
|
@ -6488,6 +6488,10 @@
|
|||
constraint DS = {11, 13} extremes [3, 4]
|
||||
<cardinal-number> digit/digits
|
||||
constraint DS = {13} extremes [2, 2]
|
||||
digits {<quoted-text>}
|
||||
constraint DS = {13} extremes [2, 2]
|
||||
values {<quoted-text>}
|
||||
constraint DS = {13} extremes [2, 2]
|
||||
{......}
|
||||
constraint (none) extremes [1, infinity)
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
Total memory consumption was 138261K = 135 MB
|
||||
Total memory consumption was 138263K = 135 MB
|
||||
|
||||
---- was used for 2115191 objects, in 374469 frames in 0 x 800K = 0K = 0 MB:
|
||||
---- was used for 2115201 objects, in 374479 frames in 0 x 800K = 0K = 0 MB:
|
||||
|
||||
30.5% inter_tree_node_array 60 x 8192 = 491520 objects, 43255680 bytes
|
||||
19.1% text_stream_array 4813 x 100 = 481300 objects, 27106816 bytes
|
||||
|
@ -28,8 +28,8 @@ Total memory consumption was 138261K = 135 MB
|
|||
0.7% adjective_meaning 208 objects, 1030016 bytes
|
||||
0.7% inter_schema_node 9070 objects, 1015840 bytes
|
||||
0.6% excerpt_meaning 3163 objects, 986856 bytes
|
||||
0.6% production 3998 objects, 927536 bytes
|
||||
0.6% ptoken 8693 objects, 904072 bytes
|
||||
0.6% production 4000 objects, 928000 bytes
|
||||
0.6% ptoken 8697 objects, 904488 bytes
|
||||
0.6% grammatical_usage 3649 objects, 875760 bytes
|
||||
0.6% individual_form 2582 objects, 867552 bytes
|
||||
0.4% unary_predicate_array 17 x 1000 = 17000 objects, 680544 bytes
|
||||
|
@ -44,7 +44,7 @@ Total memory consumption was 138261K = 135 MB
|
|||
0.1% inter_annotation_array 2 x 8192 = 16384 objects, 262208 bytes
|
||||
0.1% vanilla_function 3807 objects, 243648 bytes
|
||||
0.1% binary_predicate 330 objects, 174240 bytes
|
||||
0.1% hierarchy_location 1188 objects, 171072 bytes
|
||||
0.1% hierarchy_location 1189 objects, 171216 bytes
|
||||
0.1% linguistic_stock_item 3339 objects, 160272 bytes
|
||||
0.1% rule_family_data 404 objects, 148672 bytes
|
||||
0.1% nonterminal 779 objects, 143336 bytes
|
||||
|
@ -56,7 +56,7 @@ Total memory consumption was 138261K = 135 MB
|
|||
---- imperative_defn 1415 objects, 101880 bytes
|
||||
---- noun_usage 2420 objects, 96800 bytes
|
||||
---- anl_entry_array 2 x 1000 = 2000 objects, 96064 bytes
|
||||
---- inter_tree 7 objects, 95760 bytes
|
||||
---- inter_tree 7 objects, 95872 bytes
|
||||
---- preposition 274 objects, 87680 bytes
|
||||
---- lexical_cluster 2536 objects, 81152 bytes
|
||||
---- kind_variable_declaration 1656 objects, 79488 bytes
|
||||
|
@ -81,8 +81,8 @@ Total memory consumption was 138261K = 135 MB
|
|||
---- heading 212 objects, 47488 bytes
|
||||
---- text_substitution 438 objects, 42048 bytes
|
||||
---- to_family_data 525 objects, 42000 bytes
|
||||
---- activity_list_array 1 x 1000 objects, 40032 bytes
|
||||
---- anl_clause_array 1 x 1000 objects, 40032 bytes
|
||||
---- activity_list_array 1 x 1000 objects, 40032 bytes
|
||||
---- shared_variable_access_list_array 12 x 100 = 1200 objects, 38784 bytes
|
||||
---- parsing_data 677 objects, 37912 bytes
|
||||
---- production_list 633 objects, 35448 bytes
|
||||
|
@ -127,7 +127,7 @@ Total memory consumption was 138261K = 135 MB
|
|||
---- determiner 22 objects, 7216 bytes
|
||||
---- inbuild_copy 59 objects, 7080 bytes
|
||||
---- verb 109 objects, 6976 bytes
|
||||
---- hierarchy_attachment_point 77 objects, 6776 bytes
|
||||
---- hierarchy_attachment_point 78 objects, 6864 bytes
|
||||
---- text_literal_holder 164 objects, 6560 bytes
|
||||
---- inbuild_edition 85 objects, 6120 bytes
|
||||
---- section_md 62 objects, 5952 bytes
|
||||
|
@ -143,7 +143,7 @@ Total memory consumption was 138261K = 135 MB
|
|||
---- semver_range 42 objects, 4368 bytes
|
||||
---- use_option 32 objects, 4352 bytes
|
||||
---- either_or_property_data 62 objects, 3968 bytes
|
||||
---- parse_node_annotation_type 121 objects, 3872 bytes
|
||||
---- parse_node_annotation_type 123 objects, 3936 bytes
|
||||
---- method_set 108 objects, 3456 bytes
|
||||
---- definition 48 objects, 3456 bytes
|
||||
---- property_setting_bp_data 86 objects, 3440 bytes
|
||||
|
@ -192,10 +192,10 @@ Total memory consumption was 138261K = 135 MB
|
|||
---- implication 13 objects, 624 bytes
|
||||
---- chapter_md 7 objects, 616 bytes
|
||||
---- code_generation 1 object, 576 bytes
|
||||
---- inter_warehouse_room 10 objects, 560 bytes
|
||||
---- module 7 objects, 560 bytes
|
||||
---- generated_segment 14 objects, 560 bytes
|
||||
---- inter_annotation_form 14 objects, 560 bytes
|
||||
---- inter_warehouse_room 10 objects, 560 bytes
|
||||
---- generated_segment 14 objects, 560 bytes
|
||||
---- rulebook_outcome 17 objects, 544 bytes
|
||||
---- small_word_set 11 objects, 528 bytes
|
||||
---- i6_memory_setting 15 objects, 480 bytes
|
||||
|
@ -205,23 +205,23 @@ Total memory consumption was 138261K = 135 MB
|
|||
---- inference_family 11 objects, 440 bytes
|
||||
---- article_usage 8 objects, 384 bytes
|
||||
---- source_file 5 objects, 360 bytes
|
||||
---- tree_inventory 1 object, 320 bytes
|
||||
---- grammatical_category 8 objects, 320 bytes
|
||||
---- pronoun 8 objects, 320 bytes
|
||||
---- door_dir_notice 5 objects, 320 bytes
|
||||
---- pronoun 8 objects, 320 bytes
|
||||
---- tree_inventory 1 object, 320 bytes
|
||||
---- cached_kind_declaration 8 objects, 320 bytes
|
||||
---- module_request 8 objects, 320 bytes
|
||||
---- grammatical_category 8 objects, 320 bytes
|
||||
---- inter_pipeline 1 object, 312 bytes
|
||||
---- up_family 9 objects, 288 bytes
|
||||
---- compilation_unit 5 objects, 280 bytes
|
||||
---- door_to_notice 5 objects, 280 bytes
|
||||
---- explicit_bp_data 5 objects, 280 bytes
|
||||
---- contents_entry 7 objects, 280 bytes
|
||||
---- kit_dependency 5 objects, 240 bytes
|
||||
---- compilation_unit 5 objects, 280 bytes
|
||||
---- verb_usage_tier 5 objects, 240 bytes
|
||||
---- kit_dependency 5 objects, 240 bytes
|
||||
---- inform_project 1 object, 232 bytes
|
||||
---- adjective_meaning_family 7 objects, 224 bytes
|
||||
---- local_block_value 4 objects, 224 bytes
|
||||
---- adjective_meaning_family 7 objects, 224 bytes
|
||||
---- test_scenario 1 object, 216 bytes
|
||||
---- release_instructions 1 object, 208 bytes
|
||||
---- attachment_instruction 5 objects, 200 bytes
|
||||
|
@ -229,29 +229,29 @@ Total memory consumption was 138261K = 135 MB
|
|||
---- code_generator 5 objects, 200 bytes
|
||||
---- plural_dictionary_entry 4 objects, 192 bytes
|
||||
---- element_activation 6 objects, 192 bytes
|
||||
---- imperative_defn_family 4 objects, 160 bytes
|
||||
---- inter_architecture 4 objects, 160 bytes
|
||||
---- inference_subject_family 5 objects, 160 bytes
|
||||
---- imperative_defn_family 4 objects, 160 bytes
|
||||
---- inbuild_nest 3 objects, 120 bytes
|
||||
---- inform_language 1 object, 104 bytes
|
||||
---- group_together_function 2 objects, 80 bytes
|
||||
---- article 2 objects, 80 bytes
|
||||
---- group_together_function 2 objects, 80 bytes
|
||||
---- compile_task_data 1 object, 80 bytes
|
||||
---- inter_warehouse 1 object, 56 bytes
|
||||
---- build_methodology 1 object, 56 bytes
|
||||
---- figures_data 1 object, 56 bytes
|
||||
---- star_invention 1 object, 48 bytes
|
||||
---- build_methodology 1 object, 56 bytes
|
||||
---- inform_kit_ittt 1 object, 48 bytes
|
||||
---- HTML_file_state 1 object, 48 bytes
|
||||
---- star_invention 1 object, 48 bytes
|
||||
---- loop_over_scope 1 object, 40 bytes
|
||||
---- target_pragma_setting 1 object, 40 bytes
|
||||
---- by_function_bp_data 1 object, 40 bytes
|
||||
---- kind_template_definition 1 object, 40 bytes
|
||||
---- I6_generation_data 1 object, 40 bytes
|
||||
---- kind_template_definition 1 object, 40 bytes
|
||||
---- by_function_bp_data 1 object, 40 bytes
|
||||
|
||||
99.9% was used for memory not allocated for objects:
|
||||
100.0% was used for memory not allocated for objects:
|
||||
|
||||
62.0% text stream storage 87819516 bytes in 501564 claims
|
||||
62.0% text stream storage 87820684 bytes in 501576 claims
|
||||
3.7% dictionary storage 5378048 bytes in 7752 claims
|
||||
---- sorting 2616 bytes in 531 claims
|
||||
5.0% source text 7200000 bytes in 3 claims
|
||||
|
@ -269,5 +269,5 @@ Total memory consumption was 138261K = 135 MB
|
|||
---- code generation workspace for objects 3488 bytes in 19 claims
|
||||
0.1% emitter array storage 281184 bytes in 2006 claims
|
||||
|
||||
-137.-4% was overhead - -194581720 bytes = -190021K = -185 MB
|
||||
-137.-4% was overhead - -194583008 bytes = -190022K = -185 MB
|
||||
|
||||
|
|
|
@ -1,29 +1,29 @@
|
|||
100.0% in inform7 run
|
||||
67.9% in compilation to Inter
|
||||
45.0% in //Sequence::undertake_queued_tasks//
|
||||
4.9% in //MajorNodes::pre_pass//
|
||||
67.5% in compilation to Inter
|
||||
44.7% in //Sequence::undertake_queued_tasks//
|
||||
5.0% in //MajorNodes::pre_pass//
|
||||
3.4% in //MajorNodes::pass_1//
|
||||
1.9% in //ImperativeDefinitions::assess_all//
|
||||
1.9% in //RTPhrasebook::compile_entries//
|
||||
1.5% in //RTKindConstructors::compile//
|
||||
1.1% in //Sequence::lint_inter//
|
||||
0.7% in //Sequence::undertake_queued_tasks//
|
||||
0.3% in //CompletionModule::compile//
|
||||
0.3% in //ImperativeDefinitions::compile_first_block//
|
||||
0.3% in //InferenceSubjects::emit_all//
|
||||
0.3% in //MajorNodes::pass_2//
|
||||
0.3% in //Sequence::undertake_queued_tasks//
|
||||
0.3% in //Sequence::undertake_queued_tasks//
|
||||
0.3% in //World::stage_V//
|
||||
5.0% not specifically accounted for
|
||||
28.2% in running Inter pipeline
|
||||
9.5% in step 14/15: generate inform6 -> auto.inf
|
||||
7.2% in step 5/15: load-binary-kits
|
||||
6.1% in step 6/15: make-synoptic-module
|
||||
28.1% in running Inter pipeline
|
||||
9.6% in step 14/15: generate inform6 -> auto.inf
|
||||
6.9% in step 5/15: load-binary-kits
|
||||
5.7% in step 6/15: make-synoptic-module
|
||||
1.9% in step 9/15: make-identifiers-unique
|
||||
0.3% in step 12/15: eliminate-redundant-operations
|
||||
0.3% in step 4/15: compile-splats
|
||||
0.3% in step 7/15: shorten-wiring
|
||||
0.3% in step 8/15: detect-indirect-calls
|
||||
1.9% not specifically accounted for
|
||||
2.3% not specifically accounted for
|
||||
3.4% in supervisor
|
||||
0.4% not specifically accounted for
|
||||
0.8% not specifically accounted for
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"is": {
|
||||
"type": "kit",
|
||||
"title": "Architecture16Kit",
|
||||
"version": "10.2.0-beta+6W81"
|
||||
"version": "10.2.0-beta+6W82"
|
||||
},
|
||||
"compatibility": "16-bit",
|
||||
"kit-details": {
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"is": {
|
||||
"type": "kit",
|
||||
"title": "Architecture32Kit",
|
||||
"version": "10.2.0-beta+6W81"
|
||||
"version": "10.2.0-beta+6W82"
|
||||
},
|
||||
"compatibility": "32-bit",
|
||||
"kit-details": {
|
||||
|
|
|
@ -273,11 +273,11 @@ For example, -1 prints as FFFFFFFF in hex, either -1 or 4294967285 in decimal,
|
|||
in base 3 and 1Z141Y3 in base 36.
|
||||
|
||||
=
|
||||
[ PrintInBase n base digits a digit_count j k d;
|
||||
[ PrintInBase n base digits digitset a digit_count j k d;
|
||||
if ((base < 2) || (base > 36)) { print "(", n, " in base ", base, ")"; return; }
|
||||
if (digits < 1) digits = 0;
|
||||
if (digits > 100) digits = 100;
|
||||
if ((base == 10) && (digits == 0)) { print n; return; }
|
||||
if ((base == 10) && (digits == 0) && (digitset == 0)) { print n; return; }
|
||||
if (n == 0) {
|
||||
digit_count = 1;
|
||||
} else {
|
||||
|
@ -288,11 +288,18 @@ in base 3 and 1Z141Y3 in base 36.
|
|||
digit_count++;
|
||||
} until (a == 0);
|
||||
}
|
||||
for (j = digits: j > digit_count: j--) print "0";
|
||||
for (j = digits: j > digit_count: j--) {
|
||||
if (digitset) digitset(0);
|
||||
else print "0";
|
||||
}
|
||||
for (j = digit_count: j >= 1: j--) {
|
||||
a = n; for (k = 1: k < j: k++) a = DropDigit(a, base);
|
||||
d = LeastDigit(a, base);
|
||||
if (d < 10) print d; else print (char) 'A' + d - 10;
|
||||
if (digitset) digitset(d);
|
||||
else {
|
||||
if (d < 10) print d;
|
||||
else print (char) 'A' + d - 10;
|
||||
}
|
||||
}
|
||||
];
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"is": {
|
||||
"type": "kit",
|
||||
"title": "BasicInformKit",
|
||||
"version": "10.2.0-beta+6W81"
|
||||
"version": "10.2.0-beta+6W82"
|
||||
},
|
||||
"needs": [ {
|
||||
"need": {
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"is": {
|
||||
"type": "kit",
|
||||
"title": "CommandParserKit",
|
||||
"version": "10.2.0-beta+6W81"
|
||||
"version": "10.2.0-beta+6W82"
|
||||
},
|
||||
"needs": [ {
|
||||
"need": {
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"is": {
|
||||
"type": "kit",
|
||||
"title": "EnglishLanguageKit",
|
||||
"version": "10.2.0-beta+6W81"
|
||||
"version": "10.2.0-beta+6W82"
|
||||
},
|
||||
"needs": [ {
|
||||
"need": {
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"is": {
|
||||
"type": "kit",
|
||||
"title": "WorldModelKit",
|
||||
"version": "10.2.0-beta+6W81"
|
||||
"version": "10.2.0-beta+6W82"
|
||||
},
|
||||
"needs": [ {
|
||||
"need": {
|
||||
|
|
|
@ -284,7 +284,7 @@ by a bracketed list of up to three options in any order.
|
|||
<lp-part> ==> { 0, RP[1] }
|
||||
|
||||
<lp-part> ::=
|
||||
<np-unparsed-bal> ( <lp-part-option-list> ) | ==> { 0, LPRequests::mark(RP[1], R[2], <<min_part_val>>, <<max_part_val>>) }
|
||||
<np-unparsed-bal> ( <lp-part-option-list> ) | ==> { 0, LPRequests::mark(RP[1], R[2], <<min_part_val>>, <<max_part_val>>, <<digits_wd_val>>, <<values_wd_val>>) }
|
||||
<np-unparsed-bal> ==> { 0, RP[1] }
|
||||
|
||||
<lp-part-option-list> ::=
|
||||
|
@ -306,6 +306,8 @@ by a bracketed list of up to three options in any order.
|
|||
up to <cardinal-number> digit/digits | ==> @<Apply max digit count@>;
|
||||
<cardinal-number> <number-base> digit/digits | ==> @<Apply based digit count@>;
|
||||
<cardinal-number> digit/digits | ==> @<Apply digit count@>;
|
||||
digits { <quoted-text> } | ==> <<digits_wd_val>> = Wordings::first_wn(WR[1]); @<Apply digits text@>;
|
||||
values { <quoted-text> } | ==> <<values_wd_val>> = Wordings::first_wn(WR[1]); @<Apply values text@>;
|
||||
...... ==> @<Issue PM_BadLPPartOption problem@>
|
||||
|
||||
@<Apply range@> =
|
||||
|
@ -343,6 +345,12 @@ by a bracketed list of up to three options in any order.
|
|||
"for obvious reasons.");
|
||||
==> { MAX_DIGITS_LSO*R[1] + MIN_DIGITS_LSO*R[1] + BASE_LSO*R[2] + WITH_LEADING_ZEROS_LSO, - };
|
||||
|
||||
@<Apply digits text@> =
|
||||
==> { DIGITS_TEXT_LSO, - };
|
||||
|
||||
@<Apply values text@> =
|
||||
==> { VALUES_TEXT_LSO, - };
|
||||
|
||||
@<Issue PM_BadLPPartOption problem@> =
|
||||
if (preform_lookahead_mode == FALSE) {
|
||||
Problems::quote_source(1, current_sentence);
|
||||
|
@ -371,6 +379,8 @@ literal_pattern_name *LPRequests::compose(literal_pattern_name *A, literal_patte
|
|||
@d WITHOUT_LEADING_ZEROS_LSO 0x00000008
|
||||
@d MAXIMUM_LSO 0x00000010
|
||||
@d MINIMUM_LSO 0x00000020
|
||||
@d DIGITS_TEXT_LSO 0x00000040
|
||||
@d VALUES_TEXT_LSO 0x00000080
|
||||
@d BASE_LSO 0x00000100
|
||||
@d BASE_MASK_LSO 0x0000ff00
|
||||
@d MIN_DIGITS_LSO 0x00010000
|
||||
|
@ -379,11 +389,13 @@ literal_pattern_name *LPRequests::compose(literal_pattern_name *A, literal_patte
|
|||
@d MAX_DIGITS_MASK_LSO 0x7f000000
|
||||
|
||||
=
|
||||
parse_node *LPRequests::mark(parse_node *A, int N, int MI, int MA) {
|
||||
parse_node *LPRequests::mark(parse_node *A, int N, int MI, int MA, int DT, int VT) {
|
||||
if (A) {
|
||||
Annotations::write_int(A, lpe_options_ANNOT, N);
|
||||
if (N & MINIMUM_LSO) Annotations::write_int(A, lpe_min_ANNOT, MI);
|
||||
if (N & MAXIMUM_LSO) Annotations::write_int(A, lpe_max_ANNOT, MA);
|
||||
if (N & DIGITS_TEXT_LSO) Annotations::write_int(A, lpe_digits_ANNOT, DT);
|
||||
if (N & VALUES_TEXT_LSO) Annotations::write_int(A, lpe_values_ANNOT, VT);
|
||||
}
|
||||
return A;
|
||||
}
|
||||
|
|
|
@ -99,6 +99,8 @@ DECLARE_CLASS(use_option)
|
|||
@e literal_list_CLASS
|
||||
@e literal_pattern_CLASS
|
||||
@e literal_pattern_name_CLASS
|
||||
@e literal_pattern_element_value_set_CLASS
|
||||
@e literal_pattern_element_value_pair_CLASS
|
||||
@e llist_entry_CLASS
|
||||
@e nonlocal_variable_CLASS
|
||||
@e response_message_CLASS
|
||||
|
@ -114,6 +116,8 @@ DECLARE_CLASS(inv_token_problem_token)
|
|||
DECLARE_CLASS(literal_list)
|
||||
DECLARE_CLASS(literal_pattern)
|
||||
DECLARE_CLASS(literal_pattern_name)
|
||||
DECLARE_CLASS(literal_pattern_element_value_set)
|
||||
DECLARE_CLASS(literal_pattern_element_value_pair)
|
||||
DECLARE_CLASS(llist_entry)
|
||||
DECLARE_CLASS(nonlocal_variable)
|
||||
DECLARE_CLASS(response_message)
|
||||
|
|
|
@ -418,6 +418,8 @@ void CoreSyntax::grant_L2_permissions(void) {
|
|||
@e lpe_options_ANNOT /* |int|: options set for a literal pattern part */
|
||||
@e lpe_min_ANNOT /* |int|: value offset for a literal pattern part */
|
||||
@e lpe_max_ANNOT /* |int|: maximum value for a literal pattern part */
|
||||
@e lpe_digits_ANNOT /* |int|: word number of digits text for a literal pattern part */
|
||||
@e lpe_values_ANNOT /* |int|: word number of values text for a literal pattern part */
|
||||
@e multiplicity_ANNOT /* |int|: e.g., 5 for "five gold rings" */
|
||||
@e new_relation_here_ANNOT /* |binary_predicate|: new relation as subject of "relates" sentence */
|
||||
@e nowhere_ANNOT /* |int|: used by the spatial feature to show this represents "nowhere" */
|
||||
|
@ -469,6 +471,10 @@ void CoreSyntax::declare_L3_annotations(void) {
|
|||
lpe_max_ANNOT, CoreSyntax::write_lpe_max_ANNOT);
|
||||
Annotations::declare_type(
|
||||
lpe_min_ANNOT, CoreSyntax::write_lpe_min_ANNOT);
|
||||
Annotations::declare_type(
|
||||
lpe_digits_ANNOT, CoreSyntax::write_lpe_digits_ANNOT);
|
||||
Annotations::declare_type(
|
||||
lpe_values_ANNOT, CoreSyntax::write_lpe_values_ANNOT);
|
||||
Annotations::declare_type(
|
||||
multiplicity_ANNOT, CoreSyntax::write_multiplicity_ANNOT);
|
||||
Annotations::declare_type(
|
||||
|
@ -527,6 +533,12 @@ void CoreSyntax::write_lpe_max_ANNOT(text_stream *OUT, parse_node *p) {
|
|||
void CoreSyntax::write_lpe_min_ANNOT(text_stream *OUT, parse_node *p) {
|
||||
WRITE(" {lpe offset: %d}", Annotations::read_int(p, lpe_min_ANNOT));
|
||||
}
|
||||
void CoreSyntax::write_lpe_digits_ANNOT(text_stream *OUT, parse_node *p) {
|
||||
WRITE(" {lpe digits: %W}", Wordings::one_word(Annotations::read_int(p, lpe_digits_ANNOT)));
|
||||
}
|
||||
void CoreSyntax::write_lpe_values_ANNOT(text_stream *OUT, parse_node *p) {
|
||||
WRITE(" {lpe values: %W}", Wordings::one_word(Annotations::read_int(p, lpe_values_ANNOT)));
|
||||
}
|
||||
void CoreSyntax::write_multiplicity_ANNOT(text_stream *OUT, parse_node *p) {
|
||||
if (Annotations::read_int(p, multiplicity_ANNOT))
|
||||
WRITE(" {multiplicity %d}", Annotations::read_int(p, multiplicity_ANNOT));
|
||||
|
@ -604,6 +616,8 @@ void CoreSyntax::grant_L3_permissions(void) {
|
|||
Annotations::allow(PROPER_NOUN_NT, lpe_options_ANNOT);
|
||||
Annotations::allow(PROPER_NOUN_NT, lpe_max_ANNOT);
|
||||
Annotations::allow(PROPER_NOUN_NT, lpe_min_ANNOT);
|
||||
Annotations::allow(PROPER_NOUN_NT, lpe_digits_ANNOT);
|
||||
Annotations::allow(PROPER_NOUN_NT, lpe_values_ANNOT);
|
||||
Annotations::allow(PROPER_NOUN_NT, multiplicity_ANNOT);
|
||||
Annotations::allow(UNPARSED_NOUN_NT, new_relation_here_ANNOT);
|
||||
Annotations::allow(PROPER_NOUN_NT, new_relation_here_ANNOT);
|
||||
|
|
|
@ -31,8 +31,10 @@ void RuntimeModule::end(void) {
|
|||
@
|
||||
|
||||
@e contents_entry_CLASS
|
||||
@e digit_manager_CLASS
|
||||
@e mapping_hint_CLASS
|
||||
|
||||
=
|
||||
DECLARE_CLASS(contents_entry)
|
||||
DECLARE_CLASS(digit_manager)
|
||||
DECLARE_CLASS(mapping_hint)
|
||||
|
|
|
@ -1931,6 +1931,8 @@ void Hierarchy::establish(void) {
|
|||
@e GROUP_TOGETHER_FN_HL
|
||||
@e LOOPS_OVER_SCOPE_HAP
|
||||
@e LOOP_OVER_SCOPE_FN_HL
|
||||
@e DIGIT_MANAGERS_HAP
|
||||
@e DIGIT_MANAGER_HL
|
||||
|
||||
@<Establish enclosed matter@> =
|
||||
H_BEGIN(LocationRequirements::any_enclosure())
|
||||
|
@ -1957,6 +1959,9 @@ void Hierarchy::establish(void) {
|
|||
H_F_G(LOOP_OVER_SCOPE_FN_HL, I"loop_over_scope_fn", I"LOS")
|
||||
H_END
|
||||
H_C_U(RTP_HL, I"rtp")
|
||||
H_BEGIN_AP(DIGIT_MANAGERS_HAP, I"digit_manager", I"_digit_manager")
|
||||
H_C_U(DIGIT_MANAGER_HL, I"dm")
|
||||
H_END
|
||||
H_END
|
||||
|
||||
@
|
||||
|
|
|
@ -165,16 +165,7 @@ void RTLiteralPatterns::compilation_agent(compilation_subtask *t) {
|
|||
EmitCode::up();
|
||||
}
|
||||
@<Print leading zeros@>;
|
||||
if (lpe->number_base != 10) {
|
||||
EmitCode::call(Hierarchy::find(PRINTINBASE_HL));
|
||||
} else {
|
||||
EmitCode::inv(PRINTNUMBER_BIP);
|
||||
}
|
||||
EmitCode::down();
|
||||
@<Evaluate LPE value to be printed@>;
|
||||
if (lpe->number_base != 10)
|
||||
EmitCode::val_number((inter_ti) (lpe->number_base));
|
||||
EmitCode::up();
|
||||
@<Print the value itself@>;
|
||||
if (lp->number_signed) {
|
||||
EmitCode::inv(IF_BIP);
|
||||
EmitCode::down();
|
||||
|
@ -199,20 +190,36 @@ void RTLiteralPatterns::compilation_agent(compilation_subtask *t) {
|
|||
}
|
||||
} else {
|
||||
@<Print leading zeros@>;
|
||||
if (lpe->number_base != 10) {
|
||||
EmitCode::call(Hierarchy::find(PRINTINBASE_HL));
|
||||
} else {
|
||||
EmitCode::inv(PRINTNUMBER_BIP);
|
||||
}
|
||||
EmitCode::down();
|
||||
@<Evaluate LPE value to be printed@>;
|
||||
if (lpe->number_base != 10)
|
||||
EmitCode::val_number((inter_ti) (lpe->number_base));
|
||||
EmitCode::up();
|
||||
@<Print the value itself@>;
|
||||
}
|
||||
}
|
||||
ec++;
|
||||
|
||||
@<Print the value itself@> =
|
||||
if (LiteralPatterns::element_value_count(lpe->values) > 0) {
|
||||
EmitCode::call(RTLiteralPatterns::values_iname(lpe->values->source));
|
||||
EmitCode::down();
|
||||
@<Evaluate LPE value to be printed without offset@>;
|
||||
EmitCode::up();
|
||||
} else {
|
||||
if ((lpe->number_base == 10) && (Str::len(lpe->digits_text) == 0)) {
|
||||
EmitCode::inv(PRINTNUMBER_BIP);
|
||||
EmitCode::down();
|
||||
@<Evaluate LPE value to be printed@>;
|
||||
EmitCode::up();
|
||||
} else {
|
||||
EmitCode::call(Hierarchy::find(PRINTINBASE_HL));
|
||||
EmitCode::down();
|
||||
@<Evaluate LPE value to be printed@>;
|
||||
EmitCode::val_number((inter_ti) (lpe->number_base));
|
||||
EmitCode::val_number(0);
|
||||
if (Str::len(lpe->digits_text) > 0)
|
||||
EmitCode::val_iname(K_value,
|
||||
RTLiteralPatterns::digits_iname(lpe->digits_text));
|
||||
EmitCode::up();
|
||||
}
|
||||
}
|
||||
|
||||
@<Print leading zeros@> =
|
||||
if (lpe->print_with_leading_zeros) {
|
||||
int max_printable = lpe->element_range + lpe->element_offset;
|
||||
|
@ -268,6 +275,21 @@ void RTLiteralPatterns::compilation_agent(compilation_subtask *t) {
|
|||
EmitCode::up();
|
||||
}
|
||||
|
||||
@<Evaluate LPE value to be printed without offset@> =
|
||||
if (lpe->element_range >= 0) {
|
||||
EmitCode::inv(MODULO_BIP);
|
||||
EmitCode::down();
|
||||
}
|
||||
EmitCode::inv(DIVIDE_BIP);
|
||||
EmitCode::down();
|
||||
EmitCode::val_symbol(K_value, value_s);
|
||||
EmitCode::val_number((inter_ti) (lpe->element_multiplier));
|
||||
EmitCode::up();
|
||||
if (lpe->element_range >= 0) {
|
||||
EmitCode::val_number((inter_ti) (lpe->element_range));
|
||||
EmitCode::up();
|
||||
}
|
||||
|
||||
@<Truncate the printed form here if subsequent numerical parts are zero@> =
|
||||
if (oc == ec) {
|
||||
literal_pattern_element *lpe = &(lp->lp_elements[ec]);
|
||||
|
@ -1565,3 +1587,106 @@ void RTLiteralPatterns::comment_use_of_lp(literal_pattern *lp) {
|
|||
EmitCode::comment(W);
|
||||
DISCARD_TEXT(W)
|
||||
}
|
||||
|
||||
@ Dealing with non-standard digits.
|
||||
|
||||
@e DIGIT_PRINTER_NSDF from 1
|
||||
@e VALUES_PRINTER_NSDF
|
||||
|
||||
=
|
||||
dictionary *digits_iname_D[4] = { NULL, NULL, NULL, NULL };
|
||||
inter_name *RTLiteralPatterns::digits_iname(text_stream *text) {
|
||||
return RTLiteralPatterns::digits_iname_inner(text, DIGIT_PRINTER_NSDF);
|
||||
}
|
||||
inter_name *RTLiteralPatterns::values_iname(text_stream *text) {
|
||||
return RTLiteralPatterns::digits_iname_inner(text, VALUES_PRINTER_NSDF);
|
||||
}
|
||||
|
||||
typedef struct digit_manager {
|
||||
struct inter_name *function_iname;
|
||||
struct text_stream *text;
|
||||
int category;
|
||||
CLASS_DEFINITION
|
||||
} digit_manager;
|
||||
|
||||
inter_name *RTLiteralPatterns::digits_iname_inner(text_stream *text, int cat) {
|
||||
if (digits_iname_D[cat] == NULL)
|
||||
digits_iname_D[cat] = Dictionaries::new(16, FALSE);
|
||||
dictionary *D = digits_iname_D[cat];
|
||||
if (Dictionaries::find(D, text))
|
||||
return Dictionaries::read_value(D, text);
|
||||
|
||||
package_request *PR = HierarchyLocations::attach_new_package(
|
||||
Emit::tree(), NULL, Emit::current_enclosure(), DIGIT_MANAGERS_HAP);
|
||||
inter_name *iname = Hierarchy::make_iname_in(DIGIT_MANAGER_HL, PR);
|
||||
text_stream *desc = Str::new();
|
||||
WRITE_TO(desc, "digit manager for <%S> cat %d", text, cat);
|
||||
digit_manager *dm = CREATE(digit_manager);
|
||||
dm->function_iname = iname;
|
||||
dm->text = Str::duplicate(text);
|
||||
dm->category = cat;
|
||||
Sequence::queue(&RTLiteralPatterns::dm_agent, STORE_POINTER_digit_manager(dm), desc);
|
||||
|
||||
Dictionaries::create(D, text);
|
||||
Dictionaries::write_value(D, text, iname);
|
||||
return iname;
|
||||
}
|
||||
|
||||
void RTLiteralPatterns::dm_agent(compilation_subtask *t) {
|
||||
digit_manager *dm = RETRIEVE_POINTER_digit_manager(t->data);
|
||||
packaging_state save = Functions::begin(dm->function_iname);
|
||||
inter_symbol *value_s = LocalVariables::new_other_as_symbol(I"value");
|
||||
switch (dm->category) {
|
||||
case DIGIT_PRINTER_NSDF: @<Compile the body of a digit-printer function@>; break;
|
||||
case VALUES_PRINTER_NSDF: @<Compile the body of a value-printer function@>; break;
|
||||
}
|
||||
Functions::end(save);
|
||||
}
|
||||
|
||||
@<Compile the body of a digit-printer function@> =
|
||||
EmitCode::inv(SWITCH_BIP);
|
||||
EmitCode::down();
|
||||
EmitCode::val_symbol(K_value, value_s);
|
||||
EmitCode::code();
|
||||
EmitCode::down();
|
||||
for (int c = 0; c < Str::len(dm->text); c++) {
|
||||
EmitCode::inv(CASE_BIP);
|
||||
EmitCode::down();
|
||||
EmitCode::val_number((inter_ti) c);
|
||||
EmitCode::code();
|
||||
EmitCode::down();
|
||||
EmitCode::inv(PRINTCHAR_BIP);
|
||||
EmitCode::down();
|
||||
EmitCode::val_number((inter_ti) Str::get_at(dm->text, c));
|
||||
EmitCode::up();
|
||||
EmitCode::up();
|
||||
EmitCode::up();
|
||||
}
|
||||
EmitCode::up();
|
||||
EmitCode::up();
|
||||
EmitCode::rtrue();
|
||||
|
||||
@<Compile the body of a value-printer function@> =
|
||||
EmitCode::inv(SWITCH_BIP);
|
||||
EmitCode::down();
|
||||
EmitCode::val_symbol(K_value, value_s);
|
||||
EmitCode::code();
|
||||
EmitCode::down();
|
||||
literal_pattern_element_value_set *set = LiteralPatterns::parse_value_set(dm->text);
|
||||
for (int c = 0; c < LiteralPatterns::element_value_count(set); c++) {
|
||||
EmitCode::inv(CASE_BIP);
|
||||
EmitCode::down();
|
||||
EmitCode::val_number((inter_ti) LiteralPatterns::element_value_equivalent(set, c));
|
||||
EmitCode::code();
|
||||
EmitCode::down();
|
||||
EmitCode::inv(PRINT_BIP);
|
||||
EmitCode::down();
|
||||
EmitCode::val_text(LiteralPatterns::element_value_text(set, c));
|
||||
EmitCode::up();
|
||||
EmitCode::up();
|
||||
EmitCode::up();
|
||||
}
|
||||
EmitCode::up();
|
||||
EmitCode::up();
|
||||
EmitCode::rtrue();
|
||||
|
||||
|
|
|
@ -18,6 +18,7 @@ which use this module:
|
|||
@e VARIABLE_CREATIONS_DA
|
||||
@e TABLES_DA
|
||||
@e UNICODE_DATA_MREASON
|
||||
@e LITERAL_PATTERN_MREASON
|
||||
|
||||
=
|
||||
COMPILE_WRITER(instance *, Instances::log)
|
||||
|
@ -35,6 +36,7 @@ void ValuesModule::start(void) {
|
|||
Log::declare_aspect(VARIABLE_CREATIONS_DA, L"variable creations", FALSE, FALSE);
|
||||
Log::declare_aspect(TABLES_DA, L"table construction", FALSE, FALSE);
|
||||
Memory::reason_name(UNICODE_DATA_MREASON, "Unicode data");
|
||||
Memory::reason_name(LITERAL_PATTERN_MREASON, "Literal pattern storage");
|
||||
REGISTER_WRITER('O', Instances::log);
|
||||
REGISTER_WRITER('q', Equations::log);
|
||||
REGISTER_WRITER('Z', NonlocalVariables::log);
|
||||
|
|
|
@ -123,10 +123,28 @@ typedef struct literal_pattern_element {
|
|||
int min_digits; /* when writing this */
|
||||
int max_digits; /* when writing this */
|
||||
int number_base; /* e.g., 10 for decimal */
|
||||
struct text_stream *digits_text; /* what digit characters to use */
|
||||
struct literal_pattern_element_value_set *values; /* what value texts to use */
|
||||
int element_optional; /* can we truncate the LP here? */
|
||||
int preamble_optional; /* if so, can we lose the preamble as well? */
|
||||
} literal_pattern_element;
|
||||
|
||||
@ This is used for sets of textual equivalents to values.
|
||||
|
||||
=
|
||||
typedef struct literal_pattern_element_value_set {
|
||||
struct text_stream *source;
|
||||
int extent;
|
||||
struct literal_pattern_element_value_pair *values;
|
||||
CLASS_DEFINITION
|
||||
} literal_pattern_element_value_set;
|
||||
|
||||
typedef struct literal_pattern_element_value_pair {
|
||||
int value_equivalent;
|
||||
struct text_stream *text_equivalent;
|
||||
CLASS_DEFINITION
|
||||
} literal_pattern_element_value_pair;
|
||||
|
||||
@ For the sake of printing, we can specify which notation is to be used in
|
||||
printing a value back. For instance,
|
||||
|
||||
|
@ -200,6 +218,8 @@ literal_pattern_element LiteralPatterns::lpe_new(int i, int r, int sgn) {
|
|||
lpe.print_with_leading_zeros = FALSE;
|
||||
lpe.min_digits = 1;
|
||||
lpe.max_digits = 1000000;
|
||||
lpe.digits_text = NULL;
|
||||
lpe.values = NULL;
|
||||
return lpe;
|
||||
}
|
||||
|
||||
|
@ -490,16 +510,19 @@ on unusual platforms.
|
|||
|
||||
@<Match an integer number element token@> =
|
||||
long long int tot = 0, max_32_bit, max_16_bit;
|
||||
int digits_found = 0, point_at = -1;
|
||||
int digits_found = 0, point_at = -1, len = 0;
|
||||
max_16_bit = 32767LL; if (sign_used_at) max_16_bit = 32768LL;
|
||||
max_32_bit = 2147483647LL; if (sign_used_at) max_32_bit = 2147483648LL;
|
||||
while ((digits_found < lpe->max_digits) &&
|
||||
((LiteralPatterns::digit_value(wd[wpos], lpe->number_base) >= 0) ||
|
||||
((LiteralPatterns::digit_value(wd + wpos, lpe->number_base,
|
||||
lpe->digits_text, lpe->values, NULL) >= 0) ||
|
||||
((wd[wpos] == '.') &&
|
||||
(Kinds::Scalings::get_integer_multiplier(lp->scaling) > 1) &&
|
||||
(point_at == -1)))) {
|
||||
if (wd[wpos] == '.') { point_at = digits_found; wpos++; continue; }
|
||||
tot = lpe->number_base*tot + LiteralPatterns::digit_value(wd[wpos++], lpe->number_base);
|
||||
tot = lpe->number_base*tot + LiteralPatterns::digit_value(wd + wpos,
|
||||
lpe->number_base, lpe->digits_text, lpe->values, &len);
|
||||
wpos += len;
|
||||
if (tot > max_16_bit) overflow_16_bit_flag = TRUE;
|
||||
if (tot > max_32_bit) overflow_32_bit_flag = TRUE;
|
||||
digits_found++;
|
||||
|
@ -665,20 +688,54 @@ which is annoying. So we have a mechanism to suppress duplicates:
|
|||
@ A digit value in a given LPE:
|
||||
|
||||
=
|
||||
int LiteralPatterns::digit_value(wchar_t c, int base) {
|
||||
int r = -1;
|
||||
int d = ((int) c - (int) '0');
|
||||
if ((d >= 0) && (d < 10)) r = d;
|
||||
else {
|
||||
d = ((int) c - (int) 'a');
|
||||
if ((d >= 0) && (d < 26)) r = d + 10;
|
||||
else {
|
||||
d = ((int) c - (int) 'A');
|
||||
if ((d >= 0) && (d < 26)) r = d + 10; else return -1;
|
||||
int LiteralPatterns::simple_digit_value(wchar_t *p, int base) {
|
||||
return LiteralPatterns::digit_value(p, base, NULL, NULL, NULL);
|
||||
}
|
||||
int LiteralPatterns::digit_value(wchar_t *p, int base, text_stream *digits,
|
||||
literal_pattern_element_value_set *set, int *len) {
|
||||
if (set) {
|
||||
for (int i=0; i<LiteralPatterns::element_value_count(set); i++) {
|
||||
text_stream *match = LiteralPatterns::element_value_text(set, i);
|
||||
int fail = FALSE;
|
||||
for (int j=0; j<Str::len(match); j++)
|
||||
if (Characters::tolower(Str::get_at(match, j)) != Characters::tolower(p[j])) {
|
||||
fail = TRUE;
|
||||
break;
|
||||
}
|
||||
if (fail == FALSE) {
|
||||
if (len) *len = Str::len(match);
|
||||
return LiteralPatterns::element_value_equivalent(set, i) + 1;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
} else if (Str::len(digits) == 0) {
|
||||
wchar_t c = p[0];
|
||||
int r = -1;
|
||||
int d = ((int) c - (int) '0');
|
||||
if ((d >= 0) && (d < 10)) r = d;
|
||||
else {
|
||||
d = ((int) c - (int) 'a');
|
||||
if ((d >= 0) && (d < 26)) r = d + 10;
|
||||
else {
|
||||
d = ((int) c - (int) 'A');
|
||||
if ((d >= 0) && (d < 26)) r = d + 10; else return -1;
|
||||
}
|
||||
}
|
||||
if ((r >= 0) && (r < base)) {
|
||||
if (len) *len = 1;
|
||||
return r;
|
||||
}
|
||||
return -1;
|
||||
} else {
|
||||
wchar_t c = p[0];
|
||||
if (c)
|
||||
for (int i=0; i<base; i++)
|
||||
if (Str::get_at(digits, i) == c) {
|
||||
if (len) *len = 1;
|
||||
return i;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
if ((r >= 0) && (r < base)) return r;
|
||||
return -1;
|
||||
}
|
||||
|
||||
@h Indexing literal patterns for a given kind.
|
||||
|
@ -1001,7 +1058,6 @@ literal_pattern *LiteralPatterns::new_literal_specification_inner(lp_specificati
|
|||
"before the current one.");
|
||||
}
|
||||
}
|
||||
|
||||
if (lps->offset_value) {
|
||||
if (Rvalues::is_CONSTANT_of_kind(lps->offset_value, K)) {
|
||||
offset = Rvalues::to_encoded_notation(lps->offset_value);
|
||||
|
@ -1241,7 +1297,7 @@ character ones.
|
|||
if (i == Wordings::length(NW)-1) finish_at = to.char_pos;
|
||||
int digit_found = FALSE;
|
||||
for (int j=start_from; j<=finish_at; j++)
|
||||
if (LiteralPatterns::digit_value(text_of_word[j], lp->number_base) >= 0)
|
||||
if (LiteralPatterns::simple_digit_value(text_of_word + j, lp->number_base) >= 0)
|
||||
digit_found = TRUE;
|
||||
if ((digit_found) || (start_from != 0) || (finish_at != Wide::len(text_of_word)-1))
|
||||
@<Break up the word into at least one element token, and perhaps also character tokens@>
|
||||
|
@ -1263,11 +1319,11 @@ hold -- so we need not fool around with long long ints.
|
|||
for (int j=start_from; j<=finish_at; j++) {
|
||||
int tot = 0, digit_found = FALSE, point_found = FALSE;
|
||||
if ((text_of_word[j] == '-') &&
|
||||
(LiteralPatterns::digit_value(text_of_word[j+1], base) >= 0) &&
|
||||
(LiteralPatterns::simple_digit_value(text_of_word+j+1, base) >= 0) &&
|
||||
(ec == 0)) {
|
||||
sgn = -1; continue;
|
||||
}
|
||||
while (LiteralPatterns::digit_value(text_of_word[j++], base) >= 0) {
|
||||
while (LiteralPatterns::simple_digit_value(text_of_word+(j++), base) >= 0) {
|
||||
digit_found = TRUE;
|
||||
if (tot > 999999999) {
|
||||
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_LPElementTooLarge),
|
||||
|
@ -1276,7 +1332,7 @@ hold -- so we need not fool around with long long ints.
|
|||
"be stored at run-time.");
|
||||
return owner;
|
||||
}
|
||||
tot = base*tot + LiteralPatterns::digit_value(text_of_word[j-1], base);
|
||||
tot = base*tot + LiteralPatterns::simple_digit_value(text_of_word+j-1, base);
|
||||
}
|
||||
j--;
|
||||
if ((text_of_word[j] == '.') && (text_of_word[j+1] == '0') && (ec == 0)) {
|
||||
|
@ -1287,11 +1343,13 @@ hold -- so we need not fool around with long long ints.
|
|||
lp->lp_elements[ec-1].is_real = point_found;
|
||||
if (point_found) integer_scaling = FALSE;
|
||||
if (sgn == -1) lp->number_signed = TRUE;
|
||||
literal_pattern_token new_token = LiteralPatterns::lpt_new(ELEMENT_LPT, next_token_begins_word);
|
||||
literal_pattern_token new_token =
|
||||
LiteralPatterns::lpt_new(ELEMENT_LPT, next_token_begins_word);
|
||||
@<Add new token to LP@>;
|
||||
j--;
|
||||
} else {
|
||||
literal_pattern_token new_token = LiteralPatterns::lpt_new(CHARACTER_LPT, next_token_begins_word);
|
||||
literal_pattern_token new_token =
|
||||
LiteralPatterns::lpt_new(CHARACTER_LPT, next_token_begins_word);
|
||||
new_token.token_char = text_of_word[j];
|
||||
@<Add new token to LP@>;
|
||||
}
|
||||
|
@ -1393,13 +1451,76 @@ this is deferred until all elements exist, at which point we --
|
|||
lpe->element_range = n;
|
||||
}
|
||||
}
|
||||
if (O & DIGITS_TEXT_LSO) {
|
||||
lpe->digits_text = Str::new();
|
||||
WRITE_TO(lpe->digits_text, "%W", Wordings::one_word(Annotations::read_int(p, lpe_digits_ANNOT)));
|
||||
Str::delete_first_character(lpe->digits_text);
|
||||
Str::delete_last_character(lpe->digits_text);
|
||||
if (Str::len(lpe->digits_text) != lpe->number_base) {
|
||||
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(...),
|
||||
"there are the wrong number of digits here",
|
||||
"since we need one different digit character for each possible "
|
||||
"value, which will be 0 up to the number base minus 1.");
|
||||
} else {
|
||||
for (int i=0; i<lpe->number_base; i++)
|
||||
for (int j=0; j<lpe->number_base; j++)
|
||||
if ((i != j) &&
|
||||
(Str::get_at(lpe->digits_text, i) == Str::get_at(lpe->digits_text, j))) {
|
||||
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(...),
|
||||
"the digits here contain duplicates",
|
||||
"and we need one different digit character for each possible "
|
||||
"value, which will be 0 up to the number base minus 1.");
|
||||
break;
|
||||
}
|
||||
LOOP_THROUGH_TEXT(pos, lpe->digits_text)
|
||||
if ((Characters::is_whitespace(Str::get(pos))) ||
|
||||
(Str::get(pos) == ',') ||
|
||||
(Str::get(pos) == '[') ||
|
||||
(Str::get(pos) == ']')) {
|
||||
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(...),
|
||||
"the digits cannot include square brackets, commas or white space",
|
||||
"such as spaces or tabs.");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (O & VALUES_TEXT_LSO) {
|
||||
if ((O & WITH_LEADING_ZEROS_LSO) ||
|
||||
(O & WITHOUT_LEADING_ZEROS_LSO) ||
|
||||
(O & MAXIMUM_LSO) ||
|
||||
(O & MAX_DIGITS_MASK_LSO) ||
|
||||
(O & MAX_DIGITS_MASK_LSO) ||
|
||||
(O & BASE_MASK_LSO)) {
|
||||
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(...),
|
||||
"the list of values cannot be used with those other options",
|
||||
"since number base, leading zeros and digits make no sense, "
|
||||
"and the range is determined by the number of items in the list.");
|
||||
}
|
||||
if ((O & DIGITS_TEXT_LSO) && (O & VALUES_TEXT_LSO)) {
|
||||
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(...),
|
||||
"you can't give both a digits text and a values text",
|
||||
"since if the digits are determined then the values follow.");
|
||||
}
|
||||
TEMPORARY_TEXT(source)
|
||||
WRITE_TO(source, "%W", Wordings::one_word(Annotations::read_int(p, lpe_values_ANNOT)));
|
||||
Str::delete_first_character(source);
|
||||
Str::delete_last_character(source);
|
||||
lpe->values = LiteralPatterns::parse_value_set(source);
|
||||
if (lpe->values) {
|
||||
lpe->element_offset = 1;
|
||||
lpe->element_range = LiteralPatterns::element_value_count(lpe->values);
|
||||
lpe->print_with_leading_zeros = FALSE;
|
||||
}
|
||||
DISCARD_TEXT(source)
|
||||
}
|
||||
|
||||
if ((size_needed) && ((O & (MAX_DIGITS_MASK_LSO + MAXIMUM_LSO)) == 0)) {
|
||||
if ((size_needed) && ((O & (MAX_DIGITS_MASK_LSO + MAXIMUM_LSO + VALUES_TEXT_LSO)) == 0)) {
|
||||
if (i == 0) lpe->element_range = -1;
|
||||
else
|
||||
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(...),
|
||||
"this has a part with no indication of its possible range",
|
||||
"that is, by saying '0 to N' or 'N digits'.");
|
||||
"that is, by saying '0 to N' or 'N digits' or giving a list "
|
||||
"of possible values.");
|
||||
}
|
||||
|
||||
if ((i == lp->no_lp_elements - 1) && (p->next)) {
|
||||
|
@ -1469,6 +1590,10 @@ optional, and it must not be the first.
|
|||
lpe->element_offset, lpe->element_offset + lpe->element_range);
|
||||
else LOG("range unlimited ");
|
||||
LOG("(base %d) ", lpe->number_base);
|
||||
if (Str::len(lpe->digits_text) > 0) LOG("(digits %S) ", lpe->digits_text);
|
||||
if (lpe->values) {
|
||||
LOG("(values "); LiteralPatterns::log_element_value_set(lpe->values); LOG(")");
|
||||
}
|
||||
LOG("- multiplier %d\n", lpe->element_multiplier);
|
||||
ec++;
|
||||
break;
|
||||
|
@ -1716,6 +1841,118 @@ literal_pattern *LiteralPatterns::list_of_literal_forms(kind *K) {
|
|||
return K->construct->ways_to_write_literals;
|
||||
}
|
||||
|
||||
@
|
||||
|
||||
=
|
||||
literal_pattern_element_value_set *LiteralPatterns::parse_value_set(text_stream *src) {
|
||||
literal_pattern_element_value_set *set = CREATE(literal_pattern_element_value_set);
|
||||
set->source = Str::duplicate(src);
|
||||
set->extent = 0;
|
||||
int capacity = 4;
|
||||
set->values = (literal_pattern_element_value_pair *)
|
||||
(Memory::calloc(capacity, sizeof(literal_pattern_element_value_pair),
|
||||
LITERAL_PATTERN_MREASON));
|
||||
for (int i = 0; i<capacity; i++) {
|
||||
set->values[i].value_equivalent = -1;
|
||||
set->values[i].text_equivalent = NULL;
|
||||
}
|
||||
int err = FALSE, count = 0;
|
||||
TEMPORARY_TEXT(term)
|
||||
for (int i=0, state=1; i<Str::len(src); i++) {
|
||||
wchar_t c = Str::get_at(src, i);
|
||||
switch (state) {
|
||||
case 1: /* waiting for term */
|
||||
if (Characters::is_whitespace(c)) break;
|
||||
if (c == ',') { err = TRUE; break; }
|
||||
PUT_TO(term, c); state = 2;
|
||||
break;
|
||||
case 2: /* reading term */
|
||||
if (Characters::is_whitespace(c)) { @<Complete term@>; state = 3; break; }
|
||||
if (c == ',') { @<Complete term@>; state = 1; break; }
|
||||
PUT_TO(term, c);
|
||||
break;
|
||||
case 3: /* waiting for comma */
|
||||
if (Characters::is_whitespace(c)) break;
|
||||
if (c == ',') { state = 1; break; }
|
||||
err = TRUE; PUT_TO(term, c); state = 2;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@<Complete term@>;
|
||||
DISCARD_TEXT(term)
|
||||
if (err) {
|
||||
StandardProblems::handmade_problem(Task::syntax_tree(), _p_(...));
|
||||
Problems::quote_source(1, current_sentence);
|
||||
Problems::quote_stream(2, src);
|
||||
Problems::issue_problem_segment(
|
||||
"In the sentence %1, I am unable to work out the set of values '%2', "
|
||||
"which should be a comma-separated list.");
|
||||
Problems::issue_problem_end();
|
||||
}
|
||||
qsort(set->values, (size_t) set->extent, sizeof(literal_pattern_element_value_pair),
|
||||
LiteralPatterns::compare_value_texts);
|
||||
return set;
|
||||
}
|
||||
|
||||
@<Complete term@> =
|
||||
if (Str::len(term) > 0) {
|
||||
if (set->extent >= capacity) {
|
||||
int old_capacity = capacity;
|
||||
literal_pattern_element_value_pair *old_values = set->values;
|
||||
capacity = 4*capacity;
|
||||
set->values = (literal_pattern_element_value_pair *)
|
||||
(Memory::calloc(capacity, sizeof(literal_pattern_element_value_pair),
|
||||
LITERAL_PATTERN_MREASON));
|
||||
int i = 0;
|
||||
for (; i<set->extent; i++) set->values[i] = old_values[i];
|
||||
for (; i<capacity; i++) {
|
||||
set->values[i].value_equivalent = -1;
|
||||
set->values[i].text_equivalent = NULL;
|
||||
}
|
||||
Memory::I7_array_free(old_values, LITERAL_PATTERN_MREASON,
|
||||
old_capacity, sizeof(literal_pattern_element_value_pair));
|
||||
}
|
||||
set->values[set->extent].value_equivalent = set->extent;
|
||||
set->values[set->extent].text_equivalent = Str::duplicate(term);
|
||||
set->extent++;
|
||||
Str::clear(term);
|
||||
count++;
|
||||
}
|
||||
|
||||
@
|
||||
|
||||
=
|
||||
int LiteralPatterns::compare_value_texts(const void *res1, const void *res2) {
|
||||
const literal_pattern_element_value_pair *e1 = res1;
|
||||
const literal_pattern_element_value_pair *e2 = res2;
|
||||
int d = Str::len(e2->text_equivalent) - Str::len(e1->text_equivalent);
|
||||
if (d != 0) return d;
|
||||
return Str::cmp(e1->text_equivalent, e2->text_equivalent);
|
||||
}
|
||||
|
||||
int LiteralPatterns::element_value_count(literal_pattern_element_value_set *set) {
|
||||
if (set) return set->extent;
|
||||
return 0;
|
||||
}
|
||||
text_stream *LiteralPatterns::element_value_text(literal_pattern_element_value_set *set,
|
||||
int val) {
|
||||
if ((set) && (val >= 0) && (val < set->extent)) return set->values[val].text_equivalent;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int LiteralPatterns::element_value_equivalent(literal_pattern_element_value_set *set,
|
||||
int val) {
|
||||
if ((set) && (val >= 0) && (val < set->extent)) return set->values[val].value_equivalent;
|
||||
return -1;
|
||||
}
|
||||
|
||||
void LiteralPatterns::log_element_value_set(literal_pattern_element_value_set *set) {
|
||||
for (int i=0; i<set->extent; i++) {
|
||||
if (i > 0) LOG(", ");
|
||||
LOG("%d = <%S>", set->values[i].value_equivalent, set->values[i].text_equivalent);
|
||||
}
|
||||
}
|
||||
|
||||
@h Literal patterns in Preform.
|
||||
Everything is finally set up so that we can define the following, which
|
||||
recognises any literal written using a pattern. On success, it produces a
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
Size of lexicon: 3163 excerpt meanings
|
||||
Stored among 856 words out of total vocabulary of 10784
|
||||
720 words have a start list: longest belongs to report (with 293 meanings)
|
||||
21 words have an end list: longest belongs to digit (with 7 meanings)
|
||||
21 words have an end list: longest belongs to digits (with 7 meanings)
|
||||
29 words have a middle list: longest belongs to to (with 4 meanings)
|
||||
108 words have a subset list: longest belongs to street (with 4 meanings)
|
||||
|
||||
|
|
Loading…
Reference in a new issue