mirror of
https://github.com/ganelson/inform.git
synced 2024-06-26 04:00:43 +03:00
Refactored arch module to provide new -format notation
This commit is contained in:
parent
0fabb281a6
commit
cc4287a9e7
|
@ -1,6 +1,6 @@
|
|||
# Inform 7
|
||||
|
||||
v10.1.0-alpha.1+6T21 'Krypton' (10 September 2021)
|
||||
v10.1.0-alpha.1+6T22 'Krypton' (11 September 2021)
|
||||
|
||||
## About Inform 7
|
||||
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
Prerelease: alpha.1
|
||||
Build Date: 10 September 2021
|
||||
Build Number: 6T21
|
||||
Build Date: 11 September 2021
|
||||
Build Number: 6T22
|
||||
|
|
|
@ -90,7 +90,7 @@ which use this module:
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ArchModule::start</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-arc.html#SP3" class="function-link"><span class="function-syntax">Architectures::create</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-tvm.html#SP3" class="function-link"><span class="function-syntax">TargetVMs::create</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-tvm.html#SP1" class="function-link"><span class="function-syntax">TargetVMs::create</span></a><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">ArchModule::end</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
|
|
|
@ -145,12 +145,12 @@ leafnames:
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">Architectures::to_codename</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Architectures::to_codename</span></span>:<br/>Target Virtual Machines - <a href="2-tvm.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_architecture</span><span class="plain-syntax"> *</span><span class="identifier-syntax">A</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">Architectures::to_codename</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Architectures::to_codename</span></span>:<br/>Target Virtual Machines - <a href="2-tvm.html#SP3">§3</a>, <a href="2-tvm.html#SP6_4">§6.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_architecture</span><span class="plain-syntax"> *</span><span class="identifier-syntax">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">A</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</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="element-syntax">shorthand</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">inter_architecture</span><span class="plain-syntax"> *</span><span class="function-syntax">Architectures::from_codename</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Architectures::from_codename</span></span>:<br/>Target Virtual Machines - <a href="2-tvm.html#SP3">§3</a>, <a href="2-tvm.html#SP7_1">§7.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">name</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">inter_architecture</span><span class="plain-syntax"> *</span><span class="function-syntax">Architectures::from_codename</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Architectures::from_codename</span></span>:<br/>Target Virtual Machines - <a href="2-tvm.html#SP1">§1</a>, <a href="2-tvm.html#SP6_1_1">§6.1.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">name</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_architecture</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">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">, </span><span class="reserved-syntax">inter_architecture</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">Str::eq_insensitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">-></span><span class="element-syntax">shorthand</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">))</span>
|
||||
|
@ -162,11 +162,11 @@ leafnames:
|
|||
</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">Architectures::is_16_bit</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">Architectures::is_16_bit</span></span>:<br/>Target Virtual Machines - <a href="2-tvm.html#SP2">§2</a>, <a href="2-tvm.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_architecture</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="function-syntax">Architectures::is_16_bit</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">Architectures::is_16_bit</span></span>:<br/>Target Virtual Machines - <a href="2-tvm.html#SP3">§3</a>, <a href="2-tvm.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_architecture</span><span class="plain-syntax"> *</span><span class="identifier-syntax">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">A</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">"no arch"</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="element-syntax">sixteen_bit</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">Architectures::debug_enabled</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">Architectures::debug_enabled</span></span>:<br/>Target Virtual Machines - <a href="2-tvm.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_architecture</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="function-syntax">Architectures::debug_enabled</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">Architectures::debug_enabled</span></span>:<br/>Target Virtual Machines - <a href="2-tvm.html#SP6">§6</a>, <a href="2-tvm.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_architecture</span><span class="plain-syntax"> *</span><span class="identifier-syntax">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">A</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">"no arch"</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="element-syntax">debug_enabled</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
|
|
@ -144,7 +144,7 @@ better, if available.
|
|||
<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">1</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">n</span><span class="plain-syntax"> < </span><span class="identifier-syntax">x</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">", "</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">1</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">n</span><span class="plain-syntax"> == </span><span class="identifier-syntax">x</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" or "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-tvm.html#SP4" class="function-link"><span class="function-syntax">TargetVMs::write</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">VM</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-tvm.html#SP5" class="function-link"><span class="function-syntax">TargetVMs::write</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">VM</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -405,7 +405,7 @@ according to what the <span class="extract"><span class="extract-syntax">token</
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</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">seen</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">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">, </span><span class="reserved-syntax">target_vm</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">Str::eq_insensitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">family_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">cps</span><span class="plain-syntax">-></span><span class="element-syntax">current_family</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-tvm.html#SP13" class="function-link"><span class="function-syntax">TargetVMs::compatible_with</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">, </span><span class="identifier-syntax">cps</span><span class="plain-syntax">-></span><span class="element-syntax">current_family</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">seen</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">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">VersionNumbers::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">version</span><span class="plain-syntax">, </span><span class="identifier-syntax">V</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> ((</span><span class="identifier-syntax">with</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NOT_APPLICABLE</span><span class="plain-syntax">) || (</span><a href="2-tvm.html#SP9" class="function-link"><span class="function-syntax">TargetVMs::debug_enabled</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">) == </span><span class="identifier-syntax">with</span><span class="plain-syntax">)))</span>
|
||||
|
@ -436,7 +436,7 @@ according to what the <span class="extract"><span class="extract-syntax">token</
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">seen</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">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">, </span><span class="reserved-syntax">target_vm</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">Str::eq_insensitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">family_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">token</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-tvm.html#SP13" class="function-link"><span class="function-syntax">TargetVMs::compatible_with</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">, </span><span class="identifier-syntax">token</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">seen</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">if</span><span class="plain-syntax"> (</span><a href="2-tvm.html#SP9" class="function-link"><span class="function-syntax">TargetVMs::debug_enabled</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">) == </span><span class="identifier-syntax">with</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cmp.html#SP4" class="function-link"><span class="function-syntax">Compatibility::add_exception</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cps</span><span class="plain-syntax">-></span><span class="element-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">VM</span><span class="plain-syntax">);</span>
|
||||
|
@ -452,8 +452,8 @@ according to what the <span class="extract"><span class="extract-syntax">token</
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">, </span><span class="reserved-syntax">target_vm</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">Str::eq_insensitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">family_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">token</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cps</span><span class="plain-syntax">-></span><span class="element-syntax">current_family</span><span class="plain-syntax"> = </span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">family_name</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-tvm.html#SP13" class="function-link"><span class="function-syntax">TargetVMs::compatible_with</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">, </span><span class="identifier-syntax">token</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cps</span><span class="plain-syntax">-></span><span class="element-syntax">current_family</span><span class="plain-syntax"> = </span><a href="2-tvm.html#SP13" class="function-link"><span class="function-syntax">TargetVMs::family</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VM</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>
|
||||
<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>
|
||||
|
@ -466,7 +466,7 @@ according to what the <span class="extract"><span class="extract-syntax">token</
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">cps</span><span class="plain-syntax">-></span><span class="element-syntax">family_used</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">cps</span><span class="plain-syntax">-></span><span class="element-syntax">current_family</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">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">, </span><span class="reserved-syntax">target_vm</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">Str::eq_insensitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">cps</span><span class="plain-syntax">-></span><span class="element-syntax">current_family</span><span class="plain-syntax">, </span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">family_name</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-tvm.html#SP13" class="function-link"><span class="function-syntax">TargetVMs::compatible_with</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">, </span><span class="identifier-syntax">cps</span><span class="plain-syntax">-></span><span class="element-syntax">current_family</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cmp.html#SP4" class="function-link"><span class="function-syntax">Compatibility::add_exception</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cps</span><span class="plain-syntax">-></span><span class="element-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">VM</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">TRUE</span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -73,218 +73,316 @@ function togglePopup(material_id) {
|
|||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Services</a></li><li><a href="index.html">arch</a></li><li><a href="index.html#2">Chapter 2: Architectures and VMs</a></li><li><b>Target Virtual Machines</b></li></ul></div>
|
||||
<p class="purpose">To deal with multiple object code formats.</p>
|
||||
|
||||
<ul class="toc"><li><a href="2-tvm.html#SP1">§1. Object code</a></li><li><a href="2-tvm.html#SP3">§3. Standard set</a></li><li><a href="2-tvm.html#SP4">§4. Describing and finding</a></li><li><a href="2-tvm.html#SP9">§9. Miscellaneous provisions</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="2-tvm.html#SP1">§1. Target VMs</a></li><li><a href="2-tvm.html#SP5">§5. To and from text</a></li><li><a href="2-tvm.html#SP9">§9. Architectural provisions</a></li><li><a href="2-tvm.html#SP10">§10. File extension provisions</a></li><li><a href="2-tvm.html#SP13">§13. Family compatibility</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Object code. </b>The end result of compilation is traditionally called "object code" and
|
||||
people tend to use words like "binary" or even "machine code" about it,
|
||||
though in fact the world is more diverse nowadays. Inform 7 has always
|
||||
generated "object code" which is itself a program for a virtual machine;
|
||||
for example, it makes Glulx bytecode rather than x86 or ARM instructions.
|
||||
Because of that, we use the customary term "virtual machine" for the format
|
||||
of the end product of the Inform build process. But it doesn't have to be
|
||||
virtual. If Inter-to-x86-via-C is properly implemented, we will probably
|
||||
want to add a VM to represent something like "32-bit binary via ANSI C".
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Target VMs. </b>For a fuller explanation of these, see <a href="P-wtmd.html" class="internal">What This Module Does</a>, but briefly:
|
||||
a <a href="2-tvm.html#SP2" class="internal">target_vm</a> object represents a choice of both Inter architecture and
|
||||
also a format for final code-generation from Inter. For example, it might
|
||||
represent "16-bit with debugging enabled to be generated to Inform 6 code",
|
||||
or, say, "32-bit to be generated to ANSI C code".
|
||||
</p>
|
||||
|
||||
<p class="commentary">Each different target VM is represented by one of these objects:
|
||||
<p class="commentary">The basic set of possible target VMs is made when the <a href="index.html" class="internal">arch</a> module starts up:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">TargetVMs::create</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">TargetVMs::create</span></span>:<br/>Arch Module - <a href="1-am.html#SP3">§3</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="comment-syntax"> hat tip: Joel Berez and Marc Blank, 1979, and later hands</span>
|
||||
<span class="plain-syntax"> </span><a href="2-tvm.html#SP3" class="function-link"><span class="function-syntax">TargetVMs::new</span></a><span class="plain-syntax">(</span><a href="2-arc.html#SP5" class="function-link"><span class="function-syntax">Architectures::from_codename</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"16"</span><span class="plain-syntax">), </span><span class="identifier-syntax">I</span><span class="string-syntax">"Inform6"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VersionNumbers::from_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"5"</span><span class="plain-syntax">), </span><span class="identifier-syntax">I</span><span class="string-syntax">"z5"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"zblorb"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Parchment"</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-tvm.html#SP3" class="function-link"><span class="function-syntax">TargetVMs::new</span></a><span class="plain-syntax">(</span><a href="2-arc.html#SP5" class="function-link"><span class="function-syntax">Architectures::from_codename</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"16d"</span><span class="plain-syntax">), </span><span class="identifier-syntax">I</span><span class="string-syntax">"Inform6"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VersionNumbers::from_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"5"</span><span class="plain-syntax">), </span><span class="identifier-syntax">I</span><span class="string-syntax">"z5"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"zblorb"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Parchment"</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><a href="2-tvm.html#SP3" class="function-link"><span class="function-syntax">TargetVMs::new</span></a><span class="plain-syntax">(</span><a href="2-arc.html#SP5" class="function-link"><span class="function-syntax">Architectures::from_codename</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"16"</span><span class="plain-syntax">), </span><span class="identifier-syntax">I</span><span class="string-syntax">"Inform6"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VersionNumbers::from_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"8"</span><span class="plain-syntax">), </span><span class="identifier-syntax">I</span><span class="string-syntax">"z8"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"zblorb"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Parchment"</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-tvm.html#SP3" class="function-link"><span class="function-syntax">TargetVMs::new</span></a><span class="plain-syntax">(</span><a href="2-arc.html#SP5" class="function-link"><span class="function-syntax">Architectures::from_codename</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"16d"</span><span class="plain-syntax">), </span><span class="identifier-syntax">I</span><span class="string-syntax">"Inform6"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VersionNumbers::from_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"8"</span><span class="plain-syntax">), </span><span class="identifier-syntax">I</span><span class="string-syntax">"z8"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"zblorb"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Parchment"</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax"> hat tip: Andrew Plotkin, 2000</span>
|
||||
<span class="plain-syntax"> </span><a href="2-tvm.html#SP3" class="function-link"><span class="function-syntax">TargetVMs::new</span></a><span class="plain-syntax">(</span><a href="2-arc.html#SP5" class="function-link"><span class="function-syntax">Architectures::from_codename</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"32"</span><span class="plain-syntax">), </span><span class="identifier-syntax">I</span><span class="string-syntax">"Inform6"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VersionNumbers::from_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"3.1.2"</span><span class="plain-syntax">), </span><span class="identifier-syntax">I</span><span class="string-syntax">"ulx"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"gblorb"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Quixe"</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-tvm.html#SP3" class="function-link"><span class="function-syntax">TargetVMs::new</span></a><span class="plain-syntax">(</span><a href="2-arc.html#SP5" class="function-link"><span class="function-syntax">Architectures::from_codename</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"32d"</span><span class="plain-syntax">), </span><span class="identifier-syntax">I</span><span class="string-syntax">"Inform6"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VersionNumbers::from_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"3.1.2"</span><span class="plain-syntax">), </span><span class="identifier-syntax">I</span><span class="string-syntax">"ulx"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"gblorb"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Quixe"</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax"> C support added September 2021</span>
|
||||
<span class="plain-syntax"> </span><a href="2-tvm.html#SP3" class="function-link"><span class="function-syntax">TargetVMs::new</span></a><span class="plain-syntax">(</span><a href="2-arc.html#SP5" class="function-link"><span class="function-syntax">Architectures::from_codename</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"32"</span><span class="plain-syntax">), </span><span class="identifier-syntax">I</span><span class="string-syntax">"C"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VersionNumbers::from_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"1"</span><span class="plain-syntax">), </span><span class="identifier-syntax">I</span><span class="string-syntax">"c"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">""</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">""</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-tvm.html#SP3" class="function-link"><span class="function-syntax">TargetVMs::new</span></a><span class="plain-syntax">(</span><a href="2-arc.html#SP5" class="function-link"><span class="function-syntax">Architectures::from_codename</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"32d"</span><span class="plain-syntax">), </span><span class="identifier-syntax">I</span><span class="string-syntax">"C"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VersionNumbers::from_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"1"</span><span class="plain-syntax">), </span><span class="identifier-syntax">I</span><span class="string-syntax">"c"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">""</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">""</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>The <a href="2-tvm.html#SP2" class="internal">target_vm</a> structure contains two arguably architectural doohickies:
|
||||
potential limits on the use of floating-point arithmetic or on local variables.
|
||||
These are indeed currently derived only from the choice of <span class="extract"><span class="extract-syntax">architecture</span></span>, but
|
||||
we're keeping them here in case there is some day a need for a 32-bit format
|
||||
with integer-only arithmetic, say.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<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">target_vm</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">family_name</span><span class="plain-syntax">; </span><span class="comment-syntax"> such as </span><span class="extract"><span class="extract-syntax">Glulx</span></span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">with_debugging_enabled</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">inter_architecture</span><span class="plain-syntax"> *</span><span class="identifier-syntax">architecture</span><span class="plain-syntax">; </span><span class="comment-syntax"> such as 32d</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">semantic_version_number</span><span class="plain-syntax"> </span><span class="identifier-syntax">version</span><span class="plain-syntax">; </span><span class="comment-syntax"> such as 0.8.7</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">VM_extension</span><span class="plain-syntax">; </span><span class="comment-syntax"> canonical filename extension</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">VM_unblorbed_extension</span><span class="plain-syntax">; </span><span class="comment-syntax"> such as </span><span class="extract"><span class="extract-syntax">z8</span></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">VM_blorbed_extension</span><span class="plain-syntax">; </span><span class="comment-syntax"> when blorbed up</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">VM_image</span><span class="plain-syntax">; </span><span class="comment-syntax"> filename of image for icon denoting VM</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">max_locals</span><span class="plain-syntax">; </span><span class="comment-syntax"> upper limit on local variables per stack frame</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">VM_image</span><span class="plain-syntax">; </span><span class="comment-syntax"> filename of image for icon used in the index</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">default_browser_interpreter</span><span class="plain-syntax">; </span><span class="comment-syntax"> e.g., "Parchment"</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">iFiction_format_name</span><span class="plain-syntax">; </span><span class="comment-syntax"> e.g., "zcode": see the Treaty of Babel</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">format_name</span><span class="plain-syntax">; </span><span class="comment-syntax"> transpiler format, e.g., "Inform6" or "C"</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">format_options</span><span class="plain-syntax">; </span><span class="comment-syntax"> of </span><span class="extract"><span class="extract-syntax">text_stream</span></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">transpiler_family</span><span class="plain-syntax">; </span><span class="comment-syntax"> transpiler format, e.g., "Inform6" or "C"</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">full_format</span><span class="plain-syntax">; </span><span class="comment-syntax"> e.g., "Inform6/32d/v3.1.2"</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">supports_floating_point</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">max_locals</span><span class="plain-syntax">; </span><span class="comment-syntax"> upper limit on local variables per stack frame</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">format_options</span><span class="plain-syntax">; </span><span class="comment-syntax"> of </span><span class="extract"><span class="extract-syntax">text_stream</span></span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">target_vm</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure target_vm is accessed in 2/cmp and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="function-syntax">TargetVMs::new</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">TargetVMs::new</span></span>:<br/><a href="2-tvm.html#SP3">§3</a>, <a href="2-tvm.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">code</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">nick</span><span class="plain-syntax">, </span><span class="identifier-syntax">semantic_version_number</span><span class="plain-syntax"> </span><span class="identifier-syntax">V</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">image</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">interpreter</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">blorbed</span><span class="plain-syntax">, </span><span class="reserved-syntax">inter_architecture</span><span class="plain-syntax"> *</span><span class="identifier-syntax">arch</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">debug</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">max_locals</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iFiction</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">format</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="function-syntax">TargetVMs::new</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">TargetVMs::new</span></span>:<br/><a href="2-tvm.html#SP1">§1</a>, <a href="2-tvm.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_architecture</span><span class="plain-syntax"> *</span><span class="identifier-syntax">arch</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">format</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">semantic_version_number</span><span class="plain-syntax"> </span><span class="identifier-syntax">V</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">unblorbed</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">blorbed</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">interpreter</span><span class="plain-syntax">, </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">opts</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">target_vm</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">family_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">code</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">version</span><span class="plain-syntax"> = </span><span class="identifier-syntax">V</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">VM_extension</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">nick</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">VM_unblorbed_extension</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">nick</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">VM_unblorbed_extension</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">unblorbed</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">VM_blorbed_extension</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">blorbed</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">VM_image</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">image</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">max_locals</span><span class="plain-syntax"> = </span><span class="identifier-syntax">max_locals</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">default_browser_interpreter</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">interpreter</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">architecture</span><span class="plain-syntax"> = </span><span class="identifier-syntax">arch</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">VM</span><span class="plain-syntax">-></span><span class="element-syntax">architecture</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">"no such architecture"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">with_debugging_enabled</span><span class="plain-syntax"> = </span><span class="identifier-syntax">debug</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">supports_floating_point</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">if</span><span class="plain-syntax"> (</span><a href="2-arc.html#SP6" class="function-link"><span class="function-syntax">Architectures::is_16_bit</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">architecture</span><span class="plain-syntax">)) </span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">supports_floating_point</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">VM</span><span class="plain-syntax">-></span><span class="element-syntax">iFiction_format_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">iFiction</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">format_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">format</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-arc.html#SP6" class="function-link"><span class="function-syntax">Architectures::is_16_bit</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">architecture</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">supports_floating_point</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">VM</span><span class="plain-syntax">-></span><span class="element-syntax">max_locals</span><span class="plain-syntax"> = </span><span class="constant-syntax">15</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">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">unblorbed</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"z5"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">VM_image</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"vm_z8.png"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">VM_image</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"vm_z5.png"</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="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">supports_floating_point</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">max_locals</span><span class="plain-syntax"> = </span><span class="constant-syntax">256</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">VM_image</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"vm_glulx.png"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">iFiction_format_name</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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">format</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Inform6"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-arc.html#SP6" class="function-link"><span class="function-syntax">Architectures::is_16_bit</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">architecture</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">iFiction_format_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"zcode"</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="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">iFiction_format_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"glulx"</span><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="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">iFiction_format_name</span><span class="plain-syntax">, </span><span class="string-syntax">"Inform+%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">format</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">transpiler_family</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">format</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">format_options</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NEW_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">full_format</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">VM</span><span class="plain-syntax">-></span><span class="element-syntax">full_format</span><span class="plain-syntax">, </span><span class="string-syntax">"%S/%S/v%v"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">transpiler_family</span><span class="plain-syntax">, </span><a href="2-arc.html#SP5" class="function-link"><span class="function-syntax">Architectures::to_codename</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">architecture</span><span class="plain-syntax">), &</span><span class="identifier-syntax">V</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">opts</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">opt</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">opt</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax">, </span><span class="identifier-syntax">opts</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">VM</span><span class="plain-syntax">-></span><span class="element-syntax">full_format</span><span class="plain-syntax">, </span><span class="string-syntax">"/%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">opt</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ADD_TO_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">opt</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax">, </span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">format_options</span><span class="plain-syntax">);</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">VM</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. Standard set. </b>This is called when the <a href="index.html" class="internal">arch</a> module starts up; no other architectures
|
||||
are ever made.
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b>Plumbing is included here to add "options" to a VM's textual description. The
|
||||
idea is that these allow for the user to specify additional and VM-specific
|
||||
command-line options (using <span class="extract"><span class="extract-syntax">-format</span></span>) which are then picked up by <a href="../final-module/index.html" class="internal">final</a>.
|
||||
Thus, a request for <span class="extract"><span class="extract-syntax">-format=C/32d/no-halt/stack=240</span></span> would cause a new variant of
|
||||
<span class="extract"><span class="extract-syntax">C/32d</span></span> to be created which would have the (purely hypothetical) list of
|
||||
options <span class="extract"><span class="extract-syntax">I"no-halt", I"stack=240"</span></span>. It is then up to the C final code generator
|
||||
to understand what these mean, if indeed they mean anything.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">TargetVMs::create</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">TargetVMs::create</span></span>:<br/>Arch Module - <a href="1-am.html#SP3">§3</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="comment-syntax"> hat tip: Joel Berez and Marc Blank, 1979, and later hands</span>
|
||||
<span class="plain-syntax"> </span><a href="2-tvm.html#SP2" class="function-link"><span class="function-syntax">TargetVMs::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"Z-Machine"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"z5"</span><span class="plain-syntax">, </span><span class="identifier-syntax">VersionNumbers::from_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"5"</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"vm_z5.png"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Parchment"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"zblorb"</span><span class="plain-syntax">, </span><a href="2-arc.html#SP5" class="function-link"><span class="function-syntax">Architectures::from_codename</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"16"</span><span class="plain-syntax">), </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="constant-syntax">15</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"zcode"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Inform6"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-tvm.html#SP2" class="function-link"><span class="function-syntax">TargetVMs::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"Z-Machine"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"z5"</span><span class="plain-syntax">, </span><span class="identifier-syntax">VersionNumbers::from_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"5"</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"vm_z5.png"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Parchment"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"zblorb"</span><span class="plain-syntax">, </span><a href="2-arc.html#SP5" class="function-link"><span class="function-syntax">Architectures::from_codename</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"16d"</span><span class="plain-syntax">), </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><span class="constant-syntax">15</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"zcode"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Inform6"</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><a href="2-tvm.html#SP2" class="function-link"><span class="function-syntax">TargetVMs::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"Z-Machine"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"z8"</span><span class="plain-syntax">, </span><span class="identifier-syntax">VersionNumbers::from_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"8"</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"vm_z8.png"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Parchment"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"zblorb"</span><span class="plain-syntax">, </span><a href="2-arc.html#SP5" class="function-link"><span class="function-syntax">Architectures::from_codename</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"16"</span><span class="plain-syntax">), </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="constant-syntax">15</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"zcode"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Inform6"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-tvm.html#SP2" class="function-link"><span class="function-syntax">TargetVMs::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"Z-Machine"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"z8"</span><span class="plain-syntax">, </span><span class="identifier-syntax">VersionNumbers::from_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"8"</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"vm_z8.png"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Parchment"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"zblorb"</span><span class="plain-syntax">, </span><a href="2-arc.html#SP5" class="function-link"><span class="function-syntax">Architectures::from_codename</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"16d"</span><span class="plain-syntax">), </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><span class="constant-syntax">15</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"zcode"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Inform6"</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax"> hat tip: Andrew Plotkin, 2000</span>
|
||||
<span class="plain-syntax"> </span><a href="2-tvm.html#SP2" class="function-link"><span class="function-syntax">TargetVMs::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"Glulx"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"ulx"</span><span class="plain-syntax">, </span><span class="identifier-syntax">VersionNumbers::from_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"3.1.2"</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"vm_glulx.png"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Quixe"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"gblorb"</span><span class="plain-syntax">, </span><a href="2-arc.html#SP5" class="function-link"><span class="function-syntax">Architectures::from_codename</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"32"</span><span class="plain-syntax">), </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="constant-syntax">256</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"glulx"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Inform6"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-tvm.html#SP2" class="function-link"><span class="function-syntax">TargetVMs::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"Glulx"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"ulx"</span><span class="plain-syntax">, </span><span class="identifier-syntax">VersionNumbers::from_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"3.1.2"</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"vm_glulx.png"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Quixe"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"gblorb"</span><span class="plain-syntax">, </span><a href="2-arc.html#SP5" class="function-link"><span class="function-syntax">Architectures::from_codename</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"32d"</span><span class="plain-syntax">), </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><span class="constant-syntax">256</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"glulx"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Inform6"</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><a href="2-tvm.html#SP2" class="function-link"><span class="function-syntax">TargetVMs::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"C"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"c"</span><span class="plain-syntax">, </span><span class="identifier-syntax">VersionNumbers::from_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"1"</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"vm_glulx.png"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">""</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">""</span><span class="plain-syntax">, </span><a href="2-arc.html#SP5" class="function-link"><span class="function-syntax">Architectures::from_codename</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"32"</span><span class="plain-syntax">), </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="constant-syntax">256</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"inform7-c"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"C"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-tvm.html#SP2" class="function-link"><span class="function-syntax">TargetVMs::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"C"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"c"</span><span class="plain-syntax">, </span><span class="identifier-syntax">VersionNumbers::from_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"1"</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"vm_glulx.png"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">""</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">""</span><span class="plain-syntax">, </span><a href="2-arc.html#SP5" class="function-link"><span class="function-syntax">Architectures::from_codename</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"32d"</span><span class="plain-syntax">), </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><span class="constant-syntax">256</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"inform7-c"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"C"</span><span class="plain-syntax">);</span>
|
||||
<span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="function-syntax">TargetVMs::new_variant</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">TargetVMs::new_variant</span></span>:<br/><a href="2-tvm.html#SP6_3">§6.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">existing</span><span class="plain-syntax">, </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">opts</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-tvm.html#SP3" class="function-link"><span class="function-syntax">TargetVMs::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">existing</span><span class="plain-syntax">-></span><span class="element-syntax">architecture</span><span class="plain-syntax">, </span><span class="identifier-syntax">existing</span><span class="plain-syntax">-></span><span class="element-syntax">transpiler_family</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">existing</span><span class="plain-syntax">-></span><span class="element-syntax">version</span><span class="plain-syntax">, </span><span class="identifier-syntax">existing</span><span class="plain-syntax">-></span><span class="element-syntax">VM_unblorbed_extension</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">existing</span><span class="plain-syntax">-></span><span class="element-syntax">VM_blorbed_extension</span><span class="plain-syntax">, </span><span class="identifier-syntax">existing</span><span class="plain-syntax">-></span><span class="element-syntax">default_browser_interpreter</span><span class="plain-syntax">, </span><span class="identifier-syntax">opts</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. Describing and finding. </b>This is the longhand form of the VM name:
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. To and from text. </b>First, writing. This is the longhand form of the VM name:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">TargetVMs::write</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">TargetVMs::write</span></span>:<br/>Compatibility - <a href="2-cmp.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">TargetVMs::write</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">TargetVMs::write</span></span>:<br/>Compatibility - <a href="2-cmp.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</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">VM</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"none"</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="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">family_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">semantic_version_number</span><span class="plain-syntax"> </span><span class="identifier-syntax">V</span><span class="plain-syntax"> = </span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">version</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">VersionNumbers::is_null</span><span class="plain-syntax">(</span><span class="identifier-syntax">V</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" version %v"</span><span class="plain-syntax">, &</span><span class="identifier-syntax">V</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">VM</span><span class="plain-syntax">-></span><span class="element-syntax">with_debugging_enabled</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" with debugging"</span><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="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">full_format</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="function-syntax">TargetVMs::get_full_format_text</span><span class="plain-syntax">(</span><span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</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">VM</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">"no VM"</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">VM</span><span class="plain-syntax">-></span><span class="element-syntax">full_format</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b>Here we deduce a VM from the given filename extension, which is the rather
|
||||
clumsy way that VMs are referred to on the <a href="../inform7/index.html" class="internal">inform7</a> command line. For
|
||||
example, <span class="extract"><span class="extract-syntax">ulx</span></span> produces one of the Glulx VMs.
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b>And now for reading. The following is used by <a href="../inbuild/index.html" class="internal">inbuild</a> when reading the
|
||||
command-line option <span class="extract"><span class="extract-syntax">-format=T</span></span>: the text <span class="extract"><span class="extract-syntax">T</span></span> is supplied as a parameter here.
|
||||
</p>
|
||||
|
||||
<p class="commentary">Note however that it actually calls <a href="2-tvm.html#SP6" class="internal">TargetVMs::find_with_hint</a>. The <span class="extract"><span class="extract-syntax">debug</span></span>
|
||||
hint, if set, says to make the architecture have debugging enabled or not according
|
||||
to this hint: thus <span class="extract"><span class="extract-syntax">"C"</span></span> plus the hint <span class="extract"><span class="extract-syntax">FALSE</span></span> will return the VM <span class="extract"><span class="extract-syntax">C/32</span></span>, while
|
||||
<span class="extract"><span class="extract-syntax">"C"</span></span> plus the hint <span class="extract"><span class="extract-syntax">TRUE</span></span> will return the VM <span class="extract"><span class="extract-syntax">C/32d</span></span>. The hint <span class="extract"><span class="extract-syntax">NOT_APPLICABLE</span></span>
|
||||
is ignored; and the hint is also ignored if the supplied text already definitely
|
||||
specifies debugging. Thus <span class="extract"><span class="extract-syntax">"C/32d"</span></span> plus hint <span class="extract"><span class="extract-syntax">FALSE</span></span> will return <span class="extract"><span class="extract-syntax">C/32d</span></span>.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="function-syntax">TargetVMs::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">format</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-tvm.html#SP6" class="function-link"><span class="function-syntax">TargetVMs::find_with_hint</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">format</span><span class="plain-syntax">, </span><span class="identifier-syntax">NOT_APPLICABLE</span><span class="plain-syntax">); </span><span class="comment-syntax"> i.e., no hint</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="function-syntax">TargetVMs::find_with_hint</span><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">format</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">debug</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">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">format</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">format</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"Inform6"</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">wanted_language</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_architecture</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wanted_arch</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">semantic_version_number</span><span class="plain-syntax"> </span><span class="identifier-syntax">wanted_version</span><span class="plain-syntax"> = </span><span class="identifier-syntax">VersionNumbers::null</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wanted_opts</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NEW_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-tvm.html#SP6_1" class="named-paragraph-link"><span class="named-paragraph">Parse the text supplied into these variables</span><span class="named-paragraph-number">6.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">wanted_arch</span><span class="plain-syntax">) && (</span><a href="2-arc.html#SP6" class="function-link"><span class="function-syntax">Architectures::debug_enabled</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wanted_arch</span><span class="plain-syntax">))) </span><span class="identifier-syntax">debug</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-tvm.html#SP6_2" class="named-paragraph-link"><span class="named-paragraph">Try to find a VM which is a perfect match</span><span class="named-paragraph-number">6.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-tvm.html#SP6_3" class="named-paragraph-link"><span class="named-paragraph">Try to find a VM which would be a match except for the options</span><span class="named-paragraph-number">6.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-tvm.html#SP6_4" class="named-paragraph-link"><span class="named-paragraph">Try to find a VM in the now-deprecated old notation</span><span class="named-paragraph-number">6.4</span></a></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">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP6_1" class="paragraph-anchor"></a><b>§6.1. </b>Format text is a list of criteria divided by slashes:
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse the text supplied into these variables</span><span class="named-paragraph-number">6.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="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">criterion</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_THROUGH_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">, </span><span class="identifier-syntax">format</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">Str::get</span><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">) == </span><span class="character-syntax">'/'</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">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">criterion</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-tvm.html#SP6_1_1" class="named-paragraph-link"><span class="named-paragraph">Accept criterion</span><span class="named-paragraph-number">6.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::clear</span><span class="plain-syntax">(</span><span class="identifier-syntax">criterion</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="identifier-syntax">PUT_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">criterion</span><span class="plain-syntax">, </span><span class="identifier-syntax">Str::get</span><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> }</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">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">criterion</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-tvm.html#SP6_1_1" class="named-paragraph-link"><span class="named-paragraph">Accept criterion</span><span class="named-paragraph-number">6.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">criterion</span><span class="plain-syntax">)</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-tvm.html#SP6">§6</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6_1_1" class="paragraph-anchor"></a><b>§6.1.1. </b>The first criterion is the only compulsory one, and must be something like
|
||||
<span class="extract"><span class="extract-syntax">Inform6</span></span> or <span class="extract"><span class="extract-syntax">C</span></span>. After that, any criterion in the form of an architecture code,
|
||||
like <span class="extract"><span class="extract-syntax">32d</span></span>, is interpreted as such; and any criterion opening with <span class="extract"><span class="extract-syntax">v</span></span> plus a
|
||||
digit is read as a semantic version number. If any criteria are left after all
|
||||
that, they are considered options (see above).
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Accept criterion</span><span class="named-paragraph-number">6.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">wanted_language</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">wanted_language</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">criterion</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">inter_architecture</span><span class="plain-syntax"> *</span><span class="identifier-syntax">arch</span><span class="plain-syntax"> = </span><a href="2-arc.html#SP5" class="function-link"><span class="function-syntax">Architectures::from_codename</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">criterion</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">arch</span><span class="plain-syntax">) </span><span class="identifier-syntax">wanted_arch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">arch</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">Str::get_at</span><span class="plain-syntax">(</span><span class="identifier-syntax">criterion</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">) == </span><span class="character-syntax">'v'</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">Str::get_at</span><span class="plain-syntax">(</span><span class="identifier-syntax">criterion</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">) == </span><span class="character-syntax">'V'</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Characters::isdigit</span><span class="plain-syntax">(</span><span class="identifier-syntax">Str::get_at</span><span class="plain-syntax">(</span><span class="identifier-syntax">criterion</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">)))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::delete_first_character</span><span class="plain-syntax">(</span><span class="identifier-syntax">criterion</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wanted_version</span><span class="plain-syntax"> = </span><span class="identifier-syntax">VersionNumbers::from_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">criterion</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="identifier-syntax">ADD_TO_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">criterion</span><span class="plain-syntax">), </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax">, </span><span class="identifier-syntax">wanted_opts</span><span class="plain-syntax">);</span>
|
||||
<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="2-tvm.html#SP6_1">§6.1</a> (twice).</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6_2" class="paragraph-anchor"></a><b>§6.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Try to find a VM which is a perfect match</span><span class="named-paragraph-number">6.2</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">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">result</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">, </span><span class="reserved-syntax">target_vm</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">Str::eq_insensitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">transpiler_family</span><span class="plain-syntax">, </span><span class="identifier-syntax">wanted_language</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> ((</span><span class="identifier-syntax">wanted_arch</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">architecture</span><span class="plain-syntax"> == </span><span class="identifier-syntax">wanted_arch</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> ((</span><span class="identifier-syntax">debug</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NOT_APPLICABLE</span><span class="plain-syntax">) || (</span><a href="2-tvm.html#SP9" class="function-link"><span class="function-syntax">TargetVMs::debug_enabled</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">) == </span><span class="identifier-syntax">debug</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="2-tvm.html#SP7" class="function-link"><span class="function-syntax">TargetVMs::versions_match</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">, </span><span class="identifier-syntax">wanted_version</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="2-tvm.html#SP8" class="function-link"><span class="function-syntax">TargetVMs::options_match</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">, </span><span class="identifier-syntax">wanted_opts</span><span class="plain-syntax">)))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">result</span><span class="plain-syntax"> = </span><span class="identifier-syntax">VM</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">result</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">result</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-tvm.html#SP6">§6</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6_3" class="paragraph-anchor"></a><b>§6.3. </b>If we're given, say, <span class="extract"><span class="extract-syntax">C/32d/no-pointer-nonsense</span></span> and we can't find that exact
|
||||
thing, but can find <span class="extract"><span class="extract-syntax">C/32d</span></span>, then we construct a variant of it which does have
|
||||
the option <span class="extract"><span class="extract-syntax">no-pointer-nonsense</span></span> and return that.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Try to find a VM which would be a match except for the options</span><span class="named-paragraph-number">6.3</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">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">result</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">, </span><span class="reserved-syntax">target_vm</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">Str::eq_insensitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">transpiler_family</span><span class="plain-syntax">, </span><span class="identifier-syntax">wanted_language</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> ((</span><span class="identifier-syntax">wanted_arch</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">architecture</span><span class="plain-syntax"> == </span><span class="identifier-syntax">wanted_arch</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> ((</span><span class="identifier-syntax">debug</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NOT_APPLICABLE</span><span class="plain-syntax">) || (</span><a href="2-tvm.html#SP9" class="function-link"><span class="function-syntax">TargetVMs::debug_enabled</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">) == </span><span class="identifier-syntax">debug</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="2-tvm.html#SP7" class="function-link"><span class="function-syntax">TargetVMs::versions_match</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">, </span><span class="identifier-syntax">wanted_version</span><span class="plain-syntax">)))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">result</span><span class="plain-syntax"> = </span><span class="identifier-syntax">VM</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">result</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-tvm.html#SP4" class="function-link"><span class="function-syntax">TargetVMs::new_variant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">result</span><span class="plain-syntax">, </span><span class="identifier-syntax">wanted_opts</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-tvm.html#SP6">§6</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6_4" class="paragraph-anchor"></a><b>§6.4. </b>If we get here, we've failed to make any match using the modern notation.
|
||||
</p>
|
||||
|
||||
<p class="commentary">So next we try to deduce a VM from the given filename extension, which is the
|
||||
clumsy way that VMs used to be referred to on the <a href="../inform7/index.html" class="internal">inform7</a> command line. For
|
||||
example, <span class="extract"><span class="extract-syntax">-format=ulx</span></span> produces <span class="extract"><span class="extract-syntax">Inform6/32</span></span> or <span class="extract"><span class="extract-syntax">Inform6/32d</span></span> (depending on
|
||||
the <span class="extract"><span class="extract-syntax">debug</span></span> hint).
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Try to find a VM in the now-deprecated old notation</span><span class="named-paragraph-number">6.4</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="function-syntax">TargetVMs::find_by_extension</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">TargetVMs::find_by_extension</span></span>:<br/><a href="2-tvm.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ext</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">debug</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">result</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</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">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">ext</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">ext</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"ulx"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">file_extension</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::copy</span><span class="plain-syntax">(</span><span class="identifier-syntax">file_extension</span><span class="plain-syntax">, </span><span class="identifier-syntax">ext</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::copy</span><span class="plain-syntax">(</span><span class="identifier-syntax">file_extension</span><span class="plain-syntax">, </span><span class="identifier-syntax">format</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">Str::get_first_char</span><span class="plain-syntax">(</span><span class="identifier-syntax">file_extension</span><span class="plain-syntax">) == </span><span class="character-syntax">'.'</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::delete_first_character</span><span class="plain-syntax">(</span><span class="identifier-syntax">file_extension</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_THROUGH_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">, </span><span class="identifier-syntax">file_extension</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::put</span><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">, </span><span class="identifier-syntax">Characters::tolower</span><span class="plain-syntax">(</span><span class="identifier-syntax">Str::get</span><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">)));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">, </span><span class="reserved-syntax">target_vm</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">Str::eq_insensitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">VM_unblorbed_extension</span><span class="plain-syntax">, </span><span class="identifier-syntax">ext</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">with_debugging_enabled</span><span class="plain-syntax"> == </span><span class="identifier-syntax">debug</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">Str::eq_insensitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">VM_unblorbed_extension</span><span class="plain-syntax">, </span><span class="identifier-syntax">file_extension</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="2-tvm.html#SP9" class="function-link"><span class="function-syntax">TargetVMs::debug_enabled</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">) == </span><span class="identifier-syntax">debug</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">result</span><span class="plain-syntax"> = </span><span class="identifier-syntax">VM</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">file_extension</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">result</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b>A somewhat sharper method finds specific versions: for example, it can pick
|
||||
out version 5 rather than version 8 of the Z-machine. Note that the version
|
||||
numbers must match exactly, and not simply be compatible according to semver
|
||||
rules.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="function-syntax">TargetVMs::find_in_family</span><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">family</span><span class="plain-syntax">, </span><span class="identifier-syntax">semantic_version_number</span><span class="plain-syntax"> </span><span class="identifier-syntax">V</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">debug</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">, </span><span class="reserved-syntax">target_vm</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">Str::eq_insensitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">family_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">family</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">VersionNumbers::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">version</span><span class="plain-syntax">, </span><span class="identifier-syntax">V</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> ((</span><span class="identifier-syntax">debug</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NOT_APPLICABLE</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">debug</span><span class="plain-syntax"> == </span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">with_debugging_enabled</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">VM</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">NULL</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>And a device for discovering (or making) a target VM given a more general
|
||||
format,
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="function-syntax">TargetVMs::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">format</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">debug</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">wanted</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_architecture</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wanted_arch</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">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">segs</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NEW_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">segment</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_THROUGH_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">, </span><span class="identifier-syntax">format</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">Str::get</span><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">) == </span><span class="character-syntax">'/'</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">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">segment</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-tvm.html#SP7_1" class="named-paragraph-link"><span class="named-paragraph">Accept segment</span><span class="named-paragraph-number">7.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::clear</span><span class="plain-syntax">(</span><span class="identifier-syntax">segment</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</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">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">segment</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-tvm.html#SP7_1" class="named-paragraph-link"><span class="named-paragraph">Accept segment</span><span class="named-paragraph-number">7.1</span></a></span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">segment</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">result</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">, </span><span class="reserved-syntax">target_vm</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">Str::eq_insensitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">format_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">wanted</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> ((</span><span class="identifier-syntax">wanted_arch</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">architecture</span><span class="plain-syntax"> == </span><span class="identifier-syntax">wanted_arch</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">with_debugging_enabled</span><span class="plain-syntax"> == </span><span class="identifier-syntax">debug</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="2-tvm.html#SP8" class="function-link"><span class="function-syntax">TargetVMs::options_match</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">, </span><span class="identifier-syntax">segs</span><span class="plain-syntax">)))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">result</span><span class="plain-syntax"> = </span><span class="identifier-syntax">VM</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">result</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">result</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">, </span><span class="reserved-syntax">target_vm</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">Str::eq_insensitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">format_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">wanted</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> ((</span><span class="identifier-syntax">wanted_arch</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">architecture</span><span class="plain-syntax"> == </span><span class="identifier-syntax">wanted_arch</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">with_debugging_enabled</span><span class="plain-syntax"> == </span><span class="identifier-syntax">debug</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">result</span><span class="plain-syntax"> = </span><span class="identifier-syntax">VM</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">result</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">new_VM</span><span class="plain-syntax"> = </span><a href="2-tvm.html#SP2" class="function-link"><span class="function-syntax">TargetVMs::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">result</span><span class="plain-syntax">-></span><span class="element-syntax">family_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">result</span><span class="plain-syntax">-></span><span class="element-syntax">VM_extension</span><span class="plain-syntax">, </span><span class="identifier-syntax">result</span><span class="plain-syntax">-></span><span class="element-syntax">version</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">result</span><span class="plain-syntax">-></span><span class="element-syntax">VM_image</span><span class="plain-syntax">, </span><span class="identifier-syntax">result</span><span class="plain-syntax">-></span><span class="element-syntax">default_browser_interpreter</span><span class="plain-syntax">, </span><span class="identifier-syntax">result</span><span class="plain-syntax">-></span><span class="element-syntax">VM_blorbed_extension</span><span class="plain-syntax">, </span><span class="identifier-syntax">result</span><span class="plain-syntax">-></span><span class="element-syntax">architecture</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">result</span><span class="plain-syntax">-></span><span class="element-syntax">with_debugging_enabled</span><span class="plain-syntax">, </span><span class="identifier-syntax">result</span><span class="plain-syntax">-></span><span class="element-syntax">max_locals</span><span class="plain-syntax">, </span><span class="identifier-syntax">result</span><span class="plain-syntax">-></span><span class="element-syntax">iFiction_format_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">result</span><span class="plain-syntax">-></span><span class="element-syntax">format_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">new_VM</span><span class="plain-syntax">-></span><span class="element-syntax">format_options</span><span class="plain-syntax"> = </span><span class="identifier-syntax">segs</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">new_VM</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">STDOUT</span><span class="plain-syntax">, </span><span class="string-syntax">"(-format=%S is deprecated: try -format=%S/%S instead)\n"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">format</span><span class="plain-syntax">, </span><span class="identifier-syntax">result</span><span class="plain-syntax">-></span><span class="element-syntax">transpiler_family</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="2-arc.html#SP5" class="function-link"><span class="function-syntax">Architectures::to_codename</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">result</span><span class="plain-syntax">-></span><span class="element-syntax">architecture</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">result</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">result</span><span class="plain-syntax"> = </span><a href="2-tvm.html#SP5" class="function-link"><span class="function-syntax">TargetVMs::find_by_extension</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">format</span><span class="plain-syntax">, </span><span class="identifier-syntax">debug</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">result</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">STDOUT</span><span class="plain-syntax">, </span><span class="string-syntax">"(warning: that use of -format is deprecated: try -format=%S/%S instead)\n"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">result</span><span class="plain-syntax">-></span><span class="element-syntax">format_name</span><span class="plain-syntax">, </span><a href="2-arc.html#SP5" class="function-link"><span class="function-syntax">Architectures::to_codename</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">result</span><span class="plain-syntax">-></span><span class="element-syntax">architecture</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">result</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<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">Accept segment</span><span class="named-paragraph-number">7.1</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-tvm.html#SP6">§6</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b>Semantic version rules apply if the user supplies a format text with a given
|
||||
version requirement. If the user asks for <span class="extract"><span class="extract-syntax">v3.1.0</span></span> and we've got <span class="extract"><span class="extract-syntax">v3.1.2</span></span>,
|
||||
no problem: there's a match. But <span class="extract"><span class="extract-syntax">v2.9.3</span></span> or <span class="extract"><span class="extract-syntax">3.2.1</span></span> would not match.
|
||||
</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">wanted</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">wanted</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">segment</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">inter_architecture</span><span class="plain-syntax"> *</span><span class="identifier-syntax">arch</span><span class="plain-syntax"> = </span><a href="2-arc.html#SP5" class="function-link"><span class="function-syntax">Architectures::from_codename</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">segment</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">arch</span><span class="plain-syntax">) </span><span class="identifier-syntax">wanted_arch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">arch</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="identifier-syntax">ADD_TO_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">segment</span><span class="plain-syntax">), </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax">, </span><span class="identifier-syntax">segs</span><span class="plain-syntax">);</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">TargetVMs::versions_match</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">TargetVMs::versions_match</span></span>:<br/><a href="2-tvm.html#SP6_2">§6.2</a>, <a href="2-tvm.html#SP6_3">§6.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</span><span class="plain-syntax">, </span><span class="identifier-syntax">semantic_version_number</span><span class="plain-syntax"> </span><span class="identifier-syntax">wanted</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">VersionNumbers::is_null</span><span class="plain-syntax">(</span><span class="identifier-syntax">wanted</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">VersionNumberRanges::in_range</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">version</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VersionNumberRanges::compatibility_range</span><span class="plain-syntax">(</span><span class="identifier-syntax">wanted</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>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-tvm.html#SP7">§7</a> (twice).</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. </b>That just leaves how to tell whether or not a VM has exactly the right options,
|
||||
given that (a) there can be any number of them, including 0, and (b) they can
|
||||
be specified in any order. Speed is unimportant here: in effect we test whether
|
||||
two lists of options give rise to sets which are subsets of each other.
|
||||
</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">TargetVMs::options_match</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">TargetVMs::options_match</span></span>:<br/><a href="2-tvm.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</span><span class="plain-syntax">, </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">supplied</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">TargetVMs::options_match</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">TargetVMs::options_match</span></span>:<br/><a href="2-tvm.html#SP6_2">§6.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</span><span class="plain-syntax">, </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">supplied</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="2-tvm.html#SP8" class="function-link"><span class="function-syntax">TargetVMs::ll_of_text_is_subset</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">supplied</span><span class="plain-syntax">, </span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">format_options</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="2-tvm.html#SP8" class="function-link"><span class="function-syntax">TargetVMs::ll_of_text_is_subset</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">format_options</span><span class="plain-syntax">, </span><span class="identifier-syntax">supplied</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>
|
||||
|
@ -304,28 +402,24 @@ format,
|
|||
<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>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. Miscellaneous provisions. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. Architectural provisions. </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">TargetVMs::is_16_bit</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">TargetVMs::is_16_bit</span></span>:<br/>Compatibility - <a href="2-cmp.html#SP10_2">§10.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">TargetVMs::is_16_bit</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">TargetVMs::is_16_bit</span></span>:<br/><a href="2-tvm.html#SP13">§13</a><br/>Compatibility - <a href="2-cmp.html#SP10_2">§10.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</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">VM</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">"no VM"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-arc.html#SP6" class="function-link"><span class="function-syntax">Architectures::is_16_bit</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">architecture</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">TargetVMs::debug_enabled</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">TargetVMs::debug_enabled</span></span>:<br/>Compatibility - <a href="2-cmp.html#SP10_1">§10.1</a>, <a href="2-cmp.html#SP10_2">§10.2</a>, <a href="2-cmp.html#SP10_3">§10.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</span><span class="plain-syntax">) {</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">TargetVMs::debug_enabled</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">TargetVMs::debug_enabled</span></span>:<br/><a href="2-tvm.html#SP6_2">§6.2</a>, <a href="2-tvm.html#SP6_3">§6.3</a>, <a href="2-tvm.html#SP6_4">§6.4</a><br/>Compatibility - <a href="2-cmp.html#SP10_1">§10.1</a>, <a href="2-cmp.html#SP10_2">§10.2</a>, <a href="2-cmp.html#SP10_3">§10.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</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">VM</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">"no VM"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-arc.html#SP6" class="function-link"><span class="function-syntax">Architectures::debug_enabled</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">architecture</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">TargetVMs::supports_floating_point</span><span class="plain-syntax">(</span><span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</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">VM</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">"no VM"</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">VM</span><span class="plain-syntax">-></span><span class="element-syntax">supports_floating_point</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. </b>The limits on local variables per routine are different on each platform.
|
||||
On Z, the maximum is fixed at 15, but Glulx allows it to be set with an I6
|
||||
memory setting.
|
||||
</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">TargetVMs::allow_this_many_locals</span><span class="plain-syntax">(</span><span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</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="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">VM</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">"no VM"</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">VM</span><span class="plain-syntax">-></span><span class="element-syntax">max_locals</span><span class="plain-syntax"> >= </span><span class="constant-syntax">0</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">max_locals</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="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
|
@ -337,12 +431,21 @@ memory setting.
|
|||
<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>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. </b>When releasing a blorbed story file, the file extension depends on the
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. File extension provisions. </b>The normal or unblorbed file extension is just a hint for what would make a
|
||||
natural filename for our output: for example, <span class="extract"><span class="extract-syntax">py</span></span> would be a natural choice
|
||||
for a Python VN, if there were one.
|
||||
</p>
|
||||
|
||||
<p class="commentary">When releasing a blorbed story file, the file extension used depends on the
|
||||
story file wrapped inside. (This is a dubious idea, in the opinion of
|
||||
the author of Inform — should not "blorb" be one unified wrapper? — but
|
||||
that ship seems to have sailed.)
|
||||
</p>
|
||||
|
||||
<p class="commentary">Note that for VMs not using Inform 6, blorbing is essentially meaningless,
|
||||
and then the blorbed extension may be the empty text.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">TargetVMs::get_unblorbed_extension</span><span class="plain-syntax">(</span><span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</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">VM</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">"no VM"</span><span class="plain-syntax">);</span>
|
||||
|
@ -354,11 +457,16 @@ that ship seems to have sailed.)
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">VM_blorbed_extension</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>§12. </b>This is the format name as expressed in an iFiction bibliographic record,
|
||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. </b>This is the format name as expressed in an iFiction bibliographic record,
|
||||
where it's not meaningful to talk about debugging features or the number
|
||||
of bits, and where it's currently not possible to express a VM version number.
|
||||
</p>
|
||||
|
||||
<p class="commentary">It's also unclear what to write to this if we're compiling, say, an Inform 7
|
||||
source text into C: the Treaty of Babel is unclear on that. For now, we write
|
||||
<span class="extract"><span class="extract-syntax">Inform7+C</span></span>.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">TargetVMs::get_iFiction_format</span><span class="plain-syntax">(</span><span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</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">VM</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">"no VM"</span><span class="plain-syntax">);</span>
|
||||
|
@ -370,9 +478,13 @@ of bits, and where it's currently not possible to express a VM version number.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">architecture</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>§13. </b>Different VMs have different in-browser interpreters, which means that
|
||||
Inblorb needs to be given different release instructions for them. If the
|
||||
user doesn't specify any particular interpreter, she gets:
|
||||
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>§12. </b>Different VMs have different in-browser interpreters, which means that
|
||||
<a href="../inblorb/index.html" class="internal">inblorb</a> needs to be given different release instructions for them. If the
|
||||
user doesn't specify any particular interpreter, she gets the following.
|
||||
</p>
|
||||
|
||||
<p class="commentary">On some platforms this will make no sense, and in those cases the function
|
||||
will return the empty text.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -381,6 +493,35 @@ user doesn't specify any particular interpreter, she gets:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">default_browser_interpreter</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>§13. Family compatibility. </b>This is used when, for example, source text headings are said to be "for
|
||||
Glulx only". How are we to interpret that? The full story is at <a href="2-cmp.html" class="internal">Compatibility</a>,
|
||||
but here we do at least match whether a given <span class="extract"><span class="extract-syntax">VM</span></span> is, or is not, "Glulx"
|
||||
(or whatever may be).
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">TargetVMs::family</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">TargetVMs::family</span></span>:<br/>Compatibility - <a href="2-cmp.html#SP10_4">§10.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</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">VM</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">"no VM"</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">VM</span><span class="plain-syntax">-></span><span class="element-syntax">transpiler_family</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">TargetVMs::compatible_with</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">TargetVMs::compatible_with</span></span>:<br/>Compatibility - <a href="2-cmp.html#SP10_1">§10.1</a>, <a href="2-cmp.html#SP10_3">§10.3</a>, <a href="2-cmp.html#SP10_4">§10.4</a>, <a href="2-cmp.html#SP10_5">§10.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">token</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">Str::eq_insensitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">token</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Glulx"</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">Str::eq_insensitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">transpiler_family</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Inform6"</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="2-tvm.html#SP9" class="function-link"><span class="function-syntax">TargetVMs::is_16_bit</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VM</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">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">TRUE</span><span class="plain-syntax">;</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">Str::eq_insensitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">token</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Z-Machine"</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">Str::eq_insensitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">transpiler_family</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Inform6"</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="2-tvm.html#SP9" class="function-link"><span class="function-syntax">TargetVMs::is_16_bit</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VM</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">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">TRUE</span><span class="plain-syntax">;</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">Str::eq_insensitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">transpiler_family</span><span class="plain-syntax">, </span><span class="identifier-syntax">token</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>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-arc.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-am.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-arc.html">arc</a></li><li class="progresscurrent">tvm</li><li class="progresssection"><a href="2-cmp.html">cmp</a></li><li class="progressnext"><a href="2-cmp.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
|
|
@ -81,52 +81,69 @@ and where functions have names like <span class="extract"><span class="extract-s
|
|||
uses a module of utility functions called <a href="../../../inweb/docs/foundation-module/index.html" class="internal">foundation</a>.
|
||||
For more, see <a href="../../../inweb/docs/foundation-module/P-abgtf.html" class="internal">A Brief Guide to Foundation (in foundation)</a>.
|
||||
</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. Architecture versus VM. </b>The Inform 7 build process ultimately wants to make code for some target
|
||||
virtual machine — traditionally, the Z or Glulx machines. But it does this
|
||||
in two stages: first generating abstract Inter code, then further generating
|
||||
VM code from that.
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. Architecture versus VM. </b>The Inform 7 build process works in two stages: first it generates abstract
|
||||
Inter code, then it further generates "final code" from that.
|
||||
</p>
|
||||
|
||||
<p class="commentary">It's an appealing notion that this first stage might be VM-independent: that
|
||||
<p class="commentary">It's an appealing notion that this first stage might be universal: that
|
||||
is, that <a href="../inform7/index.html" class="internal">inform7</a> could generate the same Inter code regardless of the
|
||||
final VM, and that only the second stage would vary according to target.
|
||||
And this is nearly true, but not quite. There are (currently) two reasons
|
||||
why not:
|
||||
eventual build product needed, and that only the second stage would vary
|
||||
according to this.
|
||||
</p>
|
||||
|
||||
<p class="commentary">Which is very nearly true, but not quite. Here's why not:
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>(a) <a href="../inform7/index.html" class="internal">inform7</a> has to generate different code if integers are 16 rather
|
||||
than 32 bits wide, and
|
||||
</li><li>(b) it also generates different code with debugging enabled than without.
|
||||
</li><li>(b) kits of Inter code normally used in compilation make certain other
|
||||
architectural assumptions based on the integer size (for example, the
|
||||
assembly-language syntax and semantics are different in these cases);
|
||||
</li><li>(c) it also generates different code with debugging enabled than without.
|
||||
</li></ul>
|
||||
<p class="commentary">Reason (b) could be avoided, at some cost in complexity, but reason (a) is
|
||||
something we cannot sensibly avoid without making Inter a much higher-level
|
||||
<p class="commentary">Reason (c) could be avoided, at some cost in complexity, but reasons (a) and (b)
|
||||
are something we cannot sensibly avoid without making Inter a much higher-level
|
||||
form of bytecode. Instead, we have "architectures" for Inter: for example,
|
||||
32-bit with debugging enabled is the <span class="extract"><span class="extract-syntax">32d</span></span> architecture. See <a href="2-arc.html" class="internal">Architectures</a>;
|
||||
if ever we introduce a 64-bit VM, that will need new architectures, and
|
||||
this is where they would go.
|
||||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>A <a href="2-tvm.html#SP1" class="internal">target_vm</a> object, on the other hand, represents an actual choice of
|
||||
virtual machine. For example, Glulx is a <a href="2-tvm.html#SP1" class="internal">target_vm</a>. The compilation
|
||||
process thus involves a combination of both architecture and target:
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>A <a href="2-tvm.html#SP2" class="internal">target_vm</a> object, on the other hand, expresses the choices made at
|
||||
the second stage too. The term "VM" is traditional here, and stands for
|
||||
"virtual machine", because until 2021, Inform could only generate code which
|
||||
would ultimately run on virtual machines called Glulx and the Z-machine. But it
|
||||
can now, for example, also generate C.
|
||||
</p>
|
||||
|
||||
<p class="commentary">As a result, "VM" now has a more general meaning, and really means "form of
|
||||
final code generation". The Glulx format used to be specified by supplying the
|
||||
command-line option <span class="extract"><span class="extract-syntax">-format=ulx</span></span> to <a href="../inform7/index.html" class="internal">inform7</a> or <a href="../inter/index.html" class="internal">inter</a>: that still works,
|
||||
though it is deprecated, and <span class="extract"><span class="extract-syntax">-format=Inform6/32d</span></span> is better. But equally
|
||||
possible now would be <span class="extract"><span class="extract-syntax">-format=C/32d</span></span>. Here the target is a native executable
|
||||
to be compiled with a C compiler.
|
||||
</p>
|
||||
|
||||
<p class="commentary">As these new-style <span class="extract"><span class="extract-syntax">-format</span></span> options suggest, the compilation process thus
|
||||
involves a combination of both architecture and target:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">Source</span><span class="plain-syntax"> </span><span class="element-syntax">text</span><span class="plain-syntax"> -----------> </span><span class="element-syntax">Inter</span><span class="plain-syntax"> </span><span class="element-syntax">code</span><span class="plain-syntax"> --------------> </span><span class="element-syntax">Bytecode</span><span class="plain-syntax"> </span><span class="element-syntax">for</span>
|
||||
<span class="plain-syntax"> </span><span class="function-syntax">INFORM7</span><span class="plain-syntax"> </span><span class="element-syntax">for</span><span class="plain-syntax"> </span><span class="element-syntax">architecture</span><span class="plain-syntax"> </span><span class="element-syntax">via</span><span class="plain-syntax"> </span><span class="function-syntax">INFORM6</span><span class="plain-syntax"> </span><span class="element-syntax">target</span><span class="plain-syntax"> </span><span class="element-syntax">virtual</span><span class="plain-syntax"> </span><span class="element-syntax">machine</span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">depends</span><span class="plain-syntax"> </span><span class="element-syntax">on</span><span class="plain-syntax"> </span><span class="element-syntax">architecture</span><span class="plain-syntax">: </span><span class="element-syntax">depends</span><span class="plain-syntax"> </span><span class="element-syntax">on</span><span class="plain-syntax"> </span><span class="element-syntax">target</span><span class="plain-syntax">:</span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">Source</span><span class="plain-syntax"> </span><span class="element-syntax">text</span><span class="plain-syntax"> -----------> </span><span class="element-syntax">Inter</span><span class="plain-syntax"> </span><span class="element-syntax">code</span><span class="plain-syntax"> ----------------> </span><span class="element-syntax">Bytecode</span><span class="plain-syntax"> </span><span class="element-syntax">for</span>
|
||||
<span class="plain-syntax"> </span><span class="function-syntax">INFORM7</span><span class="plain-syntax"> </span><span class="element-syntax">via</span><span class="plain-syntax"> </span><span class="function-syntax">INFORM6</span><span class="plain-syntax"> </span><span class="element-syntax">target</span><span class="plain-syntax"> </span><span class="element-syntax">virtual</span><span class="plain-syntax"> </span><span class="element-syntax">machine</span>
|
||||
<span class="plain-syntax"> ----------------> </span><span class="element-syntax">Executable</span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">via</span><span class="plain-syntax"> </span><span class="function-syntax">CLANG</span><span class="plain-syntax">/</span><span class="function-syntax">GCC</span>
|
||||
<span class="plain-syntax"> ...</span>
|
||||
</pre>
|
||||
<p class="commentary">Each VM can be used with just one architecture: use the function
|
||||
<a href="2-tvm.html#SP12" class="internal">TargetVMs::get_architecture</a> to obtain this. It might seem reasonable
|
||||
to say that Glulx ought to be viable with both <span class="extract"><span class="extract-syntax">32</span></span> and <span class="extract"><span class="extract-syntax">32d</span></span> architectures,
|
||||
but in fact "Glulx" is not a single virtual machine but a family of them.
|
||||
A specific member of this family would be the <a href="2-tvm.html#SP1" class="internal">target_vm</a> representing
|
||||
Glulx version 3.1.2 with debugging enabled, and that can be used with the
|
||||
<span class="extract"><span class="extract-syntax">32d</span></span> but not the <span class="extract"><span class="extract-syntax">32</span></span> architecture.
|
||||
</p>
|
||||
|
||||
<p class="commentary">There can in principle be numerous VMs in any given family; see
|
||||
<a href="2-tvm.html#SP6" class="internal">TargetVMs::find_in_family</a> to obtain family members with given behaviour,
|
||||
and in general see <a href="2-tvm.html" class="internal">Target Virtual Machines</a> for more.
|
||||
<p class="commentary">Note that a single <a href="2-tvm.html#SP2" class="internal">target_vm</a> object can be used with just one architecture:
|
||||
use the function <a href="2-tvm.html#SP11" class="internal">TargetVMs::get_architecture</a> to obtain this. If a target supports
|
||||
multiple architectures, then there will be multiple <a href="2-tvm.html#SP2" class="internal">target_vm</a> objects for it,
|
||||
one for each architecture it supports. For example, the Glulx VM can be reached
|
||||
by <span class="extract"><span class="extract-syntax">Inform6/32</span></span> or <span class="extract"><span class="extract-syntax">Inform6/32d</span></span>. There can also be multiple versions: for example,
|
||||
<span class="extract"><span class="extract-syntax">Inform6/16/v8</span></span> is a valid target. The function <a href="2-tvm.html#SP6" class="internal">TargetVMs::find</a> finds the
|
||||
<a href="2-tvm.html#SP2" class="internal">target_vm</a> object associated with a given textual form like <span class="extract"><span class="extract-syntax">"C/32d"</span></span>, if
|
||||
the toolchain supports this.
|
||||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. Compatibility. </b>Not all software in the Inform stack — source text from the user, extensions,
|
||||
|
|
|
@ -89,7 +89,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">, </span><span class="reserved-syntax">target_vm</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../arch-module/2-cmp.html#SP11" class="function-link"><span class="function-syntax">Compatibility::test</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">VM</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><a href="../arch-module/2-tvm.html#SP4" class="function-link"><span class="function-syntax">TargetVMs::write</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">VM</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="../arch-module/2-tvm.html#SP5" class="function-link"><span class="function-syntax">TargetVMs::write</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">VM</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">"\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
|
|
@ -112,9 +112,24 @@ what the Inform UI apps typically call when the user clicks "Go":
|
|||
<pre class="ConsoleText-displayed-code all-displayed-code code-font">
|
||||
<span class="ConsoleText-plain-syntax"> </span><span class="ConsoleText-element-syntax">$</span><span class="ConsoleText-plain-syntax"> </span><span class="ConsoleText-function-syntax">inform7/Tangled/inform7</span><span class="ConsoleText-identifier-syntax"> -internal</span><span class="ConsoleText-plain-syntax"> I</span><span class="ConsoleText-identifier-syntax"> -external</span><span class="ConsoleText-plain-syntax"> E</span><span class="ConsoleText-identifier-syntax"> -project</span><span class="ConsoleText-plain-syntax"> P</span><span class="ConsoleText-identifier-syntax"> -format</span><span class="ConsoleText-plain-syntax">=F</span>
|
||||
</pre>
|
||||
<p class="commentary">for suitable pathnames <span class="extract"><span class="ConsoleText-extract-syntax">I</span></span>, <span class="extract"><span class="ConsoleText-extract-syntax">E</span></span>, <span class="extract"><span class="ConsoleText-extract-syntax">P</span></span> and a choice of <span class="extract"><span class="ConsoleText-extract-syntax">F</span></span>. To dispose of this
|
||||
first, <span class="extract"><span class="ConsoleText-extract-syntax">-format=ulx</span></span> tells Inform to compile to the Glulx story file, and
|
||||
<span class="extract"><span class="ConsoleText-extract-syntax">-format=z8</span></span> to (version 8 of) the Z-machine.
|
||||
<p class="commentary">for suitable pathnames <span class="extract"><span class="ConsoleText-extract-syntax">I</span></span>, <span class="extract"><span class="ConsoleText-extract-syntax">E</span></span>, <span class="extract"><span class="ConsoleText-extract-syntax">P</span></span> and a choice of <span class="extract"><span class="ConsoleText-extract-syntax">F</span></span>.
|
||||
</p>
|
||||
|
||||
<p class="commentary">The format <span class="extract"><span class="ConsoleText-extract-syntax">F</span></span> can have quite a complex syntax. It takes the form of a
|
||||
sequence of criteria divided by slashes. The first will be the name of the
|
||||
language which <a href="index.html" class="internal">inform7</a> is writing as its output; the second will be the
|
||||
architecture used. Thus, <span class="extract"><span class="ConsoleText-extract-syntax">inform6/32d</span></span> means "32-bit Inform 6 code with
|
||||
debugging enabled", and this in practice is what the Inform UI apps make
|
||||
when Glulx is the preferred virtual machine, as it is by default. But other
|
||||
alternatives are available at the command line, and it's also possible for
|
||||
<span class="extract"><span class="ConsoleText-extract-syntax">-format</span></span> to specify a semantic version number for the target, or some
|
||||
compilation options. See <a href="../arch-module/index.html" class="internal">arch</a> for a fuller description.
|
||||
</p>
|
||||
|
||||
<p class="commentary">In previous releases of Inform, <span class="extract"><span class="ConsoleText-extract-syntax">-format=F</span></span> had a cruder syntax in which only
|
||||
<span class="extract"><span class="ConsoleText-extract-syntax">-format=ulx</span></span>, <span class="extract"><span class="ConsoleText-extract-syntax">-format=z5</span></span> and <span class="extract"><span class="ConsoleText-extract-syntax">-format=z8</span></span> were allowed. Those are still
|
||||
recognised, but deprecated. Inform will print a warning about this and supply
|
||||
the equivalent modern notation if one is used.
|
||||
</p>
|
||||
|
||||
<p class="commentary">The project <span class="extract"><span class="ConsoleText-extract-syntax">P</span></span> is the directory holding the project to compile, such as
|
||||
|
|
|
@ -84,13 +84,13 @@ which take more than 1/1000th of the total running time.
|
|||
|
||||
<pre class="undisplayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">100.0% in inform7 run</span>
|
||||
<span class="plain-syntax"> 55.2% in compilation to Inter</span>
|
||||
<span class="plain-syntax"> 40.1% in </span><a href="../core-module/1-htc.html#SP9" class="internal">Sequence::undertake_queued_tasks</a>
|
||||
<span class="plain-syntax"> 3.4% in </span><a href="../assertions-module/2-ptmn.html#SP1" class="internal">MajorNodes::pre_pass</a>
|
||||
<span class="plain-syntax"> 2.6% in </span><a href="../assertions-module/2-ptmn.html#SP1" class="internal">MajorNodes::pass_1</a>
|
||||
<span class="plain-syntax"> 1.5% in </span><a href="../runtime-module/6-pi.html#SP1" class="internal">RTPhrasebook::compile_entries</a>
|
||||
<span class="plain-syntax"> 54.0% in compilation to Inter</span>
|
||||
<span class="plain-syntax"> 39.4% in </span><a href="../core-module/1-htc.html#SP9" class="internal">Sequence::undertake_queued_tasks</a>
|
||||
<span class="plain-syntax"> 3.3% in </span><a href="../assertions-module/2-ptmn.html#SP1" class="internal">MajorNodes::pre_pass</a>
|
||||
<span class="plain-syntax"> 2.5% in </span><a href="../assertions-module/2-ptmn.html#SP1" class="internal">MajorNodes::pass_1</a>
|
||||
<span class="plain-syntax"> 1.3% in </span><a href="../assertions-module/5-id.html#SP4" class="internal">ImperativeDefinitions::assess_all</a>
|
||||
<span class="plain-syntax"> 1.1% in </span><a href="../runtime-module/5-kc.html#SP10" class="internal">RTKindConstructors::compile</a>
|
||||
<span class="plain-syntax"> 1.3% in </span><a href="../runtime-module/6-pi.html#SP1" class="internal">RTPhrasebook::compile_entries</a>
|
||||
<span class="plain-syntax"> 1.2% in </span><a href="../runtime-module/5-kc.html#SP10" class="internal">RTKindConstructors::compile</a>
|
||||
<span class="plain-syntax"> 0.4% in </span><a href="../assertions-module/5-id.html#SP5" class="internal">ImperativeDefinitions::compile_first_block</a>
|
||||
<span class="plain-syntax"> 0.4% in </span><a href="../assertions-module/2-ptmn.html#SP1" class="internal">MajorNodes::pass_2</a>
|
||||
<span class="plain-syntax"> 0.4% in </span><a href="../core-module/1-htc.html#SP9" class="internal">Sequence::undertake_queued_tasks</a>
|
||||
|
@ -101,23 +101,23 @@ which take more than 1/1000th of the total running time.
|
|||
<span class="plain-syntax"> 0.1% in </span><a href="../runtime-module/5-kc.html#SP10_7" class="internal">RTKindConstructors::compile_permissions</a>
|
||||
<span class="plain-syntax"> 0.1% in </span><a href="../core-module/1-wtc.html#SP9" class="internal">Task::make_built_in_kind_constructors</a>
|
||||
<span class="plain-syntax"> 0.1% in </span><a href="../knowledge-module/5-tmw.html#SP3" class="internal">World::stages_II_and_III</a>
|
||||
<span class="plain-syntax"> 2.1% not specifically accounted for</span>
|
||||
<span class="plain-syntax"> 42.8% in running Inter pipeline</span>
|
||||
<span class="plain-syntax"> 10.9% in step preparation</span>
|
||||
<span class="plain-syntax"> 9.8% in inter step 7/14: consolidate-text</span>
|
||||
<span class="plain-syntax"> 8.1% in inter step 14/14: generate inform6 -> auto.inf</span>
|
||||
<span class="plain-syntax"> 8.0% in inter step 2/14: link</span>
|
||||
<span class="plain-syntax"> 1.5% in inter step 10/14: make-identifiers-unique</span>
|
||||
<span class="plain-syntax"> 0.4% in inter step 11/14: reconcile-verbs</span>
|
||||
<span class="plain-syntax"> 0.2% in inter step 13/14: eliminate-redundant-operations</span>
|
||||
<span class="plain-syntax"> 0.2% in inter step 6/14: assimilate</span>
|
||||
<span class="plain-syntax"> 0.2% in inter step 8/14: resolve-external-symbols</span>
|
||||
<span class="plain-syntax"> 0.2% in inter step 9/14: inspect-plugs</span>
|
||||
<span class="plain-syntax"> 0.1% in inter step 12/14: eliminate-redundant-labels</span>
|
||||
<span class="plain-syntax"> 0.1% in inter step 3/14: merge-template <- none</span>
|
||||
<span class="plain-syntax"> 0.1% in inter step 4/14: parse-linked-matter</span>
|
||||
<span class="plain-syntax"> 0.1% in inter step 5/14: resolve-conditional-compilation</span>
|
||||
<span class="plain-syntax"> 2.4% not specifically accounted for</span>
|
||||
<span class="plain-syntax"> 1.9% not specifically accounted for</span>
|
||||
<span class="plain-syntax"> 44.0% in running Inter pipeline</span>
|
||||
<span class="plain-syntax"> 11.6% in step preparation</span>
|
||||
<span class="plain-syntax"> 10.1% in inter step 7/15: consolidate-text</span>
|
||||
<span class="plain-syntax"> 8.1% in inter step 2/15: link</span>
|
||||
<span class="plain-syntax"> 7.8% in inter step 15/15: generate inform6 -> auto.inf</span>
|
||||
<span class="plain-syntax"> 1.6% in inter step 11/15: make-identifiers-unique</span>
|
||||
<span class="plain-syntax"> 0.4% in inter step 12/15: reconcile-verbs</span>
|
||||
<span class="plain-syntax"> 0.2% in inter step 10/15: detect-indirect-calls</span>
|
||||
<span class="plain-syntax"> 0.2% in inter step 14/15: eliminate-redundant-operations</span>
|
||||
<span class="plain-syntax"> 0.2% in inter step 6/15: assimilate</span>
|
||||
<span class="plain-syntax"> 0.2% in inter step 8/15: resolve-external-symbols</span>
|
||||
<span class="plain-syntax"> 0.2% in inter step 9/15: inspect-plugs</span>
|
||||
<span class="plain-syntax"> 0.1% in inter step 13/15: eliminate-redundant-labels</span>
|
||||
<span class="plain-syntax"> 0.1% in inter step 4/15: parse-linked-matter</span>
|
||||
<span class="plain-syntax"> 0.1% in inter step 5/15: resolve-conditional-compilation</span>
|
||||
<span class="plain-syntax"> 2.5% not specifically accounted for</span>
|
||||
<span class="plain-syntax"> 1.6% in supervisor</span>
|
||||
<span class="plain-syntax"> 0.3% not specifically accounted for</span>
|
||||
</pre>
|
||||
|
@ -128,75 +128,75 @@ represent less than 1/1000th of the total.
|
|||
</p>
|
||||
|
||||
<pre class="undisplayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">Total memory consumption was 399081K = 390 MB</span>
|
||||
<span class="plain-syntax">Total memory consumption was 383663K = 375 MB</span>
|
||||
|
||||
<span class="plain-syntax">60.3% was used for 1995520 objects, in 371144 frames in 301 x 800K = 240800K = 235 MB:</span>
|
||||
<span class="plain-syntax">61.5% was used for 1991443 objects, in 368767 frames in 295 x 800K = 236000K = 230 MB:</span>
|
||||
|
||||
<span class="plain-syntax"> 10.2% inter_tree_node_array 58 x 8192 = 475136 objects, 41813824 bytes</span>
|
||||
<span class="plain-syntax"> 7.0% text_stream_array 5128 x 100 = 512800 objects, 28880896 bytes</span>
|
||||
<span class="plain-syntax"> 4.2% linked_list 30846 objects, 17273760 bytes</span>
|
||||
<span class="plain-syntax"> 3.9% inter_symbol_array 139 x 1024 = 142336 objects, 15946080 bytes</span>
|
||||
<span class="plain-syntax"> 2.5% parse_node 129399 objects, 10351920 bytes</span>
|
||||
<span class="plain-syntax"> 10.6% inter_tree_node_array 58 x 8192 = 475136 objects, 41813824 bytes</span>
|
||||
<span class="plain-syntax"> 7.3% text_stream_array 5126 x 100 = 512600 objects, 28869632 bytes</span>
|
||||
<span class="plain-syntax"> 4.3% linked_list 30605 objects, 17138800 bytes</span>
|
||||
<span class="plain-syntax"> 4.0% inter_symbol_array 139 x 1024 = 142336 objects, 15946080 bytes</span>
|
||||
<span class="plain-syntax"> 2.6% parse_node 128478 objects, 10278240 bytes</span>
|
||||
<span class="plain-syntax"> 1.8% verb_conjugation 160 objects, 7425280 bytes</span>
|
||||
<span class="plain-syntax"> 1.3% parse_node_annotation_array 345 x 500 = 172500 objects, 5531040 bytes</span>
|
||||
<span class="plain-syntax"> 1.3% parse_node_annotation_array 343 x 500 = 171500 objects, 5498976 bytes</span>
|
||||
<span class="plain-syntax"> 0.8% pcalc_prop_array 25 x 1000 = 25000 objects, 3400800 bytes</span>
|
||||
<span class="plain-syntax"> 0.8% inter_name_array 69 x 1000 = 69000 objects, 3314208 bytes</span>
|
||||
<span class="plain-syntax"> 0.6% kind_array 68 x 1000 = 68000 objects, 2722176 bytes</span>
|
||||
<span class="plain-syntax"> 0.6% kind_array 67 x 1000 = 67000 objects, 2682144 bytes</span>
|
||||
<span class="plain-syntax"> 0.5% inter_name_generator_array 53 x 1000 = 53000 objects, 2121696 bytes</span>
|
||||
<span class="plain-syntax"> 0.4% inter_schema_token 13464 objects, 1938816 bytes</span>
|
||||
<span class="plain-syntax"> 0.4% inter_package 26562 objects, 1912464 bytes</span>
|
||||
<span class="plain-syntax"> 0.4% package_request 21138 objects, 1860144 bytes</span>
|
||||
<span class="plain-syntax"> 0.4% inter_schema_token 13430 objects, 1933920 bytes</span>
|
||||
<span class="plain-syntax"> 0.4% inter_package 26435 objects, 1903320 bytes</span>
|
||||
<span class="plain-syntax"> 0.4% package_request 20997 objects, 1847736 bytes</span>
|
||||
<span class="plain-syntax"> 0.4% vocabulary_entry_array 161 x 100 = 16100 objects, 1808352 bytes</span>
|
||||
<span class="plain-syntax"> 0.4% inter_symbols_table 26562 objects, 1699968 bytes</span>
|
||||
<span class="plain-syntax"> 0.3% dictionary 33230 objects, 1595040 bytes</span>
|
||||
<span class="plain-syntax"> 0.4% inter_symbols_table 26435 objects, 1691840 bytes</span>
|
||||
<span class="plain-syntax"> 0.4% dictionary 33115 objects, 1589520 bytes</span>
|
||||
<span class="plain-syntax"> 0.3% match_trie_array 11 x 1000 = 11000 objects, 1496352 bytes</span>
|
||||
<span class="plain-syntax"> 0.3% i6_schema_array 23 x 100 = 2300 objects, 1380736 bytes</span>
|
||||
<span class="plain-syntax"> 0.3% dict_entry_array 393 x 100 = 39300 objects, 1270176 bytes</span>
|
||||
<span class="plain-syntax"> 0.3% dict_entry_array 399 x 100 = 39900 objects, 1289568 bytes</span>
|
||||
<span class="plain-syntax"> 0.2% map_data 670 objects, 1125600 bytes</span>
|
||||
<span class="plain-syntax"> 0.2% id_body 940 objects, 1075360 bytes</span>
|
||||
<span class="plain-syntax"> 0.2% adjective_meaning 202 objects, 1000304 bytes</span>
|
||||
<span class="plain-syntax"> 0.2% excerpt_meaning 3099 objects, 966888 bytes</span>
|
||||
<span class="plain-syntax"> 0.2% id_body 898 objects, 1027312 bytes</span>
|
||||
<span class="plain-syntax"> 0.2% adjective_meaning 196 objects, 970592 bytes</span>
|
||||
<span class="plain-syntax"> 0.2% excerpt_meaning 3036 objects, 947232 bytes</span>
|
||||
<span class="plain-syntax"> 0.2% production 3872 objects, 898304 bytes</span>
|
||||
<span class="plain-syntax"> 0.2% ptoken 8382 objects, 871728 bytes</span>
|
||||
<span class="plain-syntax"> 0.2% grammatical_usage 3611 objects, 866640 bytes</span>
|
||||
<span class="plain-syntax"> 0.2% individual_form 2561 objects, 860496 bytes</span>
|
||||
<span class="plain-syntax"> 0.2% inter_schema_node 8666 objects, 831936 bytes</span>
|
||||
<span class="plain-syntax"> 0.2% grammatical_usage 3591 objects, 861840 bytes</span>
|
||||
<span class="plain-syntax"> 0.2% individual_form 2537 objects, 852432 bytes</span>
|
||||
<span class="plain-syntax"> 0.2% inter_schema_node 8647 objects, 830112 bytes</span>
|
||||
<span class="plain-syntax"> 0.1% unary_predicate_array 16 x 1000 = 16000 objects, 640512 bytes</span>
|
||||
<span class="plain-syntax"> 0.1% local_variable_array 47 x 100 = 4700 objects, 452704 bytes</span>
|
||||
<span class="plain-syntax"> 0.1% local_variable_array 46 x 100 = 4600 objects, 443072 bytes</span>
|
||||
<span class="plain-syntax"> ---- verb_usage 1128 objects, 388032 bytes</span>
|
||||
<span class="plain-syntax"> ---- scan_directory 94 objects, 388032 bytes</span>
|
||||
<span class="plain-syntax"> ---- rule 469 objects, 367696 bytes</span>
|
||||
<span class="plain-syntax"> ---- verb_form 386 objects, 345856 bytes</span>
|
||||
<span class="plain-syntax"> ---- noun 2380 objects, 285600 bytes</span>
|
||||
<span class="plain-syntax"> ---- compilation_subtask 3346 objects, 267680 bytes</span>
|
||||
<span class="plain-syntax"> ---- noun 2360 objects, 283200 bytes</span>
|
||||
<span class="plain-syntax"> ---- compilation_subtask 3338 objects, 267040 bytes</span>
|
||||
<span class="plain-syntax"> ---- inference_subject 665 objects, 260680 bytes</span>
|
||||
<span class="plain-syntax"> ---- inter_annotation_array 1 x 8192 objects, 196640 bytes</span>
|
||||
<span class="plain-syntax"> ---- binary_predicate 321 objects, 169488 bytes</span>
|
||||
<span class="plain-syntax"> ---- hierarchy_location 1108 objects, 168416 bytes</span>
|
||||
<span class="plain-syntax"> ---- linguistic_stock_item 3316 objects, 159168 bytes</span>
|
||||
<span class="plain-syntax"> ---- hierarchy_location 1103 objects, 167656 bytes</span>
|
||||
<span class="plain-syntax"> ---- linguistic_stock_item 3292 objects, 158016 bytes</span>
|
||||
<span class="plain-syntax"> ---- rule_family_data 400 objects, 147200 bytes</span>
|
||||
<span class="plain-syntax"> ---- nonterminal 760 objects, 139840 bytes</span>
|
||||
<span class="plain-syntax"> ---- nascent_array 2126 objects, 136064 bytes</span>
|
||||
<span class="plain-syntax"> ---- nascent_array 2104 objects, 134656 bytes</span>
|
||||
<span class="plain-syntax"> ---- documentation_ref 1273 objects, 112024 bytes</span>
|
||||
<span class="plain-syntax"> ---- inference 1703 objects, 108992 bytes</span>
|
||||
<span class="plain-syntax"> ---- imperative_defn 1376 objects, 99072 bytes</span>
|
||||
<span class="plain-syntax"> ---- inter_tree 6 objects, 98064 bytes</span>
|
||||
<span class="plain-syntax"> ---- noun_usage 2402 objects, 96080 bytes</span>
|
||||
<span class="plain-syntax"> ---- inter_tree 6 objects, 98304 bytes</span>
|
||||
<span class="plain-syntax"> ---- anl_entry_array 2 x 1000 = 2000 objects, 96064 bytes</span>
|
||||
<span class="plain-syntax"> ---- imperative_defn 1334 objects, 96048 bytes</span>
|
||||
<span class="plain-syntax"> ---- noun_usage 2382 objects, 95280 bytes</span>
|
||||
<span class="plain-syntax"> ---- preposition 273 objects, 87360 bytes</span>
|
||||
<span class="plain-syntax"> ---- lexical_cluster 2517 objects, 80544 bytes</span>
|
||||
<span class="plain-syntax"> ---- pcalc_term_array 2 x 1000 = 2000 objects, 80064 bytes</span>
|
||||
<span class="plain-syntax"> ---- lexical_cluster 2493 objects, 79776 bytes</span>
|
||||
<span class="plain-syntax"> ---- kind_variable_declaration 1652 objects, 79296 bytes</span>
|
||||
<span class="plain-syntax"> ---- inter_schema 1508 objects, 72384 bytes</span>
|
||||
<span class="plain-syntax"> ---- inter_schema 1503 objects, 72144 bytes</span>
|
||||
<span class="plain-syntax"> ---- label_namespace 1468 objects, 70464 bytes</span>
|
||||
<span class="plain-syntax"> ---- rulebook 407 objects, 68376 bytes</span>
|
||||
<span class="plain-syntax"> ---- spatial_data 670 objects, 64320 bytes</span>
|
||||
<span class="plain-syntax"> ---- kind_macro_definition 9 objects, 62280 bytes</span>
|
||||
<span class="plain-syntax"> ---- booking 860 objects, 61920 bytes</span>
|
||||
<span class="plain-syntax"> ---- scenes_rcd_data 1880 objects, 60160 bytes</span>
|
||||
<span class="plain-syntax"> ---- actions_rcd_data 1880 objects, 60160 bytes</span>
|
||||
<span class="plain-syntax"> ---- command_grammar 130 objects, 58240 bytes</span>
|
||||
<span class="plain-syntax"> ---- kind_constructor 77 objects, 57904 bytes</span>
|
||||
<span class="plain-syntax"> ---- actions_rcd_data 1796 objects, 57472 bytes</span>
|
||||
<span class="plain-syntax"> ---- scenes_rcd_data 1796 objects, 57472 bytes</span>
|
||||
<span class="plain-syntax"> ---- table 7 objects, 56672 bytes</span>
|
||||
<span class="plain-syntax"> ---- pcalc_func_array 1 x 1000 objects, 56032 bytes</span>
|
||||
<span class="plain-syntax"> ---- cg_line 230 objects, 53360 bytes</span>
|
||||
|
@ -204,17 +204,17 @@ represent less than 1/1000th of the total.
|
|||
<span class="plain-syntax"> ---- property_inference_data 1315 objects, 52600 bytes</span>
|
||||
<span class="plain-syntax"> ---- response_message 407 objects, 52096 bytes</span>
|
||||
<span class="plain-syntax"> ---- ap_clause_array 2 x 400 = 800 objects, 51264 bytes</span>
|
||||
<span class="plain-syntax"> ---- inter_node_list 769 objects, 43064 bytes</span>
|
||||
<span class="plain-syntax"> ---- inter_node_list 765 objects, 42840 bytes</span>
|
||||
<span class="plain-syntax"> ---- text_substitution 436 objects, 41856 bytes</span>
|
||||
<span class="plain-syntax"> ---- anl_clause_array 1 x 1000 objects, 40032 bytes</span>
|
||||
<span class="plain-syntax"> ---- activity_list_array 1 x 1000 objects, 40032 bytes</span>
|
||||
<span class="plain-syntax"> ---- to_family_data 496 objects, 39680 bytes</span>
|
||||
<span class="plain-syntax"> ---- shared_variable_access_list_array 12 x 100 = 1200 objects, 38784 bytes</span>
|
||||
<span class="plain-syntax"> ---- parsing_data 670 objects, 37520 bytes</span>
|
||||
<span class="plain-syntax"> ---- heading 198 objects, 36432 bytes</span>
|
||||
<span class="plain-syntax"> ---- to_family_data 458 objects, 36640 bytes</span>
|
||||
<span class="plain-syntax"> ---- heading 195 objects, 35880 bytes</span>
|
||||
<span class="plain-syntax"> ---- production_list 617 objects, 34552 bytes</span>
|
||||
<span class="plain-syntax"> ---- regions_data 670 objects, 32160 bytes</span>
|
||||
<span class="plain-syntax"> ---- counting_data 670 objects, 32160 bytes</span>
|
||||
<span class="plain-syntax"> ---- regions_data 670 objects, 32160 bytes</span>
|
||||
<span class="plain-syntax"> ---- HTML_tag_array 1 x 1000 objects, 32032 bytes</span>
|
||||
<span class="plain-syntax"> ---- property_permission 96 objects, 31488 bytes</span>
|
||||
<span class="plain-syntax"> ---- stack_frame_box 304 objects, 29184 bytes</span>
|
||||
|
@ -226,7 +226,7 @@ represent less than 1/1000th of the total.
|
|||
<span class="plain-syntax"> ---- nonlocal_variable 93 objects, 20088 bytes</span>
|
||||
<span class="plain-syntax"> ---- property 146 objects, 19856 bytes</span>
|
||||
<span class="plain-syntax"> ---- timed_rules_rfd_data 400 objects, 19200 bytes</span>
|
||||
<span class="plain-syntax"> ---- method 395 objects, 18960 bytes</span>
|
||||
<span class="plain-syntax"> ---- method 394 objects, 18912 bytes</span>
|
||||
<span class="plain-syntax"> ---- pcalc_prop_deferral 86 objects, 17888 bytes</span>
|
||||
<span class="plain-syntax"> ---- instance 167 objects, 17368 bytes</span>
|
||||
<span class="plain-syntax"> ---- parse_node_tree 20 objects, 17280 bytes</span>
|
||||
|
@ -234,15 +234,14 @@ represent less than 1/1000th of the total.
|
|||
<span class="plain-syntax"> ---- linked_list_item_array 1 x 1000 objects, 16032 bytes</span>
|
||||
<span class="plain-syntax"> ---- action_name_list_array 1 x 1000 objects, 16032 bytes</span>
|
||||
<span class="plain-syntax"> ---- match_avinue_array 1 x 1000 objects, 16032 bytes</span>
|
||||
<span class="plain-syntax"> ---- to_phrase_request 59 objects, 15576 bytes</span>
|
||||
<span class="plain-syntax"> ---- adjective 137 objects, 15344 bytes</span>
|
||||
<span class="plain-syntax"> ---- adjective 133 objects, 14896 bytes</span>
|
||||
<span class="plain-syntax"> ---- to_phrase_request 55 objects, 14520 bytes</span>
|
||||
<span class="plain-syntax"> ---- booking_list 407 objects, 13024 bytes</span>
|
||||
<span class="plain-syntax"> ---- adjective_iname_holder 320 objects, 12800 bytes</span>
|
||||
<span class="plain-syntax"> ---- adjective_iname_holder 314 objects, 12560 bytes</span>
|
||||
<span class="plain-syntax"> ---- pathname 294 objects, 11760 bytes</span>
|
||||
<span class="plain-syntax"> ---- uniqueness_count 452 objects, 10848 bytes</span>
|
||||
<span class="plain-syntax"> ---- stopwatch_timer 112 objects, 8960 bytes</span>
|
||||
<span class="plain-syntax"> ---- filename 209 objects, 8360 bytes</span>
|
||||
<span class="plain-syntax"> ---- equation_node 68 objects, 7616 bytes</span>
|
||||
<span class="plain-syntax"> ---- uniqueness_count 453 objects, 10872 bytes</span>
|
||||
<span class="plain-syntax"> ---- stopwatch_timer 113 objects, 9040 bytes</span>
|
||||
<span class="plain-syntax"> ---- filename 212 objects, 8480 bytes</span>
|
||||
<span class="plain-syntax"> ---- hierarchy_attachment_point 77 objects, 7392 bytes</span>
|
||||
<span class="plain-syntax"> ---- understanding_item_array 3 x 100 = 300 objects, 7296 bytes</span>
|
||||
<span class="plain-syntax"> ---- shared_variable_array 1 x 100 objects, 7232 bytes</span>
|
||||
|
@ -250,72 +249,70 @@ represent less than 1/1000th of the total.
|
|||
<span class="plain-syntax"> ---- verb 108 objects, 6048 bytes</span>
|
||||
<span class="plain-syntax"> ---- text_literal_holder 144 objects, 5760 bytes</span>
|
||||
<span class="plain-syntax"> ---- heading_tree 20 objects, 5440 bytes</span>
|
||||
<span class="plain-syntax"> ---- inbuild_work 79 objects, 5056 bytes</span>
|
||||
<span class="plain-syntax"> ---- inbuild_work 82 objects, 5248 bytes</span>
|
||||
<span class="plain-syntax"> ---- build_vertex 44 objects, 4928 bytes</span>
|
||||
<span class="plain-syntax"> ---- explicit_action_array 1 x 100 objects, 4832 bytes</span>
|
||||
<span class="plain-syntax"> ---- value_property_data 84 objects, 4704 bytes</span>
|
||||
<span class="plain-syntax"> ---- parsing_pp_data 96 objects, 4608 bytes</span>
|
||||
<span class="plain-syntax"> ---- build_vertex 41 objects, 4592 bytes</span>
|
||||
<span class="plain-syntax"> ---- inbuild_edition 55 objects, 3960 bytes</span>
|
||||
<span class="plain-syntax"> ---- inbuild_edition 58 objects, 4176 bytes</span>
|
||||
<span class="plain-syntax"> ---- inbuild_copy 39 objects, 4056 bytes</span>
|
||||
<span class="plain-syntax"> ---- activity 35 objects, 3920 bytes</span>
|
||||
<span class="plain-syntax"> ---- submodule_request 94 objects, 3760 bytes</span>
|
||||
<span class="plain-syntax"> ---- inbuild_copy 36 objects, 3744 bytes</span>
|
||||
<span class="plain-syntax"> ---- parse_node_annotation_type 114 objects, 3648 bytes</span>
|
||||
<span class="plain-syntax"> ---- command_line_switch 43 objects, 3440 bytes</span>
|
||||
<span class="plain-syntax"> ---- compatibility_specification 70 objects, 3360 bytes</span>
|
||||
<span class="plain-syntax"> ---- property_setting_bp_data 84 objects, 3360 bytes</span>
|
||||
<span class="plain-syntax"> ---- method_set 103 objects, 3296 bytes</span>
|
||||
<span class="plain-syntax"> ---- kind_constructor_comparison_schema_array 1 x 100 objects, 3232 bytes</span>
|
||||
<span class="plain-syntax"> ---- compatibility_specification 67 objects, 3216 bytes</span>
|
||||
<span class="plain-syntax"> ---- inform_extension 19 objects, 3192 bytes</span>
|
||||
<span class="plain-syntax"> ---- definition 44 objects, 3168 bytes</span>
|
||||
<span class="plain-syntax"> ---- either_or_property_data 62 objects, 2976 bytes</span>
|
||||
<span class="plain-syntax"> ---- definition 40 objects, 2880 bytes</span>
|
||||
<span class="plain-syntax"> ---- use_option 29 objects, 2552 bytes</span>
|
||||
<span class="plain-syntax"> ---- part_of_inference_data 79 objects, 2528 bytes</span>
|
||||
<span class="plain-syntax"> ---- parentage_inference_data 79 objects, 2528 bytes</span>
|
||||
<span class="plain-syntax"> ---- part_of_inference_data 79 objects, 2528 bytes</span>
|
||||
<span class="plain-syntax"> ---- kind_constructor_instance_array 1 x 100 objects, 2432 bytes</span>
|
||||
<span class="plain-syntax"> ---- kind_constructor_casting_rule_array 1 x 100 objects, 2432 bytes</span>
|
||||
<span class="plain-syntax"> ---- inter_construct 30 objects, 2400 bytes</span>
|
||||
<span class="plain-syntax"> ---- equation_symbol 30 objects, 2400 bytes</span>
|
||||
<span class="plain-syntax"> ---- semver_range 22 objects, 2288 bytes</span>
|
||||
<span class="plain-syntax"> ---- scene 1 object, 2096 bytes</span>
|
||||
<span class="plain-syntax"> ---- pipeline_step 14 objects, 1680 bytes</span>
|
||||
<span class="plain-syntax"> ---- pipeline_step 15 objects, 2040 bytes</span>
|
||||
<span class="plain-syntax"> ---- pronoun_usage 42 objects, 1680 bytes</span>
|
||||
<span class="plain-syntax"> ---- table_contribution_array 1 x 100 objects, 1632 bytes</span>
|
||||
<span class="plain-syntax"> ---- plugin 25 objects, 1600 bytes</span>
|
||||
<span class="plain-syntax"> ---- cached_kind_declaration 39 objects, 1560 bytes</span>
|
||||
<span class="plain-syntax"> ---- cached_kind_declaration 37 objects, 1480 bytes</span>
|
||||
<span class="plain-syntax"> ---- noun_filter_token 22 objects, 1408 bytes</span>
|
||||
<span class="plain-syntax"> ---- build_script 44 objects, 1408 bytes</span>
|
||||
<span class="plain-syntax"> ---- inter_tree_location_list 34 objects, 1360 bytes</span>
|
||||
<span class="plain-syntax"> ---- inter_annotation_form 34 objects, 1360 bytes</span>
|
||||
<span class="plain-syntax"> ---- special_meaning_holder 33 objects, 1320 bytes</span>
|
||||
<span class="plain-syntax"> ---- build_script 41 objects, 1312 bytes</span>
|
||||
<span class="plain-syntax"> ---- constant_phrase 20 objects, 1280 bytes</span>
|
||||
<span class="plain-syntax"> ---- table_column 16 objects, 1280 bytes</span>
|
||||
<span class="plain-syntax"> ---- invocation_options_array 1 x 100 objects, 1224 bytes</span>
|
||||
<span class="plain-syntax"> ---- direction_inference_data 30 objects, 1200 bytes</span>
|
||||
<span class="plain-syntax"> ---- tree_inventory_item 28 objects, 1120 bytes</span>
|
||||
<span class="plain-syntax"> ---- runtime_kind_structure 13 objects, 1040 bytes</span>
|
||||
<span class="plain-syntax"> ---- target_vm 8 objects, 1088 bytes</span>
|
||||
<span class="plain-syntax"> ---- quantifier 16 objects, 1024 bytes</span>
|
||||
<span class="plain-syntax"> ---- submodule_identity 30 objects, 960 bytes</span>
|
||||
<span class="plain-syntax"> ---- named_rulebook_outcome 15 objects, 960 bytes</span>
|
||||
<span class="plain-syntax"> ---- pipeline_stage 19 objects, 912 bytes</span>
|
||||
<span class="plain-syntax"> ---- pipeline_stage 20 objects, 960 bytes</span>
|
||||
<span class="plain-syntax"> ---- code_generation 1 object, 888 bytes</span>
|
||||
<span class="plain-syntax"> ---- inbuild_requirement 22 objects, 880 bytes</span>
|
||||
<span class="plain-syntax"> ---- code_generation 1 object, 864 bytes</span>
|
||||
<span class="plain-syntax"> ---- runtime_kind_structure 11 objects, 880 bytes</span>
|
||||
<span class="plain-syntax"> ---- generated_segment 27 objects, 864 bytes</span>
|
||||
<span class="plain-syntax"> ---- control_structure_phrase 12 objects, 864 bytes</span>
|
||||
<span class="plain-syntax"> ---- cached_understanding 21 objects, 840 bytes</span>
|
||||
<span class="plain-syntax"> ---- phrase_option_array 1 x 100 objects, 824 bytes</span>
|
||||
<span class="plain-syntax"> ---- target_vm 6 objects, 816 bytes</span>
|
||||
<span class="plain-syntax"> ---- inter_data_type 14 objects, 784 bytes</span>
|
||||
<span class="plain-syntax"> ---- internal_test 15 objects, 720 bytes</span>
|
||||
<span class="plain-syntax"> ---- inform_language 6 objects, 672 bytes</span>
|
||||
<span class="plain-syntax"> ---- relation_guard 5 objects, 640 bytes</span>
|
||||
<span class="plain-syntax"> ---- I6T_intervention 8 objects, 640 bytes</span>
|
||||
<span class="plain-syntax"> ---- relation_guard 5 objects, 640 bytes</span>
|
||||
<span class="plain-syntax"> ---- inter_warehouse_room 10 objects, 640 bytes</span>
|
||||
<span class="plain-syntax"> ---- inbuild_search_result 15 objects, 600 bytes</span>
|
||||
<span class="plain-syntax"> ---- rulebook_outcome 17 objects, 544 bytes</span>
|
||||
<span class="plain-syntax"> ---- small_word_set 11 objects, 528 bytes</span>
|
||||
<span class="plain-syntax"> ---- inform_kit 5 objects, 520 bytes</span>
|
||||
<span class="plain-syntax"> ---- implication 13 objects, 520 bytes</span>
|
||||
<span class="plain-syntax"> ---- equation 4 objects, 480 bytes</span>
|
||||
<span class="plain-syntax"> ---- inform_pipeline 8 objects, 512 bytes</span>
|
||||
<span class="plain-syntax"> ---- inference_family 11 objects, 440 bytes</span>
|
||||
<span class="plain-syntax"> ---- i6_memory_setting 13 objects, 416 bytes</span>
|
||||
<span class="plain-syntax"> ---- module_package 10 objects, 400 bytes</span>
|
||||
|
@ -326,28 +323,27 @@ represent less than 1/1000th of the total.
|
|||
<span class="plain-syntax"> ---- door_dir_notice 5 objects, 320 bytes</span>
|
||||
<span class="plain-syntax"> ---- pronoun 8 objects, 320 bytes</span>
|
||||
<span class="plain-syntax"> ---- grammatical_category 8 objects, 320 bytes</span>
|
||||
<span class="plain-syntax"> ---- inform_pipeline 5 objects, 320 bytes</span>
|
||||
<span class="plain-syntax"> ---- tree_inventory 1 object, 312 bytes</span>
|
||||
<span class="plain-syntax"> ---- build_step 4 objects, 288 bytes</span>
|
||||
<span class="plain-syntax"> ---- up_family 9 objects, 288 bytes</span>
|
||||
<span class="plain-syntax"> ---- compilation_unit 5 objects, 280 bytes</span>
|
||||
<span class="plain-syntax"> ---- contents_entry 7 objects, 280 bytes</span>
|
||||
<span class="plain-syntax"> ---- build_step 4 objects, 288 bytes</span>
|
||||
<span class="plain-syntax"> ---- explicit_bp_data 5 objects, 280 bytes</span>
|
||||
<span class="plain-syntax"> ---- door_to_notice 5 objects, 280 bytes</span>
|
||||
<span class="plain-syntax"> ---- compilation_unit 5 objects, 280 bytes</span>
|
||||
<span class="plain-syntax"> ---- contents_entry 7 objects, 280 bytes</span>
|
||||
<span class="plain-syntax"> ---- verb_usage_tier 5 objects, 240 bytes</span>
|
||||
<span class="plain-syntax"> ---- adjective_meaning_family 7 objects, 224 bytes</span>
|
||||
<span class="plain-syntax"> ---- test_scenario 1 object, 216 bytes</span>
|
||||
<span class="plain-syntax"> ---- release_instructions 1 object, 208 bytes</span>
|
||||
<span class="plain-syntax"> ---- code_generation_target 5 objects, 200 bytes</span>
|
||||
<span class="plain-syntax"> ---- build_skill 5 objects, 200 bytes</span>
|
||||
<span class="plain-syntax"> ---- plural_dictionary_entry 4 objects, 192 bytes</span>
|
||||
<span class="plain-syntax"> ---- kit_dependency 4 objects, 192 bytes</span>
|
||||
<span class="plain-syntax"> ---- plural_dictionary_entry 4 objects, 192 bytes</span>
|
||||
<span class="plain-syntax"> ---- inform_project 1 object, 176 bytes</span>
|
||||
<span class="plain-syntax"> ---- kov_value_stick 3 objects, 168 bytes</span>
|
||||
<span class="plain-syntax"> ---- imperative_defn_family 4 objects, 160 bytes</span>
|
||||
<span class="plain-syntax"> ---- inter_architecture 4 objects, 160 bytes</span>
|
||||
<span class="plain-syntax"> ---- inference_subject_family 5 objects, 160 bytes</span>
|
||||
<span class="plain-syntax"> ---- link_instruction 4 objects, 160 bytes</span>
|
||||
<span class="plain-syntax"> ---- inference_subject_family 5 objects, 160 bytes</span>
|
||||
<span class="plain-syntax"> ---- inter_architecture 4 objects, 160 bytes</span>
|
||||
<span class="plain-syntax"> ---- codegen_pipeline 1 object, 128 bytes</span>
|
||||
<span class="plain-syntax"> ---- element_activation 4 objects, 128 bytes</span>
|
||||
<span class="plain-syntax"> ---- inbuild_nest 3 objects, 120 bytes</span>
|
||||
|
@ -356,36 +352,37 @@ represent less than 1/1000th of the total.
|
|||
<span class="plain-syntax"> ---- compile_task_data 1 object, 80 bytes</span>
|
||||
<span class="plain-syntax"> ---- article 2 objects, 80 bytes</span>
|
||||
<span class="plain-syntax"> ---- group_together_function 2 objects, 80 bytes</span>
|
||||
<span class="plain-syntax"> ---- build_methodology 1 object, 56 bytes</span>
|
||||
<span class="plain-syntax"> ---- inter_warehouse 1 object, 56 bytes</span>
|
||||
<span class="plain-syntax"> ---- build_methodology 1 object, 56 bytes</span>
|
||||
<span class="plain-syntax"> ---- figures_data 1 object, 56 bytes</span>
|
||||
<span class="plain-syntax"> ---- star_invention 1 object, 48 bytes</span>
|
||||
<span class="plain-syntax"> ---- HTML_file_state 1 object, 48 bytes</span>
|
||||
<span class="plain-syntax"> ---- star_invention 1 object, 48 bytes</span>
|
||||
<span class="plain-syntax"> ---- loop_over_scope 1 object, 40 bytes</span>
|
||||
<span class="plain-syntax"> ---- kind_template_definition 1 object, 40 bytes</span>
|
||||
<span class="plain-syntax"> ---- by_function_bp_data 1 object, 40 bytes</span>
|
||||
<span class="plain-syntax"> ---- loop_over_scope 1 object, 40 bytes</span>
|
||||
<span class="plain-syntax"> ---- I6_generation_data 1 object, 24 bytes</span>
|
||||
|
||||
<span class="plain-syntax">39.6% was used for memory not allocated for objects:</span>
|
||||
<span class="plain-syntax">38.4% was used for memory not allocated for objects:</span>
|
||||
|
||||
<span class="plain-syntax"> 21.1% text stream storage 86233212 bytes in 530551 claims</span>
|
||||
<span class="plain-syntax"> 4.4% dictionary storage 18153984 bytes in 33230 claims</span>
|
||||
<span class="plain-syntax"> 19.1% text stream storage 75429500 bytes in 530079 claims</span>
|
||||
<span class="plain-syntax"> 4.6% dictionary storage 18098176 bytes in 33115 claims</span>
|
||||
<span class="plain-syntax"> ---- sorting 744 bytes in 3 claims</span>
|
||||
<span class="plain-syntax"> 1.7% source text 7200000 bytes in 3 claims</span>
|
||||
<span class="plain-syntax"> 2.6% source text details 10800000 bytes in 2 claims</span>
|
||||
<span class="plain-syntax"> 1.8% source text 7200000 bytes in 3 claims</span>
|
||||
<span class="plain-syntax"> 2.7% source text details 10800000 bytes in 2 claims</span>
|
||||
<span class="plain-syntax"> ---- documentation fragments 262144 bytes in 1 claim</span>
|
||||
<span class="plain-syntax"> ---- linguistic stock array 81920 bytes in 2 claims</span>
|
||||
<span class="plain-syntax"> ---- small word set array 105600 bytes in 22 claims</span>
|
||||
<span class="plain-syntax"> 1.0% inter symbols storage 4170224 bytes in 27665 claims</span>
|
||||
<span class="plain-syntax"> 4.1% inter bytecode storage 16802808 bytes in 14 claims</span>
|
||||
<span class="plain-syntax"> 3.9% inter links storage 16174208 bytes in 266 claims</span>
|
||||
<span class="plain-syntax"> 1.0% inter symbols storage 4157936 bytes in 27546 claims</span>
|
||||
<span class="plain-syntax"> 4.2% inter bytecode storage 16802804 bytes in 14 claims</span>
|
||||
<span class="plain-syntax"> 4.1% inter links storage 16174208 bytes in 266 claims</span>
|
||||
<span class="plain-syntax"> ---- inter tree location list storage 191232 bytes in 32 claims</span>
|
||||
<span class="plain-syntax"> 0.4% instance-of-kind counting 1695204 bytes in 1 claim</span>
|
||||
<span class="plain-syntax"> ---- compilation workspace for objects 21856 bytes in 25 claims</span>
|
||||
<span class="plain-syntax"> ---- lists for type-checking invocations 16000 bytes in 1 claim</span>
|
||||
<span class="plain-syntax"> ---- code generation workspace for objects 9648 bytes in 9 claims</span>
|
||||
<span class="plain-syntax"> ---- emitter array storage 161920 bytes in 2064 claims</span>
|
||||
<span class="plain-syntax"> ---- code generation workspace for objects 9600 bytes in 9 claims</span>
|
||||
<span class="plain-syntax"> ---- emitter array storage 160512 bytes in 2042 claims</span>
|
||||
|
||||
<span class="plain-syntax">18.7% was overhead - 76758888 bytes = 74959K = 73 MB</span>
|
||||
<span class="plain-syntax">18.4% was overhead - 72309928 bytes = 70615K = 68 MB</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. Preform grammar. </b>The full annotated description of the Preform grammar (see <a href="../words-module/4-ap.html" class="internal">About Preform (in words)</a>),
|
||||
with optimisation details and hit/miss statistics added, is also long: it's
|
||||
|
@ -394,31 +391,31 @@ sample, showing the nonterminal used to parse literals in Inform 7 source text:
|
|||
</p>
|
||||
|
||||
<pre class="undisplayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"><s-literal> hits 2097/23838 nti 14 constraint (none) extremes [1, infinity)</span>
|
||||
<span class="plain-syntax"><s-literal> hits 2075/23610 nti 14 constraint (none) extremes [1, infinity)</span>
|
||||
<span class="plain-syntax"> English:</span>
|
||||
<span class="plain-syntax"> (@1)<cardinal-number>=1 </span>
|
||||
<span class="plain-syntax"> (hits 171/171) (matched: '100') constraint CS = {r0} extremes [1, 1]</span>
|
||||
<span class="plain-syntax"> (hits 160/160) (matched: '100') constraint CS = {r0} extremes [1, 1]</span>
|
||||
<span class="plain-syntax"> (@1)minus (@2)<cardinal-number>=1 </span>
|
||||
<span class="plain-syntax"> (hits 0/1806) constraint DS = {14} extremes [2, 2]</span>
|
||||
<span class="plain-syntax"> (hits 0/1798) constraint DS = {14} extremes [2, 2]</span>
|
||||
<span class="plain-syntax"> (@1)<quoted-text>=1 (@2)( (@3)<response-letter>=2 (@4)) </span>
|
||||
<span class="plain-syntax"> (hits 273/830) (matched: '"[current item from the multiple object list]: [run paragraph on]" ( a )') constraint DS = {14} extremes [4, 4]</span>
|
||||
<span class="plain-syntax"> (@1)<quoted-text>=1 </span>
|
||||
<span class="plain-syntax"> (hits 1564/5543) (matched: 'Represents geographical locations, both indoor</span>
|
||||
<span class="plain-syntax"> (hits 1564/5532) (matched: 'Represents geographical locations, both indoor</span>
|
||||
<span class="plain-syntax"> and outdoor, which are not necessarily areas in a building. A player in one</span>
|
||||
<span class="plain-syntax"> room is mostly unable to sense, or interact with, anything in a different room.</span>
|
||||
<span class="plain-syntax"> Rooms are arranged in a map.') constraint (none) extremes [1, 1]</span>
|
||||
<span class="plain-syntax"> <s-literal-real-number>=1 </span>
|
||||
<span class="plain-syntax"> (hits 11/9911) (matched: 'plus infinity') constraint (none) extremes [1, infinity)</span>
|
||||
<span class="plain-syntax"> (hits 0/9808) constraint (none) extremes [1, infinity)</span>
|
||||
<span class="plain-syntax"> (@1)<s-literal-truth-state>=1 </span>
|
||||
<span class="plain-syntax"> (hits 78/196) (matched: 'false') constraint CS = {8} extremes [1, 1]</span>
|
||||
<span class="plain-syntax"> <s-literal-list>=1 </span>
|
||||
<span class="plain-syntax"> (hits 0/3281) constraint DS = {10} extremes [2, infinity)</span>
|
||||
<span class="plain-syntax"> (hits 0/3197) constraint DS = {10} extremes [2, infinity)</span>
|
||||
<span class="plain-syntax"> (@1)unicode <s-unicode-character>=1 </span>
|
||||
<span class="plain-syntax"> (hits 0/4183) constraint DS = {14} extremes [2, infinity)</span>
|
||||
<span class="plain-syntax"> (hits 0/4175) constraint DS = {14} extremes [2, infinity)</span>
|
||||
<span class="plain-syntax"> <s-literal-time>=1 </span>
|
||||
<span class="plain-syntax"> (hits 0/3738) constraint DW = {11, 12, 13} extremes [2, 5]</span>
|
||||
<span class="plain-syntax"> <s-literal-unit-notation>=1 </span>
|
||||
<span class="plain-syntax"> (hits 0/9822) constraint (none) extremes [1, infinity)</span>
|
||||
<span class="plain-syntax"> (hits 0/9730) constraint (none) extremes [1, infinity)</span>
|
||||
</pre>
|
||||
<p class="commentary">The unabridged grammar is here:
|
||||
</p>
|
||||
|
@ -428,7 +425,7 @@ sample, showing the nonterminal used to parse literals in Inform 7 source text:
|
|||
<a href="preform-diagnostics.txt" download>
|
||||
<button class="download-button">
|
||||
<img src="../docs-assets/download.png" alt="download icon" height=16 width=16>
|
||||
Download <b>preform-diagnostics.txt</b> (Preform diagnostics file, 391.1kB)
|
||||
Download <b>preform-diagnostics.txt</b> (Preform diagnostics file, 390.6kB)
|
||||
</button>
|
||||
</a>
|
||||
</p>
|
||||
|
@ -473,8 +470,8 @@ that is, with the content of extensions excluded, and with the content of
|
|||
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}</span>
|
||||
<span class="plain-syntax"> UNPARSED_NOUN_NT'asking for information'</span>
|
||||
<span class="plain-syntax"> UNPARSED_NOUN_NT'out of world'</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out asking for information' {unit: 4} {imperative definition: 798}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'when play begins' {unit: 4} {imperative definition: 799}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out asking for information' {unit: 4} {imperative definition: 756}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'when play begins' {unit: 4} {imperative definition: 757}</span>
|
||||
<span class="plain-syntax"> HEADING_NT'section 1 - errands' {heading 5} {under: H5'section 1 - errands'} {unit: 4}</span>
|
||||
<span class="plain-syntax"> SENTENCE_NT'the current actor is a person which varies' {unit: 4} {classified}</span>
|
||||
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
|
||||
|
@ -484,8 +481,8 @@ that is, with the content of extensions excluded, and with the content of
|
|||
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
|
||||
<span class="plain-syntax"> PROPER_NOUN_NT'current owner' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: NONLOCAL_VARIABLE_NT'current owner' {nonlocal: 'current owner'(var)person}} {created here}</span>
|
||||
<span class="plain-syntax"> COMMON_NOUN_NT'person which varies' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values variable-pointer'-k} {creation: << kind=people variable-pointer(x) >>} {eval: TEST_VALUE_NT}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'every turn' {unit: 4} {imperative definition: 800}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'every turn' {unit: 4} {imperative definition: 801}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'every turn' {unit: 4} {imperative definition: 758}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'every turn' {unit: 4} {imperative definition: 759}</span>
|
||||
<span class="plain-syntax"> SENTENCE_NT'a person can be active or passive' {unit: 4} {classified}</span>
|
||||
<span class="plain-syntax"> VERB_NT'can be' {verb 'be able to be' s/p 3p act IS_TENSE +ve} {special meaning: can-be}</span>
|
||||
<span class="plain-syntax"> COMMON_NOUN_NT'a person' {refined} {refers: infs'person'} {creation: << kind=person(x) >>} {eval: TEST_VALUE_NT}</span>
|
||||
|
@ -501,34 +498,34 @@ that is, with the content of extensions excluded, and with the content of
|
|||
<span class="plain-syntax"> VERB_NT'are' {verb 'be' 3p p act IS_TENSE +ve}</span>
|
||||
<span class="plain-syntax"> PROPER_NOUN_NT'character movement rules' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT {kind: rulebook} {rulebook: character movement}} {created here}</span>
|
||||
<span class="plain-syntax"> COMMON_NOUN_NT'rulebook' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values based rulebook producing values'-k} {creation: << kind=rulebook(x) >>} {eval: TEST_VALUE_NT}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'the first character movement rule' {unit: 4} {imperative definition: 802}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'a character movement rule' {unit: 4} {imperative definition: 803}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'a character movement rule' {unit: 4} {imperative definition: 804}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'to decide whether movement has not yet occurred' {unit: 4} {imperative definition: 805}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'definition' {unit: 4} {imperative definition: 806}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'definition' {unit: 4} {imperative definition: 807}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'the first character movement rule' {unit: 4} {imperative definition: 760}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'a character movement rule' {unit: 4} {imperative definition: 761}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'a character movement rule' {unit: 4} {imperative definition: 762}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'to decide whether movement has not yet occurred' {unit: 4} {imperative definition: 763}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'definition' {unit: 4} {imperative definition: 764}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'definition' {unit: 4} {imperative definition: 765}</span>
|
||||
<span class="plain-syntax"> SENTENCE_NT'the shopowner rules is a rulebook' {unit: 4} {classified} {clears pronouns}</span>
|
||||
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
|
||||
<span class="plain-syntax"> PROPER_NOUN_NT'shopowner rules' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT {kind: rulebook} {rulebook: shopowner}} {created here}</span>
|
||||
<span class="plain-syntax"> COMMON_NOUN_NT'rulebook' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values based rulebook producing values'-k} {creation: << kind=rulebook(x) >>} {eval: TEST_VALUE_NT}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'a shopowner rule' {unit: 4} {imperative definition: 808}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'report someone closing a door when the person asked owns the' {unit: 4} {imperative definition: 809}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'report vanessa closing the metal door when the metal door is' {unit: 4} {imperative definition: 810}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'a shopowner rule' {unit: 4} {imperative definition: 811}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'a shopowner rule' {unit: 4} {imperative definition: 766}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'report someone closing a door when the person asked owns the' {unit: 4} {imperative definition: 767}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'report vanessa closing the metal door when the metal door is' {unit: 4} {imperative definition: 768}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'a shopowner rule' {unit: 4} {imperative definition: 769}</span>
|
||||
<span class="plain-syntax"> SENTENCE_NT'filing is an action applying to one thing' {unit: 4} {classified}</span>
|
||||
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}</span>
|
||||
<span class="plain-syntax"> UNPARSED_NOUN_NT'filing'</span>
|
||||
<span class="plain-syntax"> UNPARSED_NOUN_NT'applying to one thing'</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'before someone filing something which is not carried by the ' {unit: 4} {imperative definition: 812}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone filing' {unit: 4} {imperative definition: 813}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'report someone filing' {unit: 4} {imperative definition: 814}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'before someone filing something which is not carried by the ' {unit: 4} {imperative definition: 770}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone filing' {unit: 4} {imperative definition: 771}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'report someone filing' {unit: 4} {imperative definition: 772}</span>
|
||||
<span class="plain-syntax"> SENTENCE_NT'the shopper rules is a rulebook' {unit: 4} {classified} {clears pronouns}</span>
|
||||
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
|
||||
<span class="plain-syntax"> PROPER_NOUN_NT'shopper rules' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT {kind: rulebook} {rulebook: shopper}} {created here}</span>
|
||||
<span class="plain-syntax"> COMMON_NOUN_NT'rulebook' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values based rulebook producing values'-k} {creation: << kind=rulebook(x) >>} {eval: TEST_VALUE_NT}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'a shopper rule' {unit: 4} {imperative definition: 815}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'a shopper rule' {unit: 4} {imperative definition: 816}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'definition' {unit: 4} {imperative definition: 817}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'a shopper rule' {unit: 4} {imperative definition: 773}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'a shopper rule' {unit: 4} {imperative definition: 774}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'definition' {unit: 4} {imperative definition: 775}</span>
|
||||
<span class="plain-syntax"> DEFN_CONT_NT'a room is air-conditioned' {unit: 4}</span>
|
||||
<span class="plain-syntax"> CODE_BLOCK_NT</span>
|
||||
<span class="plain-syntax"> CODE_BLOCK_NT {control structure: IF}</span>
|
||||
|
@ -586,8 +583,8 @@ that is, with the content of extensions excluded, and with the content of
|
|||
<span class="plain-syntax"> COMMON_NOUN_NT'artwork' {indefinite 'an' n/m/f nom/acc s} {refined} {creation: << kind=artwork(x) >>} {refers: infs'artwork'} {eval: TEST_VALUE_NT} {created here}</span>
|
||||
<span class="plain-syntax"> KIND_NT'kind of thing' {refined} {refers: infs'thing'}</span>
|
||||
<span class="plain-syntax"> COMMON_NOUN_NT'thing' {refined} {refers: infs'thing'} {creation: << kind=thing(x) >>} {eval: TEST_VALUE_NT}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'before printing the name of an artwork' {unit: 4} {imperative definition: 818}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'after printing the name of an artwork' {unit: 4} {imperative definition: 819}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'before printing the name of an artwork' {unit: 4} {imperative definition: 776}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'after printing the name of an artwork' {unit: 4} {imperative definition: 777}</span>
|
||||
<span class="plain-syntax"> SENTENCE_NT'an artwork can be submitted or reserved' {unit: 4} {classified}</span>
|
||||
<span class="plain-syntax"> VERB_NT'can be' {verb 'be able to be' s/p 3p act IS_TENSE +ve} {special meaning: can-be}</span>
|
||||
<span class="plain-syntax"> COMMON_NOUN_NT'an artwork' {refined} {refers: infs'artwork'} {creation: << kind=artwork(x) >>} {eval: TEST_VALUE_NT}</span>
|
||||
|
@ -600,49 +597,49 @@ that is, with the content of extensions excluded, and with the content of
|
|||
<span class="plain-syntax"> COMMON_NOUN_NT'book' {indefinite 'a' n/m/f nom/acc s} {refined} {creation: << kind=book(x) >>} {refers: infs'book'} {eval: TEST_VALUE_NT} {created here}</span>
|
||||
<span class="plain-syntax"> KIND_NT'kind of artwork' {refined} {refers: infs'artwork'}</span>
|
||||
<span class="plain-syntax"> COMMON_NOUN_NT'artwork' {refined} {refers: infs'artwork'} {creation: << kind=artwork(x) >>} {eval: TEST_VALUE_NT}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'before someone resolving a book when the person asked is not' {unit: 4} {imperative definition: 820}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone resolving a book' {unit: 4} {imperative definition: 821}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'report someone resolving a book' {unit: 4} {imperative definition: 822}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'before listing contents' {unit: 4} {imperative definition: 823}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'before grouping together books' {unit: 4} {imperative definition: 824}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'before someone resolving a book when the person asked is not' {unit: 4} {imperative definition: 778}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone resolving a book' {unit: 4} {imperative definition: 779}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'report someone resolving a book' {unit: 4} {imperative definition: 780}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'before listing contents' {unit: 4} {imperative definition: 781}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'before grouping together books' {unit: 4} {imperative definition: 782}</span>
|
||||
<span class="plain-syntax"> SENTENCE_NT'a stamped envelope is a kind of thing' {unit: 4} {classified} {interpretation of subject: infs'book'}</span>
|
||||
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
|
||||
<span class="plain-syntax"> COMMON_NOUN_NT'stamped envelope' {indefinite 'a' n/m/f nom/acc s} {refined} {creation: << kind=stamped envelope(x) >>} {refers: infs'stamped envelope'} {eval: TEST_VALUE_NT} {created here}</span>
|
||||
<span class="plain-syntax"> KIND_NT'kind of thing' {refined} {refers: infs'thing'}</span>
|
||||
<span class="plain-syntax"> COMMON_NOUN_NT'thing' {refined} {refers: infs'thing'} {creation: << kind=thing(x) >>} {eval: TEST_VALUE_NT}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'before someone resolving a stamped envelope when the person ' {unit: 4} {imperative definition: 825}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone resolving a stamped envelope' {unit: 4} {imperative definition: 826}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'report someone resolving a stamped envelope' {unit: 4} {imperative definition: 827}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'instead of someone resolving a stamped envelope when the per' {unit: 4} {imperative definition: 828}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'before someone resolving a stamped envelope when the person ' {unit: 4} {imperative definition: 783}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone resolving a stamped envelope' {unit: 4} {imperative definition: 784}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'report someone resolving a stamped envelope' {unit: 4} {imperative definition: 785}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'instead of someone resolving a stamped envelope when the per' {unit: 4} {imperative definition: 786}</span>
|
||||
<span class="plain-syntax"> SENTENCE_NT'a dvd is a kind of artwork' {unit: 4} {classified} {interpretation of subject: infs'stamped envelope'}</span>
|
||||
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
|
||||
<span class="plain-syntax"> COMMON_NOUN_NT'dvd' {indefinite 'a' n/m/f nom/acc s} {refined} {creation: << kind=dvd(x) >>} {refers: infs'dvd'} {eval: TEST_VALUE_NT} {created here}</span>
|
||||
<span class="plain-syntax"> KIND_NT'kind of artwork' {refined} {refers: infs'artwork'}</span>
|
||||
<span class="plain-syntax"> COMMON_NOUN_NT'artwork' {refined} {refers: infs'artwork'} {creation: << kind=artwork(x) >>} {eval: TEST_VALUE_NT}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'before someone resolving a dvd when the person asked is not ' {unit: 4} {imperative definition: 829}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone resolving a dvd' {unit: 4} {imperative definition: 830}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'report someone resolving a dvd' {unit: 4} {imperative definition: 831}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'instead of someone resolving a dvd when the person asked car' {unit: 4} {imperative definition: 832}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'before listing contents' {unit: 4} {imperative definition: 833}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'before grouping together dvds' {unit: 4} {imperative definition: 834}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'before someone resolving a dvd when the person asked is not ' {unit: 4} {imperative definition: 787}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone resolving a dvd' {unit: 4} {imperative definition: 788}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'report someone resolving a dvd' {unit: 4} {imperative definition: 789}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'instead of someone resolving a dvd when the person asked car' {unit: 4} {imperative definition: 790}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'before listing contents' {unit: 4} {imperative definition: 791}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'before grouping together dvds' {unit: 4} {imperative definition: 792}</span>
|
||||
<span class="plain-syntax"> SENTENCE_NT'approaching is an action applying to one thing' {unit: 4} {classified}</span>
|
||||
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}</span>
|
||||
<span class="plain-syntax"> UNPARSED_NOUN_NT'approaching'</span>
|
||||
<span class="plain-syntax"> UNPARSED_NOUN_NT'applying to one thing'</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone approaching' {unit: 4} {imperative definition: 835}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone approaching' {unit: 4} {imperative definition: 793}</span>
|
||||
<span class="plain-syntax"> SENTENCE_NT'a coupon is a kind of thing' {unit: 4} {classified} {interpretation of subject: infs'dvd'}</span>
|
||||
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
|
||||
<span class="plain-syntax"> COMMON_NOUN_NT'coupon' {indefinite 'a' n/m/f nom/acc s} {refined} {creation: << kind=coupon(x) >>} {refers: infs'coupon'} {eval: TEST_VALUE_NT} {created here}</span>
|
||||
<span class="plain-syntax"> KIND_NT'kind of thing' {refined} {refers: infs'thing'}</span>
|
||||
<span class="plain-syntax"> COMMON_NOUN_NT'thing' {refined} {refers: infs'thing'} {creation: << kind=thing(x) >>} {eval: TEST_VALUE_NT}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone resolving a coupon' {unit: 4} {imperative definition: 836}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone resolving a coupon' {unit: 4} {imperative definition: 794}</span>
|
||||
<span class="plain-syntax"> SENTENCE_NT'the block giving rule is not listed in any rulebook' {unit: 4} {classified}</span>
|
||||
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {rule placement sense: negative} {special meaning: rule-listed-in}</span>
|
||||
<span class="plain-syntax"> UNPARSED_NOUN_NT'the block giving rule'</span>
|
||||
<span class="plain-syntax"> UNPARSED_NOUN_NT'in any rulebook'</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'check giving something to someone ( this is the block player' {unit: 4} {imperative definition: 837}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'before someone resolving a coupon when the person asked is n' {unit: 4} {imperative definition: 838}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'after someone giving a coupon to vanessa' {unit: 4} {imperative definition: 839}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'check giving something to someone ( this is the block player' {unit: 4} {imperative definition: 795}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'before someone resolving a coupon when the person asked is n' {unit: 4} {imperative definition: 796}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'after someone giving a coupon to vanessa' {unit: 4} {imperative definition: 797}</span>
|
||||
<span class="plain-syntax"> SENTENCE_NT'infection color is a kind of value' {unit: 4} {classified} {interpretation of subject: infs'coupon'}</span>
|
||||
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
|
||||
<span class="plain-syntax"> COMMON_NOUN_NT'infection color' {refined} {creation: << kind=infection color(x) >>} {refers: infs'object'-k} {eval: TEST_VALUE_NT} {created here}</span>
|
||||
|
@ -702,7 +699,7 @@ that is, with the content of extensions excluded, and with the content of
|
|||
<span class="plain-syntax"> AND_NT',' {refined}</span>
|
||||
<span class="plain-syntax"> PROPER_NOUN_NT'saffron silk' {refined} {refers: infs'saffron silk'} {eval: CONSTANT_NT'saffron silk' {kind: infection color} {instance: I86'saffron silk'[infection color]} {enumeration: 25}} {created here}</span>
|
||||
<span class="plain-syntax"> PROPER_NOUN_NT'cookie dough cream' {refined} {refers: infs'cookie dough cream'} {eval: CONSTANT_NT'cookie dough cream' {kind: infection color} {instance: I87'cookie dough cream'[infection color]} {enumeration: 26}} {created here}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'to say list of flavors' {unit: 4} {imperative definition: 840}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'to say list of flavors' {unit: 4} {imperative definition: 798}</span>
|
||||
<span class="plain-syntax"> SENTENCE_NT'understand "ask vanessa for [flavored ice cream]" as buying ' {unit: 4} {classified}</span>
|
||||
<span class="plain-syntax"> VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}</span>
|
||||
<span class="plain-syntax"> UNPARSED_NOUN_NT'"ask vanessa for [flavored ice cream]"'</span>
|
||||
|
@ -715,8 +712,8 @@ that is, with the content of extensions excluded, and with the content of
|
|||
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}</span>
|
||||
<span class="plain-syntax"> UNPARSED_NOUN_NT'buying the flavor'</span>
|
||||
<span class="plain-syntax"> UNPARSED_NOUN_NT'applying to one infection color'</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'check buying the flavor' {unit: 4} {imperative definition: 841}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out buying the flavor' {unit: 4} {imperative definition: 842}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'check buying the flavor' {unit: 4} {imperative definition: 799}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out buying the flavor' {unit: 4} {imperative definition: 800}</span>
|
||||
<span class="plain-syntax"> SENTENCE_NT'understand "ice cream" or "cream" or "ice" or "sherbet" or "' {unit: 4} {classified}</span>
|
||||
<span class="plain-syntax"> VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}</span>
|
||||
<span class="plain-syntax"> UNPARSED_NOUN_NT'"ice cream" or "cream" or "ice" or "sherbet" or "sorbet"'</span>
|
||||
|
@ -750,12 +747,12 @@ that is, with the content of extensions excluded, and with the content of
|
|||
<span class="plain-syntax"> VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}</span>
|
||||
<span class="plain-syntax"> UNPARSED_NOUN_NT'the infection color property'</span>
|
||||
<span class="plain-syntax"> UNPARSED_NOUN_NT'referring to an ice cream cone'</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone resolving an ice cream cone' {unit: 4} {imperative definition: 843}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'instead of someone eating a fresh ice cream cone' {unit: 4} {imperative definition: 844}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'report someone eating an ice cream cone' {unit: 4} {imperative definition: 845}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'before printing the name of an ice cream cone' {unit: 4} {imperative definition: 846}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone resolving an ice cream cone' {unit: 4} {imperative definition: 801}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'instead of someone eating a fresh ice cream cone' {unit: 4} {imperative definition: 802}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'report someone eating an ice cream cone' {unit: 4} {imperative definition: 803}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'before printing the name of an ice cream cone' {unit: 4} {imperative definition: 804}</span>
|
||||
<span class="plain-syntax"> HEADING_NT'section 2 - infection rules' {heading 5} {under: H5'section 2 - infection rules'} {unit: 4}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'this is the infection rule' {unit: 4} {imperative definition: 847}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'this is the infection rule' {unit: 4} {imperative definition: 805}</span>
|
||||
<span class="plain-syntax"> SENTENCE_NT'a person can be infected or clean' {unit: 4} {classified}</span>
|
||||
<span class="plain-syntax"> VERB_NT'can be' {verb 'be able to be' s/p 3p act IS_TENSE +ve} {special meaning: can-be}</span>
|
||||
<span class="plain-syntax"> COMMON_NOUN_NT'a person' {refined} {refers: infs'person'} {creation: << kind=person(x) >>} {eval: TEST_VALUE_NT}</span>
|
||||
|
@ -768,11 +765,11 @@ that is, with the content of extensions excluded, and with the content of
|
|||
<span class="plain-syntax"> COMMON_NOUN_NT'person' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'person'} {creation: << kind=person(x) >>} {eval: TEST_VALUE_NT}</span>
|
||||
<span class="plain-syntax"> ALLOWED_NT'has' {refined}</span>
|
||||
<span class="plain-syntax"> UNPARSED_NOUN_NT'infection color' {indefinite 'an' n/m/f nom/acc s} {refined}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'every turn' {unit: 4} {imperative definition: 848}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'definition' {unit: 4} {imperative definition: 849}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'definition' {unit: 4} {imperative definition: 850}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'when play begins' {unit: 4} {imperative definition: 851}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'every turn' {unit: 4} {imperative definition: 852}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'every turn' {unit: 4} {imperative definition: 806}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'definition' {unit: 4} {imperative definition: 807}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'definition' {unit: 4} {imperative definition: 808}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'when play begins' {unit: 4} {imperative definition: 809}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'every turn' {unit: 4} {imperative definition: 810}</span>
|
||||
<span class="plain-syntax"> SENTENCE_NT'understand "sneeze on [something]" as sneezing on' {unit: 4} {classified}</span>
|
||||
<span class="plain-syntax"> VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}</span>
|
||||
<span class="plain-syntax"> UNPARSED_NOUN_NT'"sneeze on [something]"'</span>
|
||||
|
@ -781,11 +778,11 @@ that is, with the content of extensions excluded, and with the content of
|
|||
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}</span>
|
||||
<span class="plain-syntax"> UNPARSED_NOUN_NT'sneezing on'</span>
|
||||
<span class="plain-syntax"> UNPARSED_NOUN_NT'applying to one thing'</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'check sneezing on' {unit: 4} {imperative definition: 853}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out sneezing on' {unit: 4} {imperative definition: 854}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone sneezing on' {unit: 4} {imperative definition: 855}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'report sneezing on' {unit: 4} {imperative definition: 856}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'report someone sneezing on' {unit: 4} {imperative definition: 857}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'check sneezing on' {unit: 4} {imperative definition: 811}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out sneezing on' {unit: 4} {imperative definition: 812}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone sneezing on' {unit: 4} {imperative definition: 813}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'report sneezing on' {unit: 4} {imperative definition: 814}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'report someone sneezing on' {unit: 4} {imperative definition: 815}</span>
|
||||
<span class="plain-syntax"> SENTENCE_NT'understand "inject [someone] with [something]" as injecting ' {unit: 4} {classified}</span>
|
||||
<span class="plain-syntax"> VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}</span>
|
||||
<span class="plain-syntax"> UNPARSED_NOUN_NT'"inject [someone] with [something]"'</span>
|
||||
|
@ -806,10 +803,10 @@ that is, with the content of extensions excluded, and with the content of
|
|||
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}</span>
|
||||
<span class="plain-syntax"> UNPARSED_NOUN_NT'injecting it with'</span>
|
||||
<span class="plain-syntax"> UNPARSED_NOUN_NT'applying to two things'</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'check injecting it with' {unit: 4} {imperative definition: 858}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out injecting it with' {unit: 4} {imperative definition: 859}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'after injecting the player with something' {unit: 4} {imperative definition: 860}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'report injecting it with' {unit: 4} {imperative definition: 861}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'check injecting it with' {unit: 4} {imperative definition: 816}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out injecting it with' {unit: 4} {imperative definition: 817}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'after injecting the player with something' {unit: 4} {imperative definition: 818}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'report injecting it with' {unit: 4} {imperative definition: 819}</span>
|
||||
<span class="plain-syntax"> HEADING_NT'section 3 - geography' {heading 5} {under: H5'section 3 - geography'} {unit: 4}</span>
|
||||
<span class="plain-syntax"> INCLUSION_NT'include locksmith by emily short' {unit: 4}</span>
|
||||
<span class="plain-syntax"> HEADING_NT'version 12 of locksmith by emily short begins here' {heading 0} {under: H0'version 12 of locksmith by emily short begins here'} {includes: Locksmith by Emily Short v12 } {unit: 3}</span>
|
||||
|
@ -834,9 +831,9 @@ that is, with the content of extensions excluded, and with the content of
|
|||
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}</span>
|
||||
<span class="plain-syntax"> UNPARSED_NOUN_NT'going toward'</span>
|
||||
<span class="plain-syntax"> UNPARSED_NOUN_NT'applying to one thing'</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'check going toward' {unit: 4} {imperative definition: 899}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out going toward' {unit: 4} {imperative definition: 900}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'instead of waiting when the destination of the player is not' {unit: 4} {imperative definition: 901}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'check going toward' {unit: 4} {imperative definition: 857}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out going toward' {unit: 4} {imperative definition: 858}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'instead of waiting when the destination of the player is not' {unit: 4} {imperative definition: 859}</span>
|
||||
<span class="plain-syntax"> SENTENCE_NT'understand "stop" or "cease" as stopping' {unit: 4} {classified}</span>
|
||||
<span class="plain-syntax"> VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}</span>
|
||||
<span class="plain-syntax"> UNPARSED_NOUN_NT'"stop" or "cease"'</span>
|
||||
|
@ -845,11 +842,11 @@ that is, with the content of extensions excluded, and with the content of
|
|||
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}</span>
|
||||
<span class="plain-syntax"> UNPARSED_NOUN_NT'stopping'</span>
|
||||
<span class="plain-syntax"> UNPARSED_NOUN_NT'applying to nothing'</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out stopping' {unit: 4} {imperative definition: 902}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'report stopping' {unit: 4} {imperative definition: 903}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'after going to an air-conditioned room' {unit: 4} {imperative definition: 904}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'after going from an air-conditioned room' {unit: 4} {imperative definition: 905}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'instead of listening to an air-conditioned room' {unit: 4} {imperative definition: 906}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out stopping' {unit: 4} {imperative definition: 860}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'report stopping' {unit: 4} {imperative definition: 861}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'after going to an air-conditioned room' {unit: 4} {imperative definition: 862}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'after going from an air-conditioned room' {unit: 4} {imperative definition: 863}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'instead of listening to an air-conditioned room' {unit: 4} {imperative definition: 864}</span>
|
||||
<span class="plain-syntax"> SENTENCE_NT'the alfred cralle pool hall is a room' {unit: 4} {classified} {interpretation of subject: infs'person'}</span>
|
||||
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
|
||||
<span class="plain-syntax"> PROPER_NOUN_NT'alfred cralle pool hall' {definite 'the' n/m/f s/p nom/acc} {refined} {refers: infs'alfred cralle pool hall'} {eval: CONSTANT_NT'alfred cralle pool hall' {kind: object} {instance: I88'alfred cralle pool hall'} {enumeration: 0}} {created here}</span>
|
||||
|
@ -891,7 +888,7 @@ that is, with the content of extensions excluded, and with the content of
|
|||
<span class="plain-syntax"> PROPER_NOUN_NT'felt door' {definite 'the' n/m/f s/p nom/acc} {refined} {refers: infs'felt door'} {eval: CONSTANT_NT'felt door' {kind: door} {instance: I90'felt door'} {enumeration: 0}}</span>
|
||||
<span class="plain-syntax"> PROPER_NOUN_NT'description' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'description'=text}}</span>
|
||||
<span class="plain-syntax"> PROPER_NOUN_NT'"It has a prominent lock, designed for an old-fashioned key.' {refined} {eval: CONSTANT_NT'"It has a prominent lock, designed for an old-fashioned key.' {kind: text}}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'after locking a door with something in the presence of an ot' {unit: 4} {imperative definition: 907}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'after locking a door with something in the presence of an ot' {unit: 4} {imperative definition: 865}</span>
|
||||
<span class="plain-syntax"> SENTENCE_NT'nancy johnson memorial square is west of the felt door' {unit: 4} {classified} {interpretation of subject: infs'key to the city'}</span>
|
||||
<span class="plain-syntax"> VERB_NT'is west of' {verb 'be' 3p s act IS_TENSE +ve} {prep1: west of}</span>
|
||||
<span class="plain-syntax"> PROPER_NOUN_NT'nancy johnson memorial square' {refined} {refers: infs'nancy johnson memorial square'} {eval: CONSTANT_NT'nancy johnson memorial square' {kind: object} {instance: I92'nancy johnson memorial square'} {enumeration: 0}} {created here}</span>
|
||||
|
@ -953,8 +950,8 @@ that is, with the content of extensions excluded, and with the content of
|
|||
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
|
||||
<span class="plain-syntax"> PROPER_NOUN_NT'slot' {definite 'the' n/m/f s/p nom/acc} {refined} {refers: infs'slot'} {eval: CONSTANT_NT'slot' {kind: object} {instance: I97'slot'} {enumeration: 0}}</span>
|
||||
<span class="plain-syntax"> COMMON_NOUN_NT'container' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'container'} {creation: << kind=container(x) >>} {eval: TEST_VALUE_NT}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out inserting something into the slot' {unit: 4} {imperative definition: 908}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'report inserting something into the slot' {unit: 4} {imperative definition: 909}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out inserting something into the slot' {unit: 4} {imperative definition: 866}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'report inserting something into the slot' {unit: 4} {imperative definition: 867}</span>
|
||||
<span class="plain-syntax"> SENTENCE_NT'hamwi street is northeast of an iron gate' {unit: 4} {classified} {interpretation of subject: infs'slot'}</span>
|
||||
<span class="plain-syntax"> VERB_NT'is northeast of' {verb 'be' 3p s act IS_TENSE +ve} {prep1: northeast of}</span>
|
||||
<span class="plain-syntax"> PROPER_NOUN_NT'hamwi street' {refined} {refers: infs'hamwi street'} {eval: CONSTANT_NT'hamwi street' {kind: object} {instance: I98'hamwi street'} {enumeration: 0}} {created here}</span>
|
||||
|
@ -978,7 +975,7 @@ that is, with the content of extensions excluded, and with the content of
|
|||
<span class="plain-syntax"> AND_NT'and' {refined}</span>
|
||||
<span class="plain-syntax"> ADJECTIVE_NT'lockable' {refined} {predicate: lockable} {creation: << lockable(x) ^ lockable(x) >>}</span>
|
||||
<span class="plain-syntax"> ADJECTIVE_NT'unlocked' {refined} {predicate: unlocked} {creation: << unlocked(x) ^ unlocked(x) >>}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'before printing the name of the iron gate while not opening ' {unit: 4} {imperative definition: 910}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'before printing the name of the iron gate while not opening ' {unit: 4} {imperative definition: 868}</span>
|
||||
<span class="plain-syntax"> SENTENCE_NT'cold comfort ice cream is north of a metal door' {unit: 4} {classified} {interpretation of subject: infs'iron gate'}</span>
|
||||
<span class="plain-syntax"> VERB_NT'is north of' {verb 'be' 3p s act IS_TENSE +ve} {prep1: north of}</span>
|
||||
<span class="plain-syntax"> PROPER_NOUN_NT'cold comfort ice cream' {refined} {refers: infs'cold comfort ice cream'} {eval: CONSTANT_NT'cold comfort ice cream' {kind: object} {instance: I100'cold comfort ice cream'} {enumeration: 0}} {created here}</span>
|
||||
|
@ -1084,8 +1081,8 @@ that is, with the content of extensions excluded, and with the content of
|
|||
<span class="plain-syntax"> VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}</span>
|
||||
<span class="plain-syntax"> UNPARSED_NOUN_NT'"glass"'</span>
|
||||
<span class="plain-syntax"> UNPARSED_NOUN_NT'the box'</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'instead of attacking the closed emergency box' {unit: 4} {imperative definition: 911}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'instead of attacking the open emergency box' {unit: 4} {imperative definition: 912}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'instead of attacking the closed emergency box' {unit: 4} {imperative definition: 869}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'instead of attacking the open emergency box' {unit: 4} {imperative definition: 870}</span>
|
||||
<span class="plain-syntax"> SENTENCE_NT'the syringe is in the emergency box' {unit: 4} {classified} {interpretation of subject: infs'emergency box'}</span>
|
||||
<span class="plain-syntax"> VERB_NT'is in' {verb 'be' 3p s act IS_TENSE +ve} {prep1: in}</span>
|
||||
<span class="plain-syntax"> PROPER_NOUN_NT'syringe' {definite 'the' n/m/f s/p nom/acc} {refined} {refers: infs'syringe'} {eval: CONSTANT_NT'syringe' {kind: object} {instance: I109'syringe'} {enumeration: 0}} {created here}</span>
|
||||
|
@ -1188,8 +1185,8 @@ that is, with the content of extensions excluded, and with the content of
|
|||
<span class="plain-syntax"> SENTENCE_NT'use full-length room descriptions' {unit: 4} {classified}</span>
|
||||
<span class="plain-syntax"> VERB_NT'use' {verb 'use' 3p p act IS_TENSE +ve} {special meaning: use}</span>
|
||||
<span class="plain-syntax"> UNPARSED_NOUN_NT'full-length room descriptions'</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'after looking in an outdoors room' {unit: 4} {imperative definition: 913}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'definition' {unit: 4} {imperative definition: 914}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'after looking in an outdoors room' {unit: 4} {imperative definition: 871}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'definition' {unit: 4} {imperative definition: 872}</span>
|
||||
<span class="plain-syntax"> DEFN_CONT_NT'a door is proximate' {unit: 4}</span>
|
||||
<span class="plain-syntax"> CODE_BLOCK_NT</span>
|
||||
<span class="plain-syntax"> CODE_BLOCK_NT {control structure: IF}</span>
|
||||
|
@ -1210,7 +1207,7 @@ that is, with the content of extensions excluded, and with the content of
|
|||
<span class="plain-syntax"> INVOCATION_NT'yes' {phrase invoked: <no-inter-name>}</span>
|
||||
<span class="plain-syntax"> INVOCATION_LIST_NT'no' {unit: 4}</span>
|
||||
<span class="plain-syntax"> INVOCATION_NT'no' {phrase invoked: <no-inter-name>}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'before exiting when the player is in an indoors room' {unit: 4} {imperative definition: 915}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'before exiting when the player is in an indoors room' {unit: 4} {imperative definition: 873}</span>
|
||||
<span class="plain-syntax"> SENTENCE_NT'blank is a room' {unit: 4} {classified} {interpretation of subject: infs'key to the city'}</span>
|
||||
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
|
||||
<span class="plain-syntax"> PROPER_NOUN_NT'blank' {refined} {refers: infs'blank'} {eval: CONSTANT_NT'blank' {kind: object} {instance: I113'blank'} {enumeration: 0}} {created here}</span>
|
||||
|
@ -1436,15 +1433,15 @@ that is, with the content of extensions excluded, and with the content of
|
|||
<span class="plain-syntax"> PROPER_NOUN_NT'ned' {refined} {refers: infs'ned'} {eval: CONSTANT_NT'ned' {kind: man} {instance: I166'ned'} {enumeration: 0}}</span>
|
||||
<span class="plain-syntax"> RELATIONSHIP_NT'owns' {meaning: ownership-r} {refined}</span>
|
||||
<span class="plain-syntax"> PROPER_NOUN_NT'movie rental' {definite 'the' n/m/f s/p nom/acc} {refined} {refers: infs'movie rental store'} {eval: CONSTANT_NT'movie rental store' {kind: object} {instance: I104'movie rental store'} {enumeration: 0}}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'after printing the name of someone ( called target ) while l' {unit: 4} {imperative definition: 916}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'after printing the name of someone ( called target ) while l' {unit: 4} {imperative definition: 874}</span>
|
||||
<span class="plain-syntax"> SENTENCE_NT'the description of a person is usually "[The noun] [if the n' {unit: 4} {classified} {interpretation of subject: infs'ned'}</span>
|
||||
<span class="plain-syntax"> VERB_NT'is usually' {certainty:likely} {verb 'be' 3p s act IS_TENSE +ve}</span>
|
||||
<span class="plain-syntax"> X_OF_Y_NT'description of a person' {definite 'the' n/m/f s/p nom/acc} {refined}</span>
|
||||
<span class="plain-syntax"> COMMON_NOUN_NT'person' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'person'} {creation: << kind=person(x) >>} {eval: TEST_VALUE_NT}</span>
|
||||
<span class="plain-syntax"> PROPER_NOUN_NT'description' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'description'=text}}</span>
|
||||
<span class="plain-syntax"> PROPER_NOUN_NT'"[The noun] [if the noun is clean]looks healthy[otherwise]is' {refined} {eval: CONSTANT_NT'"[The noun] [if the noun is clean]looks healthy[otherwise]is' {kind: text}}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'after examining another person who is carrying something' {unit: 4} {imperative definition: 917}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'when play begins' {unit: 4} {imperative definition: 918}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'after examining another person who is carrying something' {unit: 4} {imperative definition: 875}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'when play begins' {unit: 4} {imperative definition: 876}</span>
|
||||
<span class="plain-syntax"> HEADING_NT'section 5 - conversation' {heading 5} {under: H5'section 5 - conversation'} {unit: 4}</span>
|
||||
<span class="plain-syntax"> SENTENCE_NT'a person has a table name called conversation' {unit: 4} {classified}</span>
|
||||
<span class="plain-syntax"> VERB_NT'has' {verb 'have' 3p s act IS_TENSE +ve}</span>
|
||||
|
@ -1453,8 +1450,8 @@ that is, with the content of extensions excluded, and with the content of
|
|||
<span class="plain-syntax"> PROPERTYCALLED_NT'called'</span>
|
||||
<span class="plain-syntax"> UNPARSED_NOUN_NT'table name' {indefinite 'a' n/m/f nom/acc s}</span>
|
||||
<span class="plain-syntax"> UNPARSED_NOUN_NT'conversation'</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'instead of asking someone about something' {unit: 4} {imperative definition: 919}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'instead of telling someone about something' {unit: 4} {imperative definition: 920}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'instead of asking someone about something' {unit: 4} {imperative definition: 877}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'instead of telling someone about something' {unit: 4} {imperative definition: 878}</span>
|
||||
<span class="plain-syntax"> SENTENCE_NT'understand "recap" or "recall" or "review" as recalling conv' {unit: 4} {classified}</span>
|
||||
<span class="plain-syntax"> VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}</span>
|
||||
<span class="plain-syntax"> UNPARSED_NOUN_NT'"recap" or "recall" or "review"'</span>
|
||||
|
@ -1463,7 +1460,7 @@ that is, with the content of extensions excluded, and with the content of
|
|||
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}</span>
|
||||
<span class="plain-syntax"> UNPARSED_NOUN_NT'recalling conversations'</span>
|
||||
<span class="plain-syntax"> UNPARSED_NOUN_NT'applying to nothing'</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out recalling conversations' {unit: 4} {imperative definition: 921}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out recalling conversations' {unit: 4} {imperative definition: 879}</span>
|
||||
<span class="plain-syntax"> SENTENCE_NT'the conversation of a person is usually table of general chi' {unit: 4} {classified} {interpretation of subject: infs'person'}</span>
|
||||
<span class="plain-syntax"> VERB_NT'is usually' {certainty:likely} {verb 'be' 3p s act IS_TENSE +ve}</span>
|
||||
<span class="plain-syntax"> X_OF_Y_NT'conversation of a person' {definite 'the' n/m/f s/p nom/acc} {refined}</span>
|
||||
|
@ -1478,7 +1475,7 @@ that is, with the content of extensions excluded, and with the content of
|
|||
<span class="plain-syntax"> PROPER_NOUN_NT'conversation' {refined} {eval: CONSTANT_NT {kind: table names valued property} {property: 'conversation'=table name}}</span>
|
||||
<span class="plain-syntax"> PROPER_NOUN_NT'table of vanessa chatter' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'table of vanessa chatter' {kind: table name} {table: table_data}{meaning: {table of vanessa chatter = TABLE_MC}}}</span>
|
||||
<span class="plain-syntax"> TABLE_NT'table of vanessa chatter topic reply summary turn stamp char' {unit: 4}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'after reading a command' {unit: 4} {imperative definition: 922}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'after reading a command' {unit: 4} {imperative definition: 880}</span>
|
||||
<span class="plain-syntax"> HEADING_NT'section 6 - movement description' {heading 5} {under: H5'section 6 - movement description'} {unit: 4}</span>
|
||||
<span class="plain-syntax"> SENTENCE_NT'a person has some text called walk style' {unit: 4} {classified}</span>
|
||||
<span class="plain-syntax"> VERB_NT'has' {verb 'have' 3p s act IS_TENSE +ve}</span>
|
||||
|
@ -1525,8 +1522,8 @@ that is, with the content of extensions excluded, and with the content of
|
|||
<span class="plain-syntax"> PROPER_NOUN_NT'"sashay"' {refined} {eval: CONSTANT_NT'"sashay"' {kind: text}}</span>
|
||||
<span class="plain-syntax"> TABLE_NT'table of visible exits character second third heading chosen' {unit: 4}</span>
|
||||
<span class="plain-syntax"> TABLE_NT'table of visible entrances character second third heading ch' {unit: 4}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'to clear ( current table - a table name )' {unit: 4} {imperative definition: 923}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'to tidy departures of ( current table - a table name )' {unit: 4} {imperative definition: 924}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'to clear ( current table - a table name )' {unit: 4} {imperative definition: 881}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'to tidy departures of ( current table - a table name )' {unit: 4} {imperative definition: 882}</span>
|
||||
<span class="plain-syntax"> SENTENCE_NT'a door has a person called last opener' {unit: 4} {classified} {interpretation of subject: infs'person'}</span>
|
||||
<span class="plain-syntax"> VERB_NT'has' {verb 'have' 3p s act IS_TENSE +ve}</span>
|
||||
<span class="plain-syntax"> COMMON_NOUN_NT'door' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'door'} {creation: << kind=door(x) >>} {eval: TEST_VALUE_NT}</span>
|
||||
|
@ -1534,21 +1531,21 @@ that is, with the content of extensions excluded, and with the content of
|
|||
<span class="plain-syntax"> PROPERTYCALLED_NT'called'</span>
|
||||
<span class="plain-syntax"> UNPARSED_NOUN_NT'person' {indefinite 'a' n/m/f nom/acc s}</span>
|
||||
<span class="plain-syntax"> UNPARSED_NOUN_NT'last opener'</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'report someone opening a door' {unit: 4} {imperative definition: 925}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'report someone going through a door ( called route )' {unit: 4} {imperative definition: 926}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'report someone opening a door' {unit: 4} {imperative definition: 883}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'report someone going through a door ( called route )' {unit: 4} {imperative definition: 884}</span>
|
||||
<span class="plain-syntax"> SENTENCE_NT'the last thing named is a thing that varies' {unit: 4} {classified} {interpretation of subject: infs'door'}</span>
|
||||
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
|
||||
<span class="plain-syntax"> PROPER_NOUN_NT'last thing named' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: NONLOCAL_VARIABLE_NT'last thing named' {nonlocal: 'last thing named'(var)thing}} {created here}</span>
|
||||
<span class="plain-syntax"> COMMON_NOUN_NT'thing that varies' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values variable-pointer'-k} {creation: << kind=things variable-pointer(x) >>} {eval: TEST_VALUE_NT}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'before printing the name of something ( called target ) whic' {unit: 4} {imperative definition: 927}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'report someone going a direction' {unit: 4} {imperative definition: 928}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'this is the movement reporting rule' {unit: 4} {imperative definition: 929}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'to generate descriptions from ( current table - a table name' {unit: 4} {imperative definition: 930}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'before printing the name of something ( called target ) whic' {unit: 4} {imperative definition: 885}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'report someone going a direction' {unit: 4} {imperative definition: 886}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'this is the movement reporting rule' {unit: 4} {imperative definition: 887}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'to generate descriptions from ( current table - a table name' {unit: 4} {imperative definition: 888}</span>
|
||||
<span class="plain-syntax"> SENTENCE_NT'the last person named is a person that varies' {unit: 4} {classified} {interpretation of subject: infs'door'}</span>
|
||||
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
|
||||
<span class="plain-syntax"> PROPER_NOUN_NT'last person named' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: NONLOCAL_VARIABLE_NT'last person named' {nonlocal: 'last person named'(var)person}} {created here}</span>
|
||||
<span class="plain-syntax"> COMMON_NOUN_NT'person that varies' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values variable-pointer'-k} {creation: << kind=people variable-pointer(x) >>} {eval: TEST_VALUE_NT}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'before printing the name of a person ( called target )' {unit: 4} {imperative definition: 931}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'before printing the name of a person ( called target )' {unit: 4} {imperative definition: 889}</span>
|
||||
<span class="plain-syntax"> SENTENCE_NT'group size is a number that varies' {unit: 4} {classified} {interpretation of subject: infs'door'}</span>
|
||||
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
|
||||
<span class="plain-syntax"> PROPER_NOUN_NT'group size' {refined} {eval: NONLOCAL_VARIABLE_NT'group size' {nonlocal: 'group size'(var)number}} {created here}</span>
|
||||
|
@ -1557,19 +1554,19 @@ that is, with the content of extensions excluded, and with the content of
|
|||
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
|
||||
<span class="plain-syntax"> PROPER_NOUN_NT'group size' {refined} {eval: NONLOCAL_VARIABLE_NT'group size' {nonlocal: 'group size'(var)number}{meaning: {group size = VARIABLE_MC}}}</span>
|
||||
<span class="plain-syntax"> PROPER_NOUN_NT'1' {refined} {eval: CONSTANT_NT'1' {kind: number} {explicit literal} {number: 1}}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'to clear marked people' {unit: 4} {imperative definition: 932}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'before listing nondescript items' {unit: 4} {imperative definition: 933}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'to describe patients' {unit: 4} {imperative definition: 934}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'to say ( named character - a man ) as pronoun' {unit: 4} {imperative definition: 935}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'to say ( named character - a woman ) as pronoun' {unit: 4} {imperative definition: 936}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'to say looks as though dipped in for ( index - a number )' {unit: 4} {imperative definition: 937}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'to clear marked people' {unit: 4} {imperative definition: 890}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'before listing nondescript items' {unit: 4} {imperative definition: 891}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'to describe patients' {unit: 4} {imperative definition: 892}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'to say ( named character - a man ) as pronoun' {unit: 4} {imperative definition: 893}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'to say ( named character - a woman ) as pronoun' {unit: 4} {imperative definition: 894}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'to say looks as though dipped in for ( index - a number )' {unit: 4} {imperative definition: 895}</span>
|
||||
<span class="plain-syntax"> TABLE_NT'table of dipping phrases dipping "looks as though dipped in"' {unit: 4}</span>
|
||||
<span class="plain-syntax"> SENTENCE_NT'a door is usually scenery' {unit: 4} {classified} {interpretation of subject: infs'door'}</span>
|
||||
<span class="plain-syntax"> VERB_NT'is usually' {certainty:likely} {verb 'be' 3p s act IS_TENSE +ve}</span>
|
||||
<span class="plain-syntax"> COMMON_NOUN_NT'door' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'door'} {creation: << kind=door(x) >>} {eval: TEST_VALUE_NT}</span>
|
||||
<span class="plain-syntax"> ADJECTIVE_NT'scenery' {refined} {predicate: scenery} {creation: << scenery(x) ^ scenery(x) >>}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'to make delimiter ( index - a number ) of ( count - a number' {unit: 4} {imperative definition: 938}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'to say optional comma' {unit: 4} {imperative definition: 939}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'to make delimiter ( index - a number ) of ( count - a number' {unit: 4} {imperative definition: 896}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'to say optional comma' {unit: 4} {imperative definition: 897}</span>
|
||||
<span class="plain-syntax"> SENTENCE_NT'test me with go to cold comfort / z / z / z / z / ask vaness' {unit: 4} {classified}</span>
|
||||
<span class="plain-syntax"> VERB_NT'test' {verb 'test' 3p p act IS_TENSE +ve} {prep2: with} {special meaning: test-with}</span>
|
||||
<span class="plain-syntax"> UNPARSED_NOUN_NT'me'</span>
|
||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -184,7 +184,7 @@ logging:
|
|||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Regexp::match</span><span class="plain-syntax">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">step</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"(%c+?) *-> *(%c*)"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ST</span><span class="plain-syntax">-></span><span class="element-syntax">target_argument</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">ST</span><span class="plain-syntax">-></span><span class="element-syntax">take_target_argument_from_VM</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ST</span><span class="plain-syntax">-></span><span class="element-syntax">step_argument</span><span class="plain-syntax"> = </span><a href="1-ppl.html#SP3" class="function-link"><span class="function-syntax">CodeGen::Pipeline::read_parameter</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[2], </span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">tfp</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ST</span><span class="plain-syntax">-></span><span class="element-syntax">step_argument</span><span class="plain-syntax"> = </span><a href="1-ppl.html#SP3" class="function-link"><span class="function-syntax">CodeGen::Pipeline::read_parameter</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[1], </span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">tfp</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">ST</span><span class="plain-syntax">-></span><span class="element-syntax">step_argument</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</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">Str::copy</span><span class="plain-syntax">(</span><span class="identifier-syntax">step</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[0]);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
@ -360,7 +360,7 @@ logging:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">VM</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">step</span><span class="plain-syntax">-></span><span class="element-syntax">take_target_argument_from_VM</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">code_generation_target</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cgt</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">cgt</span><span class="plain-syntax">, </span><span class="identifier-syntax">code_generation_target</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">Str::eq_insensitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="identifier-syntax">format_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">cgt</span><span class="plain-syntax">-></span><span class="identifier-syntax">target_name</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">Str::eq_insensitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">TargetVMs::family</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">), </span><span class="identifier-syntax">cgt</span><span class="plain-syntax">-></span><span class="identifier-syntax">target_name</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">step</span><span class="plain-syntax">-></span><span class="element-syntax">target_argument</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cgt</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">step</span><span class="plain-syntax">-></span><span class="element-syntax">target_argument</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">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">PROBLEMS_MODULE</span>
|
||||
|
|
|
@ -95,33 +95,11 @@ function togglePopup(material_id) {
|
|||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">TargetVMs::debug_enabled</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">)) </span><a href="3-gm.html#SP3" class="function-link"><span class="function-syntax">GenericModule::emit_one</span></a><span class="plain-syntax">(</span><span class="constant-syntax">DEBUG_HL</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-gm.html#SP2_1" class="named-paragraph-link"><span class="named-paragraph">Special constants for Z-machine and Glulx VMs</span><span class="named-paragraph-number">2.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">TargetVMs::is_16_bit</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">)) </span><span class="named-paragraph-container code-font"><a href="3-gm.html#SP2_2" class="named-paragraph-link"><span class="named-paragraph">16-bit constants</span><span class="named-paragraph-number">2.2</span></a></span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-gm.html#SP2_3" class="named-paragraph-link"><span class="named-paragraph">32-bit constants</span><span class="named-paragraph-number">2.3</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">TargetVMs::is_16_bit</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">)) </span><span class="named-paragraph-container code-font"><a href="3-gm.html#SP2_1" class="named-paragraph-link"><span class="named-paragraph">16-bit constants</span><span class="named-paragraph-number">2.1</span></a></span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-gm.html#SP2_2" class="named-paragraph-link"><span class="named-paragraph">32-bit constants</span><span class="named-paragraph-number">2.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP2_1" class="paragraph-anchor"></a><b>§2.1. </b>These constants may be predefined in the veneer of the Inform 6 compiler,
|
||||
if that is being used further down the compilation chain, but we want to define
|
||||
them here regardless of that: and then linking can work properly, and the code
|
||||
will make sense even if I6 is not the final code-generator.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Special constants for Z-machine and Glulx VMs</span><span class="named-paragraph-number">2.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">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="identifier-syntax">family_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Z-Machine"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><a href="3-gm.html#SP3" class="function-link"><span class="function-syntax">GenericModule::emit_one</span></a><span class="plain-syntax">(</span><span class="constant-syntax">TARGET_ZCODE_HL</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-gm.html#SP3" class="function-link"><span class="function-syntax">GenericModule::emit_one</span></a><span class="plain-syntax">(</span><span class="constant-syntax">DICT_WORD_SIZE_HL</span><span class="plain-syntax">, </span><span class="constant-syntax">6</span><span class="plain-syntax">);</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">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="identifier-syntax">family_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Glulx"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><a href="3-gm.html#SP3" class="function-link"><span class="function-syntax">GenericModule::emit_one</span></a><span class="plain-syntax">(</span><span class="constant-syntax">TARGET_GLULX_HL</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-gm.html#SP3" class="function-link"><span class="function-syntax">GenericModule::emit_one</span></a><span class="plain-syntax">(</span><span class="constant-syntax">DICT_WORD_SIZE_HL</span><span class="plain-syntax">, </span><span class="constant-syntax">9</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-gm.html#SP3" class="function-link"><span class="function-syntax">GenericModule::emit_one</span></a><span class="plain-syntax">(</span><span class="constant-syntax">INDIV_PROP_START_HL</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-gm.html#SP2">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_2" class="paragraph-anchor"></a><b>§2.2. </b>These constants mostly have obvious meanings, but a few notes:
|
||||
<p class="commentary firstcommentary"><a id="SP2_1" class="paragraph-anchor"></a><b>§2.1. </b>These constants mostly have obvious meanings, but a few notes:
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>(1) <span class="extract"><span class="extract-syntax">NULL</span></span>, in our runtime, is -1, and not 0 as it would be in C. This is
|
||||
|
@ -137,7 +115,7 @@ That doesn't sound very "fundamental", but in fact it depends on the word
|
|||
size, because it needs to be a large number but also such that an address
|
||||
in the VM can be added to it without it becoming negative.
|
||||
</li></ul>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">16-bit constants</span><span class="named-paragraph-number">2.2</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">16-bit constants</span><span class="named-paragraph-number">2.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -149,9 +127,11 @@ in the VM can be added to it without it becoming negative.
|
|||
<span class="plain-syntax"> </span><a href="3-gm.html#SP3" class="function-link"><span class="function-syntax">GenericModule::emit_hex</span></a><span class="plain-syntax">(</span><span class="constant-syntax">REPARSE_CODE_HL</span><span class="plain-syntax">, </span><span class="constant-syntax">10000</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-gm.html#SP3" class="function-link"><span class="function-syntax">GenericModule::emit_one</span></a><span class="plain-syntax">(</span><span class="constant-syntax">MAX_POSITIVE_NUMBER_HL</span><span class="plain-syntax">, </span><span class="constant-syntax">32767</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-gm.html#SP3" class="function-link"><span class="function-syntax">GenericModule::emit_signed</span></a><span class="plain-syntax">(</span><span class="constant-syntax">MIN_NEGATIVE_NUMBER_HL</span><span class="plain-syntax">, -32768);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-gm.html#SP3" class="function-link"><span class="function-syntax">GenericModule::emit_one</span></a><span class="plain-syntax">(</span><span class="constant-syntax">TARGET_ZCODE_HL</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-gm.html#SP3" class="function-link"><span class="function-syntax">GenericModule::emit_one</span></a><span class="plain-syntax">(</span><span class="constant-syntax">DICT_WORD_SIZE_HL</span><span class="plain-syntax">, </span><span class="constant-syntax">6</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-gm.html#SP2">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_3" class="paragraph-anchor"></a><b>§2.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">32-bit constants</span><span class="named-paragraph-number">2.3</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP2_2" class="paragraph-anchor"></a><b>§2.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">32-bit constants</span><span class="named-paragraph-number">2.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -163,28 +143,31 @@ in the VM can be added to it without it becoming negative.
|
|||
<span class="plain-syntax"> </span><a href="3-gm.html#SP3" class="function-link"><span class="function-syntax">GenericModule::emit_hex</span></a><span class="plain-syntax">(</span><span class="constant-syntax">REPARSE_CODE_HL</span><span class="plain-syntax">, </span><span class="constant-syntax">0x40000000</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-gm.html#SP3" class="function-link"><span class="function-syntax">GenericModule::emit_one</span></a><span class="plain-syntax">(</span><span class="constant-syntax">MAX_POSITIVE_NUMBER_HL</span><span class="plain-syntax">, </span><span class="constant-syntax">2147483647</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-gm.html#SP3" class="function-link"><span class="function-syntax">GenericModule::emit_signed</span></a><span class="plain-syntax">(</span><span class="constant-syntax">MIN_NEGATIVE_NUMBER_HL</span><span class="plain-syntax">, -2147483648);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-gm.html#SP3" class="function-link"><span class="function-syntax">GenericModule::emit_one</span></a><span class="plain-syntax">(</span><span class="constant-syntax">TARGET_GLULX_HL</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-gm.html#SP3" class="function-link"><span class="function-syntax">GenericModule::emit_one</span></a><span class="plain-syntax">(</span><span class="constant-syntax">DICT_WORD_SIZE_HL</span><span class="plain-syntax">, </span><span class="constant-syntax">9</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-gm.html#SP3" class="function-link"><span class="function-syntax">GenericModule::emit_one</span></a><span class="plain-syntax">(</span><span class="constant-syntax">INDIV_PROP_START_HL</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-gm.html#SP2">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>Note that all of these constants are made available for linking:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">GenericModule::emit_one</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">GenericModule::emit_one</span></span>:<br/><a href="3-gm.html#SP2">§2</a>, <a href="3-gm.html#SP2_1">§2.1</a>, <a href="3-gm.html#SP2_2">§2.2</a>, <a href="3-gm.html#SP2_3">§2.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">GenericModule::emit_one</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">GenericModule::emit_one</span></span>:<br/><a href="3-gm.html#SP2">§2</a>, <a href="3-gm.html#SP2_1">§2.1</a>, <a href="3-gm.html#SP2_2">§2.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">val</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#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">id</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-hrr.html#SP17" class="function-link"><span class="function-syntax">Hierarchy::make_available</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-emt.html#SP9" class="function-link"><span class="function-syntax">Emit::numeric_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</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">GenericModule::emit_signed</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">GenericModule::emit_signed</span></span>:<br/><a href="3-gm.html#SP2_2">§2.2</a>, <a href="3-gm.html#SP2_3">§2.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">GenericModule::emit_signed</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">GenericModule::emit_signed</span></span>:<br/><a href="3-gm.html#SP2_1">§2.1</a>, <a href="3-gm.html#SP2_2">§2.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">val</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#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">id</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-hrr.html#SP17" class="function-link"><span class="function-syntax">Hierarchy::make_available</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-emt.html#SP9" class="function-link"><span class="function-syntax">Emit::named_numeric_constant_signed</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</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">GenericModule::emit_hex</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">GenericModule::emit_hex</span></span>:<br/><a href="3-gm.html#SP2_2">§2.2</a>, <a href="3-gm.html#SP2_3">§2.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">GenericModule::emit_hex</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">GenericModule::emit_hex</span></span>:<br/><a href="3-gm.html#SP2_1">§2.1</a>, <a href="3-gm.html#SP2_2">§2.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">val</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#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">id</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-hrr.html#SP17" class="function-link"><span class="function-syntax">Hierarchy::make_available</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-emt.html#SP9" class="function-link"><span class="function-syntax">Emit::named_numeric_constant_hex</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</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">GenericModule::emit_unchecked_hex</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">GenericModule::emit_unchecked_hex</span></span>:<br/><a href="3-gm.html#SP2_2">§2.2</a>, <a href="3-gm.html#SP2_3">§2.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">GenericModule::emit_unchecked_hex</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">GenericModule::emit_unchecked_hex</span></span>:<br/><a href="3-gm.html#SP2_1">§2.1</a>, <a href="3-gm.html#SP2_2">§2.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">val</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#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">id</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-hrr.html#SP17" class="function-link"><span class="function-syntax">Hierarchy::make_available</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-emt.html#SP9" class="function-link"><span class="function-syntax">Emit::named_unchecked_constant_hex</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -416,11 +416,11 @@ line, which is why we couldn't work this out earlier:
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ext</span><span class="plain-syntax"> = </span><span class="identifier-syntax">story_filename_extension</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">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">ext</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">ext</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"ulx"</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">with_debugging</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">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">this_is_a_release_compile</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">this_is_a_debug_compile</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">with_debugging</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ic.html#SP9" class="function-link"><span class="function-syntax">Supervisor::set_current_vm</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">TargetVMs::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">ext</span><span class="plain-syntax">, </span><span class="identifier-syntax">with_debugging</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">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">ext</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">ext</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"Inform6"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ic.html#SP9" class="function-link"><span class="function-syntax">Supervisor::set_current_vm</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">TargetVMs::find_with_hint</span><span class="plain-syntax">(</span><span class="identifier-syntax">ext</span><span class="plain-syntax">, </span><span class="identifier-syntax">with_debugging</span><span class="plain-syntax">));</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="1-ic.html#SP8">§8</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. </b></p>
|
||||
|
|
|
@ -101,7 +101,7 @@ if we are running inside <span class="extract"><span class="extract-syntax">info
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">kd</span><span class="plain-syntax">, </span><span class="reserved-syntax">kit_dependency</span><span class="plain-syntax">, </span><span class="identifier-syntax">project</span><span class="plain-syntax">-></span><span class="element-syntax">kits_to_include</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">command</span><span class="plain-syntax">, </span><span class="string-syntax">"-kit %S "</span><span class="plain-syntax">, </span><span class="identifier-syntax">kd</span><span class="plain-syntax">-></span><span class="element-syntax">kit</span><span class="plain-syntax">-></span><span class="element-syntax">as_copy</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">-></span><span class="element-syntax">work</span><span class="plain-syntax">-></span><span class="element-syntax">title</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">command</span><span class="plain-syntax">, </span><span class="string-syntax">"-format=%S "</span><span class="plain-syntax">, </span><span class="identifier-syntax">TargetVMs::get_unblorbed_extension</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">-></span><span class="element-syntax">for_vm</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">command</span><span class="plain-syntax">, </span><span class="string-syntax">"-format=%S "</span><span class="plain-syntax">, </span><span class="identifier-syntax">TargetVMs::get_full_format_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">-></span><span class="element-syntax">for_vm</span><span class="plain-syntax">));</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><a href="5-ps2.html#SP5" class="function-link"><span class="function-syntax">Projects::nest_list</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">project</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -776,7 +776,7 @@ icon associated with a given minor VM, and explicates what the icons mean:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</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">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">, </span><span class="identifier-syntax">target_vm</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">VM</span><span class="plain-syntax">-></span><span class="identifier-syntax">with_debugging_enabled</span><span class="plain-syntax">) </span><span class="reserved-syntax">continue</span><span class="plain-syntax">; </span><span class="comment-syntax"> avoids listing twice</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">TargetVMs::debug_enabled</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">)) </span><span class="reserved-syntax">continue</span><span class="plain-syntax">; </span><span class="comment-syntax"> avoids listing twice</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">i</span><span class="plain-syntax">++ > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">", "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="7-ip.html#SP2" class="function-link"><span class="function-syntax">ExtensionIndex::plot_icon</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">VM</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TargetVMs::write</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">VM</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -308,11 +308,11 @@ line, which is why we couldn't work this out earlier:
|
|||
|
||||
@<Find the virtual machine@> =
|
||||
text_stream *ext = story_filename_extension;
|
||||
if (Str::len(ext) == 0) ext = I"ulx";
|
||||
int with_debugging = FALSE;
|
||||
if ((this_is_a_release_compile == FALSE) || (this_is_a_debug_compile))
|
||||
with_debugging = TRUE;
|
||||
Supervisor::set_current_vm(TargetVMs::find(ext, with_debugging));
|
||||
if (Str::len(ext) == 0) ext = I"Inform6";
|
||||
Supervisor::set_current_vm(TargetVMs::find_with_hint(ext, with_debugging));
|
||||
|
||||
@ =
|
||||
target_vm *current_target_VM = NULL;
|
||||
|
|
|
@ -29,7 +29,7 @@ int Inform7Skill::inform7_via_shell(build_skill *skill, build_step *S,
|
|||
LOOP_OVER_LINKED_LIST(kd, kit_dependency, project->kits_to_include)
|
||||
WRITE_TO(command, "-kit %S ", kd->kit->as_copy->edition->work->title);
|
||||
|
||||
WRITE_TO(command, "-format=%S ", TargetVMs::get_unblorbed_extension(S->for_vm));
|
||||
WRITE_TO(command, "-format=%S ", TargetVMs::get_full_format_text(S->for_vm));
|
||||
|
||||
inbuild_nest *N;
|
||||
linked_list *L = Projects::nest_list(project);
|
||||
|
|
|
@ -582,7 +582,7 @@ void ExtensionIndex::write_key(OUTPUT_STREAM) {
|
|||
int i = 0;
|
||||
target_vm *VM;
|
||||
LOOP_OVER(VM, target_vm) {
|
||||
if (VM->with_debugging_enabled) continue; /* avoids listing twice */
|
||||
if (TargetVMs::debug_enabled(VM)) continue; /* avoids listing twice */
|
||||
if (i++ > 0) WRITE(", ");
|
||||
ExtensionIndex::plot_icon(OUT, VM);
|
||||
TargetVMs::write(OUT, VM);
|
||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -1,72 +1,72 @@
|
|||
Total memory consumption was 387862K = 379 MB
|
||||
Total memory consumption was 383663K = 375 MB
|
||||
|
||||
61.6% was used for 1997559 objects, in 371302 frames in 299 x 800K = 239200K = 233 MB:
|
||||
61.5% was used for 1991443 objects, in 368767 frames in 295 x 800K = 236000K = 230 MB:
|
||||
|
||||
10.5% inter_tree_node_array 58 x 8192 = 475136 objects, 41813824 bytes
|
||||
7.2% text_stream_array 5142 x 100 = 514200 objects, 28959744 bytes
|
||||
4.3% linked_list 30875 objects, 17290000 bytes
|
||||
10.6% inter_tree_node_array 58 x 8192 = 475136 objects, 41813824 bytes
|
||||
7.3% text_stream_array 5126 x 100 = 512600 objects, 28869632 bytes
|
||||
4.3% linked_list 30605 objects, 17138800 bytes
|
||||
4.0% inter_symbol_array 139 x 1024 = 142336 objects, 15946080 bytes
|
||||
2.6% parse_node 129399 objects, 10351920 bytes
|
||||
2.6% parse_node 128478 objects, 10278240 bytes
|
||||
1.8% verb_conjugation 160 objects, 7425280 bytes
|
||||
1.3% parse_node_annotation_array 345 x 500 = 172500 objects, 5531040 bytes
|
||||
1.3% parse_node_annotation_array 343 x 500 = 171500 objects, 5498976 bytes
|
||||
0.8% pcalc_prop_array 25 x 1000 = 25000 objects, 3400800 bytes
|
||||
0.8% inter_name_array 69 x 1000 = 69000 objects, 3314208 bytes
|
||||
0.6% kind_array 68 x 1000 = 68000 objects, 2722176 bytes
|
||||
0.6% kind_array 67 x 1000 = 67000 objects, 2682144 bytes
|
||||
0.5% inter_name_generator_array 53 x 1000 = 53000 objects, 2121696 bytes
|
||||
0.4% inter_schema_token 13472 objects, 1939968 bytes
|
||||
0.4% inter_package 26572 objects, 1913184 bytes
|
||||
0.4% package_request 21138 objects, 1860144 bytes
|
||||
0.4% inter_schema_token 13430 objects, 1933920 bytes
|
||||
0.4% inter_package 26435 objects, 1903320 bytes
|
||||
0.4% package_request 20997 objects, 1847736 bytes
|
||||
0.4% vocabulary_entry_array 161 x 100 = 16100 objects, 1808352 bytes
|
||||
0.4% inter_symbols_table 26572 objects, 1700608 bytes
|
||||
0.4% dictionary 33269 objects, 1596912 bytes
|
||||
0.4% inter_symbols_table 26435 objects, 1691840 bytes
|
||||
0.4% dictionary 33115 objects, 1589520 bytes
|
||||
0.3% match_trie_array 11 x 1000 = 11000 objects, 1496352 bytes
|
||||
0.3% i6_schema_array 23 x 100 = 2300 objects, 1380736 bytes
|
||||
0.3% dict_entry_array 398 x 100 = 39800 objects, 1286336 bytes
|
||||
0.3% dict_entry_array 399 x 100 = 39900 objects, 1289568 bytes
|
||||
0.2% map_data 670 objects, 1125600 bytes
|
||||
0.2% id_body 940 objects, 1075360 bytes
|
||||
0.2% adjective_meaning 202 objects, 1000304 bytes
|
||||
0.2% excerpt_meaning 3099 objects, 966888 bytes
|
||||
0.2% id_body 898 objects, 1027312 bytes
|
||||
0.2% adjective_meaning 196 objects, 970592 bytes
|
||||
0.2% excerpt_meaning 3036 objects, 947232 bytes
|
||||
0.2% production 3872 objects, 898304 bytes
|
||||
0.2% ptoken 8382 objects, 871728 bytes
|
||||
0.2% grammatical_usage 3611 objects, 866640 bytes
|
||||
0.2% individual_form 2561 objects, 860496 bytes
|
||||
0.2% inter_schema_node 8670 objects, 832320 bytes
|
||||
0.2% grammatical_usage 3591 objects, 861840 bytes
|
||||
0.2% individual_form 2537 objects, 852432 bytes
|
||||
0.2% inter_schema_node 8647 objects, 830112 bytes
|
||||
0.1% unary_predicate_array 16 x 1000 = 16000 objects, 640512 bytes
|
||||
0.1% local_variable_array 47 x 100 = 4700 objects, 452704 bytes
|
||||
---- scan_directory 94 objects, 388032 bytes
|
||||
0.1% local_variable_array 46 x 100 = 4600 objects, 443072 bytes
|
||||
---- verb_usage 1128 objects, 388032 bytes
|
||||
---- scan_directory 94 objects, 388032 bytes
|
||||
---- rule 469 objects, 367696 bytes
|
||||
---- verb_form 386 objects, 345856 bytes
|
||||
---- noun 2380 objects, 285600 bytes
|
||||
---- compilation_subtask 3346 objects, 267680 bytes
|
||||
---- noun 2360 objects, 283200 bytes
|
||||
---- compilation_subtask 3338 objects, 267040 bytes
|
||||
---- inference_subject 665 objects, 260680 bytes
|
||||
---- inter_annotation_array 1 x 8192 objects, 196640 bytes
|
||||
---- hierarchy_location 1116 objects, 169632 bytes
|
||||
---- binary_predicate 321 objects, 169488 bytes
|
||||
---- linguistic_stock_item 3316 objects, 159168 bytes
|
||||
---- hierarchy_location 1103 objects, 167656 bytes
|
||||
---- linguistic_stock_item 3292 objects, 158016 bytes
|
||||
---- rule_family_data 400 objects, 147200 bytes
|
||||
---- nonterminal 760 objects, 139840 bytes
|
||||
---- nascent_array 2126 objects, 136064 bytes
|
||||
---- nascent_array 2104 objects, 134656 bytes
|
||||
---- documentation_ref 1273 objects, 112024 bytes
|
||||
---- inference 1703 objects, 108992 bytes
|
||||
---- imperative_defn 1376 objects, 99072 bytes
|
||||
---- inter_tree 6 objects, 98304 bytes
|
||||
---- noun_usage 2402 objects, 96080 bytes
|
||||
---- anl_entry_array 2 x 1000 = 2000 objects, 96064 bytes
|
||||
---- imperative_defn 1334 objects, 96048 bytes
|
||||
---- noun_usage 2382 objects, 95280 bytes
|
||||
---- preposition 273 objects, 87360 bytes
|
||||
---- lexical_cluster 2517 objects, 80544 bytes
|
||||
---- pcalc_term_array 2 x 1000 = 2000 objects, 80064 bytes
|
||||
---- lexical_cluster 2493 objects, 79776 bytes
|
||||
---- kind_variable_declaration 1652 objects, 79296 bytes
|
||||
---- inter_schema 1508 objects, 72384 bytes
|
||||
---- inter_schema 1503 objects, 72144 bytes
|
||||
---- label_namespace 1468 objects, 70464 bytes
|
||||
---- rulebook 407 objects, 68376 bytes
|
||||
---- spatial_data 670 objects, 64320 bytes
|
||||
---- kind_macro_definition 9 objects, 62280 bytes
|
||||
---- booking 860 objects, 61920 bytes
|
||||
---- actions_rcd_data 1880 objects, 60160 bytes
|
||||
---- scenes_rcd_data 1880 objects, 60160 bytes
|
||||
---- command_grammar 130 objects, 58240 bytes
|
||||
---- kind_constructor 77 objects, 57904 bytes
|
||||
---- actions_rcd_data 1796 objects, 57472 bytes
|
||||
---- scenes_rcd_data 1796 objects, 57472 bytes
|
||||
---- table 7 objects, 56672 bytes
|
||||
---- pcalc_func_array 1 x 1000 objects, 56032 bytes
|
||||
---- cg_line 230 objects, 53360 bytes
|
||||
|
@ -74,17 +74,17 @@ Total memory consumption was 387862K = 379 MB
|
|||
---- property_inference_data 1315 objects, 52600 bytes
|
||||
---- response_message 407 objects, 52096 bytes
|
||||
---- ap_clause_array 2 x 400 = 800 objects, 51264 bytes
|
||||
---- inter_node_list 769 objects, 43064 bytes
|
||||
---- inter_node_list 765 objects, 42840 bytes
|
||||
---- text_substitution 436 objects, 41856 bytes
|
||||
---- activity_list_array 1 x 1000 objects, 40032 bytes
|
||||
---- anl_clause_array 1 x 1000 objects, 40032 bytes
|
||||
---- to_family_data 496 objects, 39680 bytes
|
||||
---- activity_list_array 1 x 1000 objects, 40032 bytes
|
||||
---- shared_variable_access_list_array 12 x 100 = 1200 objects, 38784 bytes
|
||||
---- parsing_data 670 objects, 37520 bytes
|
||||
---- heading 198 objects, 36432 bytes
|
||||
---- to_family_data 458 objects, 36640 bytes
|
||||
---- heading 195 objects, 35880 bytes
|
||||
---- production_list 617 objects, 34552 bytes
|
||||
---- regions_data 670 objects, 32160 bytes
|
||||
---- counting_data 670 objects, 32160 bytes
|
||||
---- regions_data 670 objects, 32160 bytes
|
||||
---- HTML_tag_array 1 x 1000 objects, 32032 bytes
|
||||
---- property_permission 96 objects, 31488 bytes
|
||||
---- stack_frame_box 304 objects, 29184 bytes
|
||||
|
@ -101,18 +101,17 @@ Total memory consumption was 387862K = 379 MB
|
|||
---- instance 167 objects, 17368 bytes
|
||||
---- parse_node_tree 20 objects, 17280 bytes
|
||||
---- understanding_reference_array 2 x 100 = 200 objects, 16064 bytes
|
||||
---- linked_list_item_array 1 x 1000 objects, 16032 bytes
|
||||
---- action_name_list_array 1 x 1000 objects, 16032 bytes
|
||||
---- match_avinue_array 1 x 1000 objects, 16032 bytes
|
||||
---- linked_list_item_array 1 x 1000 objects, 16032 bytes
|
||||
---- to_phrase_request 59 objects, 15576 bytes
|
||||
---- adjective 137 objects, 15344 bytes
|
||||
---- adjective 133 objects, 14896 bytes
|
||||
---- to_phrase_request 55 objects, 14520 bytes
|
||||
---- booking_list 407 objects, 13024 bytes
|
||||
---- adjective_iname_holder 320 objects, 12800 bytes
|
||||
---- adjective_iname_holder 314 objects, 12560 bytes
|
||||
---- pathname 294 objects, 11760 bytes
|
||||
---- uniqueness_count 454 objects, 10896 bytes
|
||||
---- uniqueness_count 453 objects, 10872 bytes
|
||||
---- stopwatch_timer 113 objects, 9040 bytes
|
||||
---- filename 212 objects, 8480 bytes
|
||||
---- equation_node 68 objects, 7616 bytes
|
||||
---- hierarchy_attachment_point 77 objects, 7392 bytes
|
||||
---- understanding_item_array 3 x 100 = 300 objects, 7296 bytes
|
||||
---- shared_variable_array 1 x 100 objects, 7232 bytes
|
||||
|
@ -131,45 +130,43 @@ Total memory consumption was 387862K = 379 MB
|
|||
---- submodule_request 94 objects, 3760 bytes
|
||||
---- parse_node_annotation_type 114 objects, 3648 bytes
|
||||
---- command_line_switch 43 objects, 3440 bytes
|
||||
---- property_setting_bp_data 84 objects, 3360 bytes
|
||||
---- compatibility_specification 70 objects, 3360 bytes
|
||||
---- property_setting_bp_data 84 objects, 3360 bytes
|
||||
---- method_set 103 objects, 3296 bytes
|
||||
---- kind_constructor_comparison_schema_array 1 x 100 objects, 3232 bytes
|
||||
---- inform_extension 19 objects, 3192 bytes
|
||||
---- definition 44 objects, 3168 bytes
|
||||
---- either_or_property_data 62 objects, 2976 bytes
|
||||
---- definition 40 objects, 2880 bytes
|
||||
---- use_option 29 objects, 2552 bytes
|
||||
---- part_of_inference_data 79 objects, 2528 bytes
|
||||
---- parentage_inference_data 79 objects, 2528 bytes
|
||||
---- kind_constructor_casting_rule_array 1 x 100 objects, 2432 bytes
|
||||
---- part_of_inference_data 79 objects, 2528 bytes
|
||||
---- kind_constructor_instance_array 1 x 100 objects, 2432 bytes
|
||||
---- kind_constructor_casting_rule_array 1 x 100 objects, 2432 bytes
|
||||
---- inter_construct 30 objects, 2400 bytes
|
||||
---- equation_symbol 30 objects, 2400 bytes
|
||||
---- semver_range 22 objects, 2288 bytes
|
||||
---- scene 1 object, 2096 bytes
|
||||
---- pipeline_step 15 objects, 2040 bytes
|
||||
---- pronoun_usage 42 objects, 1680 bytes
|
||||
---- table_contribution_array 1 x 100 objects, 1632 bytes
|
||||
---- plugin 25 objects, 1600 bytes
|
||||
---- cached_kind_declaration 39 objects, 1560 bytes
|
||||
---- cached_kind_declaration 37 objects, 1480 bytes
|
||||
---- noun_filter_token 22 objects, 1408 bytes
|
||||
---- build_script 44 objects, 1408 bytes
|
||||
---- inter_tree_location_list 34 objects, 1360 bytes
|
||||
---- inter_annotation_form 34 objects, 1360 bytes
|
||||
---- special_meaning_holder 33 objects, 1320 bytes
|
||||
---- table_column 16 objects, 1280 bytes
|
||||
---- constant_phrase 20 objects, 1280 bytes
|
||||
---- invocation_options_array 1 x 100 objects, 1224 bytes
|
||||
---- target_vm 8 objects, 1216 bytes
|
||||
---- direction_inference_data 30 objects, 1200 bytes
|
||||
---- tree_inventory_item 28 objects, 1120 bytes
|
||||
---- runtime_kind_structure 13 objects, 1040 bytes
|
||||
---- target_vm 8 objects, 1088 bytes
|
||||
---- quantifier 16 objects, 1024 bytes
|
||||
---- pipeline_stage 20 objects, 960 bytes
|
||||
---- submodule_identity 30 objects, 960 bytes
|
||||
---- named_rulebook_outcome 15 objects, 960 bytes
|
||||
---- pipeline_stage 20 objects, 960 bytes
|
||||
---- code_generation 1 object, 888 bytes
|
||||
---- inbuild_requirement 22 objects, 880 bytes
|
||||
---- runtime_kind_structure 11 objects, 880 bytes
|
||||
---- generated_segment 27 objects, 864 bytes
|
||||
---- control_structure_phrase 12 objects, 864 bytes
|
||||
---- cached_understanding 21 objects, 840 bytes
|
||||
|
@ -177,16 +174,15 @@ Total memory consumption was 387862K = 379 MB
|
|||
---- inter_data_type 14 objects, 784 bytes
|
||||
---- internal_test 15 objects, 720 bytes
|
||||
---- inform_language 6 objects, 672 bytes
|
||||
---- inter_warehouse_room 10 objects, 640 bytes
|
||||
---- relation_guard 5 objects, 640 bytes
|
||||
---- I6T_intervention 8 objects, 640 bytes
|
||||
---- relation_guard 5 objects, 640 bytes
|
||||
---- inter_warehouse_room 10 objects, 640 bytes
|
||||
---- inbuild_search_result 15 objects, 600 bytes
|
||||
---- rulebook_outcome 17 objects, 544 bytes
|
||||
---- small_word_set 11 objects, 528 bytes
|
||||
---- inform_kit 5 objects, 520 bytes
|
||||
---- implication 13 objects, 520 bytes
|
||||
---- inform_pipeline 8 objects, 512 bytes
|
||||
---- equation 4 objects, 480 bytes
|
||||
---- inference_family 11 objects, 440 bytes
|
||||
---- i6_memory_setting 13 objects, 416 bytes
|
||||
---- module_package 10 objects, 400 bytes
|
||||
|
@ -198,10 +194,10 @@ Total memory consumption was 387862K = 379 MB
|
|||
---- pronoun 8 objects, 320 bytes
|
||||
---- grammatical_category 8 objects, 320 bytes
|
||||
---- tree_inventory 1 object, 312 bytes
|
||||
---- build_step 4 objects, 288 bytes
|
||||
---- up_family 9 objects, 288 bytes
|
||||
---- door_to_notice 5 objects, 280 bytes
|
||||
---- build_step 4 objects, 288 bytes
|
||||
---- explicit_bp_data 5 objects, 280 bytes
|
||||
---- door_to_notice 5 objects, 280 bytes
|
||||
---- compilation_unit 5 objects, 280 bytes
|
||||
---- contents_entry 7 objects, 280 bytes
|
||||
---- verb_usage_tier 5 objects, 240 bytes
|
||||
|
@ -214,47 +210,47 @@ Total memory consumption was 387862K = 379 MB
|
|||
---- plural_dictionary_entry 4 objects, 192 bytes
|
||||
---- inform_project 1 object, 176 bytes
|
||||
---- kov_value_stick 3 objects, 168 bytes
|
||||
---- inference_subject_family 5 objects, 160 bytes
|
||||
---- inter_architecture 4 objects, 160 bytes
|
||||
---- imperative_defn_family 4 objects, 160 bytes
|
||||
---- link_instruction 4 objects, 160 bytes
|
||||
---- inference_subject_family 5 objects, 160 bytes
|
||||
---- inter_architecture 4 objects, 160 bytes
|
||||
---- codegen_pipeline 1 object, 128 bytes
|
||||
---- element_activation 4 objects, 128 bytes
|
||||
---- inbuild_nest 3 objects, 120 bytes
|
||||
---- local_block_value 2 objects, 112 bytes
|
||||
---- inform_kit_ittt 2 objects, 96 bytes
|
||||
---- compile_task_data 1 object, 80 bytes
|
||||
---- group_together_function 2 objects, 80 bytes
|
||||
---- article 2 objects, 80 bytes
|
||||
---- group_together_function 2 objects, 80 bytes
|
||||
---- inter_warehouse 1 object, 56 bytes
|
||||
---- build_methodology 1 object, 56 bytes
|
||||
---- figures_data 1 object, 56 bytes
|
||||
---- inter_warehouse 1 object, 56 bytes
|
||||
---- HTML_file_state 1 object, 48 bytes
|
||||
---- star_invention 1 object, 48 bytes
|
||||
---- by_function_bp_data 1 object, 40 bytes
|
||||
---- loop_over_scope 1 object, 40 bytes
|
||||
---- kind_template_definition 1 object, 40 bytes
|
||||
---- by_function_bp_data 1 object, 40 bytes
|
||||
---- I6_generation_data 1 object, 24 bytes
|
||||
|
||||
38.3% was used for memory not allocated for objects:
|
||||
38.4% was used for memory not allocated for objects:
|
||||
|
||||
19.2% text stream storage 76354128 bytes in 531932 claims
|
||||
4.5% dictionary storage 18177024 bytes in 33269 claims
|
||||
19.1% text stream storage 75429500 bytes in 530079 claims
|
||||
4.6% dictionary storage 18098176 bytes in 33115 claims
|
||||
---- sorting 744 bytes in 3 claims
|
||||
1.8% source text 7200000 bytes in 3 claims
|
||||
2.7% source text details 10800000 bytes in 2 claims
|
||||
---- documentation fragments 262144 bytes in 1 claim
|
||||
---- linguistic stock array 81920 bytes in 2 claims
|
||||
---- small word set array 105600 bytes in 22 claims
|
||||
1.0% inter symbols storage 4175472 bytes in 27683 claims
|
||||
1.0% inter symbols storage 4157936 bytes in 27546 claims
|
||||
4.2% inter bytecode storage 16802804 bytes in 14 claims
|
||||
4.0% inter links storage 16174208 bytes in 266 claims
|
||||
4.1% inter links storage 16174208 bytes in 266 claims
|
||||
---- inter tree location list storage 191232 bytes in 32 claims
|
||||
0.4% instance-of-kind counting 1695204 bytes in 1 claim
|
||||
---- compilation workspace for objects 21856 bytes in 25 claims
|
||||
---- lists for type-checking invocations 16000 bytes in 1 claim
|
||||
---- code generation workspace for objects 9648 bytes in 9 claims
|
||||
---- emitter array storage 161920 bytes in 2064 claims
|
||||
---- code generation workspace for objects 9600 bytes in 9 claims
|
||||
---- emitter array storage 160512 bytes in 2042 claims
|
||||
|
||||
18.8% was overhead - 75000472 bytes = 73242K = 71 MB
|
||||
18.4% was overhead - 72309928 bytes = 70615K = 68 MB
|
||||
|
||||
|
|
|
@ -1,25 +1,25 @@
|
|||
<s-literal> hits 2097/23838 nti 14 constraint (none) extremes [1, infinity)
|
||||
<s-literal> hits 2075/23610 nti 14 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
(@1)<cardinal-number>=1
|
||||
(hits 171/171) (matched: '100') constraint CS = {r0} extremes [1, 1]
|
||||
(hits 160/160) (matched: '100') constraint CS = {r0} extremes [1, 1]
|
||||
(@1)minus (@2)<cardinal-number>=1
|
||||
(hits 0/1806) constraint DS = {14} extremes [2, 2]
|
||||
(hits 0/1798) constraint DS = {14} extremes [2, 2]
|
||||
(@1)<quoted-text>=1 (@2)( (@3)<response-letter>=2 (@4))
|
||||
(hits 273/830) (matched: '"[current item from the multiple object list]: [run paragraph on]" ( a )') constraint DS = {14} extremes [4, 4]
|
||||
(@1)<quoted-text>=1
|
||||
(hits 1564/5543) (matched: 'Represents geographical locations, both indoor
|
||||
(hits 1564/5532) (matched: 'Represents geographical locations, both indoor
|
||||
and outdoor, which are not necessarily areas in a building. A player in one
|
||||
room is mostly unable to sense, or interact with, anything in a different room.
|
||||
Rooms are arranged in a map.') constraint (none) extremes [1, 1]
|
||||
<s-literal-real-number>=1
|
||||
(hits 11/9911) (matched: 'plus infinity') constraint (none) extremes [1, infinity)
|
||||
(hits 0/9808) constraint (none) extremes [1, infinity)
|
||||
(@1)<s-literal-truth-state>=1
|
||||
(hits 78/196) (matched: 'false') constraint CS = {8} extremes [1, 1]
|
||||
<s-literal-list>=1
|
||||
(hits 0/3281) constraint DS = {10} extremes [2, infinity)
|
||||
(hits 0/3197) constraint DS = {10} extremes [2, infinity)
|
||||
(@1)unicode <s-unicode-character>=1
|
||||
(hits 0/4183) constraint DS = {14} extremes [2, infinity)
|
||||
(hits 0/4175) constraint DS = {14} extremes [2, infinity)
|
||||
<s-literal-time>=1
|
||||
(hits 0/3738) constraint DW = {11, 12, 13} extremes [2, 5]
|
||||
<s-literal-unit-notation>=1
|
||||
(hits 0/9822) constraint (none) extremes [1, infinity)
|
||||
(hits 0/9730) constraint (none) extremes [1, infinity)
|
||||
|
|
|
@ -28,8 +28,8 @@ ROOT_NT
|
|||
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}
|
||||
UNPARSED_NOUN_NT'asking for information'
|
||||
UNPARSED_NOUN_NT'out of world'
|
||||
IMPERATIVE_NT'carry out asking for information' {unit: 4} {imperative definition: 798}
|
||||
IMPERATIVE_NT'when play begins' {unit: 4} {imperative definition: 799}
|
||||
IMPERATIVE_NT'carry out asking for information' {unit: 4} {imperative definition: 756}
|
||||
IMPERATIVE_NT'when play begins' {unit: 4} {imperative definition: 757}
|
||||
HEADING_NT'section 1 - errands' {heading 5} {under: H5'section 1 - errands'} {unit: 4}
|
||||
SENTENCE_NT'the current actor is a person which varies' {unit: 4} {classified}
|
||||
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
|
||||
|
@ -39,8 +39,8 @@ ROOT_NT
|
|||
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
|
||||
PROPER_NOUN_NT'current owner' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: NONLOCAL_VARIABLE_NT'current owner' {nonlocal: 'current owner'(var)person}} {created here}
|
||||
COMMON_NOUN_NT'person which varies' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values variable-pointer'-k} {creation: << kind=people variable-pointer(x) >>} {eval: TEST_VALUE_NT}
|
||||
IMPERATIVE_NT'every turn' {unit: 4} {imperative definition: 800}
|
||||
IMPERATIVE_NT'every turn' {unit: 4} {imperative definition: 801}
|
||||
IMPERATIVE_NT'every turn' {unit: 4} {imperative definition: 758}
|
||||
IMPERATIVE_NT'every turn' {unit: 4} {imperative definition: 759}
|
||||
SENTENCE_NT'a person can be active or passive' {unit: 4} {classified}
|
||||
VERB_NT'can be' {verb 'be able to be' s/p 3p act IS_TENSE +ve} {special meaning: can-be}
|
||||
COMMON_NOUN_NT'a person' {refined} {refers: infs'person'} {creation: << kind=person(x) >>} {eval: TEST_VALUE_NT}
|
||||
|
@ -56,34 +56,34 @@ ROOT_NT
|
|||
VERB_NT'are' {verb 'be' 3p p act IS_TENSE +ve}
|
||||
PROPER_NOUN_NT'character movement rules' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT {kind: rulebook} {rulebook: character movement}} {created here}
|
||||
COMMON_NOUN_NT'rulebook' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values based rulebook producing values'-k} {creation: << kind=rulebook(x) >>} {eval: TEST_VALUE_NT}
|
||||
IMPERATIVE_NT'the first character movement rule' {unit: 4} {imperative definition: 802}
|
||||
IMPERATIVE_NT'a character movement rule' {unit: 4} {imperative definition: 803}
|
||||
IMPERATIVE_NT'a character movement rule' {unit: 4} {imperative definition: 804}
|
||||
IMPERATIVE_NT'to decide whether movement has not yet occurred' {unit: 4} {imperative definition: 805}
|
||||
IMPERATIVE_NT'definition' {unit: 4} {imperative definition: 806}
|
||||
IMPERATIVE_NT'definition' {unit: 4} {imperative definition: 807}
|
||||
IMPERATIVE_NT'the first character movement rule' {unit: 4} {imperative definition: 760}
|
||||
IMPERATIVE_NT'a character movement rule' {unit: 4} {imperative definition: 761}
|
||||
IMPERATIVE_NT'a character movement rule' {unit: 4} {imperative definition: 762}
|
||||
IMPERATIVE_NT'to decide whether movement has not yet occurred' {unit: 4} {imperative definition: 763}
|
||||
IMPERATIVE_NT'definition' {unit: 4} {imperative definition: 764}
|
||||
IMPERATIVE_NT'definition' {unit: 4} {imperative definition: 765}
|
||||
SENTENCE_NT'the shopowner rules is a rulebook' {unit: 4} {classified} {clears pronouns}
|
||||
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
|
||||
PROPER_NOUN_NT'shopowner rules' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT {kind: rulebook} {rulebook: shopowner}} {created here}
|
||||
COMMON_NOUN_NT'rulebook' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values based rulebook producing values'-k} {creation: << kind=rulebook(x) >>} {eval: TEST_VALUE_NT}
|
||||
IMPERATIVE_NT'a shopowner rule' {unit: 4} {imperative definition: 808}
|
||||
IMPERATIVE_NT'report someone closing a door when the person asked owns the' {unit: 4} {imperative definition: 809}
|
||||
IMPERATIVE_NT'report vanessa closing the metal door when the metal door is' {unit: 4} {imperative definition: 810}
|
||||
IMPERATIVE_NT'a shopowner rule' {unit: 4} {imperative definition: 811}
|
||||
IMPERATIVE_NT'a shopowner rule' {unit: 4} {imperative definition: 766}
|
||||
IMPERATIVE_NT'report someone closing a door when the person asked owns the' {unit: 4} {imperative definition: 767}
|
||||
IMPERATIVE_NT'report vanessa closing the metal door when the metal door is' {unit: 4} {imperative definition: 768}
|
||||
IMPERATIVE_NT'a shopowner rule' {unit: 4} {imperative definition: 769}
|
||||
SENTENCE_NT'filing is an action applying to one thing' {unit: 4} {classified}
|
||||
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}
|
||||
UNPARSED_NOUN_NT'filing'
|
||||
UNPARSED_NOUN_NT'applying to one thing'
|
||||
IMPERATIVE_NT'before someone filing something which is not carried by the ' {unit: 4} {imperative definition: 812}
|
||||
IMPERATIVE_NT'carry out someone filing' {unit: 4} {imperative definition: 813}
|
||||
IMPERATIVE_NT'report someone filing' {unit: 4} {imperative definition: 814}
|
||||
IMPERATIVE_NT'before someone filing something which is not carried by the ' {unit: 4} {imperative definition: 770}
|
||||
IMPERATIVE_NT'carry out someone filing' {unit: 4} {imperative definition: 771}
|
||||
IMPERATIVE_NT'report someone filing' {unit: 4} {imperative definition: 772}
|
||||
SENTENCE_NT'the shopper rules is a rulebook' {unit: 4} {classified} {clears pronouns}
|
||||
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
|
||||
PROPER_NOUN_NT'shopper rules' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT {kind: rulebook} {rulebook: shopper}} {created here}
|
||||
COMMON_NOUN_NT'rulebook' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values based rulebook producing values'-k} {creation: << kind=rulebook(x) >>} {eval: TEST_VALUE_NT}
|
||||
IMPERATIVE_NT'a shopper rule' {unit: 4} {imperative definition: 815}
|
||||
IMPERATIVE_NT'a shopper rule' {unit: 4} {imperative definition: 816}
|
||||
IMPERATIVE_NT'definition' {unit: 4} {imperative definition: 817}
|
||||
IMPERATIVE_NT'a shopper rule' {unit: 4} {imperative definition: 773}
|
||||
IMPERATIVE_NT'a shopper rule' {unit: 4} {imperative definition: 774}
|
||||
IMPERATIVE_NT'definition' {unit: 4} {imperative definition: 775}
|
||||
DEFN_CONT_NT'a room is air-conditioned' {unit: 4}
|
||||
CODE_BLOCK_NT
|
||||
CODE_BLOCK_NT {control structure: IF}
|
||||
|
@ -141,8 +141,8 @@ ROOT_NT
|
|||
COMMON_NOUN_NT'artwork' {indefinite 'an' n/m/f nom/acc s} {refined} {creation: << kind=artwork(x) >>} {refers: infs'artwork'} {eval: TEST_VALUE_NT} {created here}
|
||||
KIND_NT'kind of thing' {refined} {refers: infs'thing'}
|
||||
COMMON_NOUN_NT'thing' {refined} {refers: infs'thing'} {creation: << kind=thing(x) >>} {eval: TEST_VALUE_NT}
|
||||
IMPERATIVE_NT'before printing the name of an artwork' {unit: 4} {imperative definition: 818}
|
||||
IMPERATIVE_NT'after printing the name of an artwork' {unit: 4} {imperative definition: 819}
|
||||
IMPERATIVE_NT'before printing the name of an artwork' {unit: 4} {imperative definition: 776}
|
||||
IMPERATIVE_NT'after printing the name of an artwork' {unit: 4} {imperative definition: 777}
|
||||
SENTENCE_NT'an artwork can be submitted or reserved' {unit: 4} {classified}
|
||||
VERB_NT'can be' {verb 'be able to be' s/p 3p act IS_TENSE +ve} {special meaning: can-be}
|
||||
COMMON_NOUN_NT'an artwork' {refined} {refers: infs'artwork'} {creation: << kind=artwork(x) >>} {eval: TEST_VALUE_NT}
|
||||
|
@ -155,49 +155,49 @@ ROOT_NT
|
|||
COMMON_NOUN_NT'book' {indefinite 'a' n/m/f nom/acc s} {refined} {creation: << kind=book(x) >>} {refers: infs'book'} {eval: TEST_VALUE_NT} {created here}
|
||||
KIND_NT'kind of artwork' {refined} {refers: infs'artwork'}
|
||||
COMMON_NOUN_NT'artwork' {refined} {refers: infs'artwork'} {creation: << kind=artwork(x) >>} {eval: TEST_VALUE_NT}
|
||||
IMPERATIVE_NT'before someone resolving a book when the person asked is not' {unit: 4} {imperative definition: 820}
|
||||
IMPERATIVE_NT'carry out someone resolving a book' {unit: 4} {imperative definition: 821}
|
||||
IMPERATIVE_NT'report someone resolving a book' {unit: 4} {imperative definition: 822}
|
||||
IMPERATIVE_NT'before listing contents' {unit: 4} {imperative definition: 823}
|
||||
IMPERATIVE_NT'before grouping together books' {unit: 4} {imperative definition: 824}
|
||||
IMPERATIVE_NT'before someone resolving a book when the person asked is not' {unit: 4} {imperative definition: 778}
|
||||
IMPERATIVE_NT'carry out someone resolving a book' {unit: 4} {imperative definition: 779}
|
||||
IMPERATIVE_NT'report someone resolving a book' {unit: 4} {imperative definition: 780}
|
||||
IMPERATIVE_NT'before listing contents' {unit: 4} {imperative definition: 781}
|
||||
IMPERATIVE_NT'before grouping together books' {unit: 4} {imperative definition: 782}
|
||||
SENTENCE_NT'a stamped envelope is a kind of thing' {unit: 4} {classified} {interpretation of subject: infs'book'}
|
||||
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
|
||||
COMMON_NOUN_NT'stamped envelope' {indefinite 'a' n/m/f nom/acc s} {refined} {creation: << kind=stamped envelope(x) >>} {refers: infs'stamped envelope'} {eval: TEST_VALUE_NT} {created here}
|
||||
KIND_NT'kind of thing' {refined} {refers: infs'thing'}
|
||||
COMMON_NOUN_NT'thing' {refined} {refers: infs'thing'} {creation: << kind=thing(x) >>} {eval: TEST_VALUE_NT}
|
||||
IMPERATIVE_NT'before someone resolving a stamped envelope when the person ' {unit: 4} {imperative definition: 825}
|
||||
IMPERATIVE_NT'carry out someone resolving a stamped envelope' {unit: 4} {imperative definition: 826}
|
||||
IMPERATIVE_NT'report someone resolving a stamped envelope' {unit: 4} {imperative definition: 827}
|
||||
IMPERATIVE_NT'instead of someone resolving a stamped envelope when the per' {unit: 4} {imperative definition: 828}
|
||||
IMPERATIVE_NT'before someone resolving a stamped envelope when the person ' {unit: 4} {imperative definition: 783}
|
||||
IMPERATIVE_NT'carry out someone resolving a stamped envelope' {unit: 4} {imperative definition: 784}
|
||||
IMPERATIVE_NT'report someone resolving a stamped envelope' {unit: 4} {imperative definition: 785}
|
||||
IMPERATIVE_NT'instead of someone resolving a stamped envelope when the per' {unit: 4} {imperative definition: 786}
|
||||
SENTENCE_NT'a dvd is a kind of artwork' {unit: 4} {classified} {interpretation of subject: infs'stamped envelope'}
|
||||
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
|
||||
COMMON_NOUN_NT'dvd' {indefinite 'a' n/m/f nom/acc s} {refined} {creation: << kind=dvd(x) >>} {refers: infs'dvd'} {eval: TEST_VALUE_NT} {created here}
|
||||
KIND_NT'kind of artwork' {refined} {refers: infs'artwork'}
|
||||
COMMON_NOUN_NT'artwork' {refined} {refers: infs'artwork'} {creation: << kind=artwork(x) >>} {eval: TEST_VALUE_NT}
|
||||
IMPERATIVE_NT'before someone resolving a dvd when the person asked is not ' {unit: 4} {imperative definition: 829}
|
||||
IMPERATIVE_NT'carry out someone resolving a dvd' {unit: 4} {imperative definition: 830}
|
||||
IMPERATIVE_NT'report someone resolving a dvd' {unit: 4} {imperative definition: 831}
|
||||
IMPERATIVE_NT'instead of someone resolving a dvd when the person asked car' {unit: 4} {imperative definition: 832}
|
||||
IMPERATIVE_NT'before listing contents' {unit: 4} {imperative definition: 833}
|
||||
IMPERATIVE_NT'before grouping together dvds' {unit: 4} {imperative definition: 834}
|
||||
IMPERATIVE_NT'before someone resolving a dvd when the person asked is not ' {unit: 4} {imperative definition: 787}
|
||||
IMPERATIVE_NT'carry out someone resolving a dvd' {unit: 4} {imperative definition: 788}
|
||||
IMPERATIVE_NT'report someone resolving a dvd' {unit: 4} {imperative definition: 789}
|
||||
IMPERATIVE_NT'instead of someone resolving a dvd when the person asked car' {unit: 4} {imperative definition: 790}
|
||||
IMPERATIVE_NT'before listing contents' {unit: 4} {imperative definition: 791}
|
||||
IMPERATIVE_NT'before grouping together dvds' {unit: 4} {imperative definition: 792}
|
||||
SENTENCE_NT'approaching is an action applying to one thing' {unit: 4} {classified}
|
||||
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}
|
||||
UNPARSED_NOUN_NT'approaching'
|
||||
UNPARSED_NOUN_NT'applying to one thing'
|
||||
IMPERATIVE_NT'carry out someone approaching' {unit: 4} {imperative definition: 835}
|
||||
IMPERATIVE_NT'carry out someone approaching' {unit: 4} {imperative definition: 793}
|
||||
SENTENCE_NT'a coupon is a kind of thing' {unit: 4} {classified} {interpretation of subject: infs'dvd'}
|
||||
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
|
||||
COMMON_NOUN_NT'coupon' {indefinite 'a' n/m/f nom/acc s} {refined} {creation: << kind=coupon(x) >>} {refers: infs'coupon'} {eval: TEST_VALUE_NT} {created here}
|
||||
KIND_NT'kind of thing' {refined} {refers: infs'thing'}
|
||||
COMMON_NOUN_NT'thing' {refined} {refers: infs'thing'} {creation: << kind=thing(x) >>} {eval: TEST_VALUE_NT}
|
||||
IMPERATIVE_NT'carry out someone resolving a coupon' {unit: 4} {imperative definition: 836}
|
||||
IMPERATIVE_NT'carry out someone resolving a coupon' {unit: 4} {imperative definition: 794}
|
||||
SENTENCE_NT'the block giving rule is not listed in any rulebook' {unit: 4} {classified}
|
||||
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {rule placement sense: negative} {special meaning: rule-listed-in}
|
||||
UNPARSED_NOUN_NT'the block giving rule'
|
||||
UNPARSED_NOUN_NT'in any rulebook'
|
||||
IMPERATIVE_NT'check giving something to someone ( this is the block player' {unit: 4} {imperative definition: 837}
|
||||
IMPERATIVE_NT'before someone resolving a coupon when the person asked is n' {unit: 4} {imperative definition: 838}
|
||||
IMPERATIVE_NT'after someone giving a coupon to vanessa' {unit: 4} {imperative definition: 839}
|
||||
IMPERATIVE_NT'check giving something to someone ( this is the block player' {unit: 4} {imperative definition: 795}
|
||||
IMPERATIVE_NT'before someone resolving a coupon when the person asked is n' {unit: 4} {imperative definition: 796}
|
||||
IMPERATIVE_NT'after someone giving a coupon to vanessa' {unit: 4} {imperative definition: 797}
|
||||
SENTENCE_NT'infection color is a kind of value' {unit: 4} {classified} {interpretation of subject: infs'coupon'}
|
||||
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
|
||||
COMMON_NOUN_NT'infection color' {refined} {creation: << kind=infection color(x) >>} {refers: infs'object'-k} {eval: TEST_VALUE_NT} {created here}
|
||||
|
@ -257,7 +257,7 @@ ROOT_NT
|
|||
AND_NT',' {refined}
|
||||
PROPER_NOUN_NT'saffron silk' {refined} {refers: infs'saffron silk'} {eval: CONSTANT_NT'saffron silk' {kind: infection color} {instance: I86'saffron silk'[infection color]} {enumeration: 25}} {created here}
|
||||
PROPER_NOUN_NT'cookie dough cream' {refined} {refers: infs'cookie dough cream'} {eval: CONSTANT_NT'cookie dough cream' {kind: infection color} {instance: I87'cookie dough cream'[infection color]} {enumeration: 26}} {created here}
|
||||
IMPERATIVE_NT'to say list of flavors' {unit: 4} {imperative definition: 840}
|
||||
IMPERATIVE_NT'to say list of flavors' {unit: 4} {imperative definition: 798}
|
||||
SENTENCE_NT'understand "ask vanessa for [flavored ice cream]" as buying ' {unit: 4} {classified}
|
||||
VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}
|
||||
UNPARSED_NOUN_NT'"ask vanessa for [flavored ice cream]"'
|
||||
|
@ -270,8 +270,8 @@ ROOT_NT
|
|||
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}
|
||||
UNPARSED_NOUN_NT'buying the flavor'
|
||||
UNPARSED_NOUN_NT'applying to one infection color'
|
||||
IMPERATIVE_NT'check buying the flavor' {unit: 4} {imperative definition: 841}
|
||||
IMPERATIVE_NT'carry out buying the flavor' {unit: 4} {imperative definition: 842}
|
||||
IMPERATIVE_NT'check buying the flavor' {unit: 4} {imperative definition: 799}
|
||||
IMPERATIVE_NT'carry out buying the flavor' {unit: 4} {imperative definition: 800}
|
||||
SENTENCE_NT'understand "ice cream" or "cream" or "ice" or "sherbet" or "' {unit: 4} {classified}
|
||||
VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}
|
||||
UNPARSED_NOUN_NT'"ice cream" or "cream" or "ice" or "sherbet" or "sorbet"'
|
||||
|
@ -305,12 +305,12 @@ ROOT_NT
|
|||
VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}
|
||||
UNPARSED_NOUN_NT'the infection color property'
|
||||
UNPARSED_NOUN_NT'referring to an ice cream cone'
|
||||
IMPERATIVE_NT'carry out someone resolving an ice cream cone' {unit: 4} {imperative definition: 843}
|
||||
IMPERATIVE_NT'instead of someone eating a fresh ice cream cone' {unit: 4} {imperative definition: 844}
|
||||
IMPERATIVE_NT'report someone eating an ice cream cone' {unit: 4} {imperative definition: 845}
|
||||
IMPERATIVE_NT'before printing the name of an ice cream cone' {unit: 4} {imperative definition: 846}
|
||||
IMPERATIVE_NT'carry out someone resolving an ice cream cone' {unit: 4} {imperative definition: 801}
|
||||
IMPERATIVE_NT'instead of someone eating a fresh ice cream cone' {unit: 4} {imperative definition: 802}
|
||||
IMPERATIVE_NT'report someone eating an ice cream cone' {unit: 4} {imperative definition: 803}
|
||||
IMPERATIVE_NT'before printing the name of an ice cream cone' {unit: 4} {imperative definition: 804}
|
||||
HEADING_NT'section 2 - infection rules' {heading 5} {under: H5'section 2 - infection rules'} {unit: 4}
|
||||
IMPERATIVE_NT'this is the infection rule' {unit: 4} {imperative definition: 847}
|
||||
IMPERATIVE_NT'this is the infection rule' {unit: 4} {imperative definition: 805}
|
||||
SENTENCE_NT'a person can be infected or clean' {unit: 4} {classified}
|
||||
VERB_NT'can be' {verb 'be able to be' s/p 3p act IS_TENSE +ve} {special meaning: can-be}
|
||||
COMMON_NOUN_NT'a person' {refined} {refers: infs'person'} {creation: << kind=person(x) >>} {eval: TEST_VALUE_NT}
|
||||
|
@ -323,11 +323,11 @@ ROOT_NT
|
|||
COMMON_NOUN_NT'person' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'person'} {creation: << kind=person(x) >>} {eval: TEST_VALUE_NT}
|
||||
ALLOWED_NT'has' {refined}
|
||||
UNPARSED_NOUN_NT'infection color' {indefinite 'an' n/m/f nom/acc s} {refined}
|
||||
IMPERATIVE_NT'every turn' {unit: 4} {imperative definition: 848}
|
||||
IMPERATIVE_NT'definition' {unit: 4} {imperative definition: 849}
|
||||
IMPERATIVE_NT'definition' {unit: 4} {imperative definition: 850}
|
||||
IMPERATIVE_NT'when play begins' {unit: 4} {imperative definition: 851}
|
||||
IMPERATIVE_NT'every turn' {unit: 4} {imperative definition: 852}
|
||||
IMPERATIVE_NT'every turn' {unit: 4} {imperative definition: 806}
|
||||
IMPERATIVE_NT'definition' {unit: 4} {imperative definition: 807}
|
||||
IMPERATIVE_NT'definition' {unit: 4} {imperative definition: 808}
|
||||
IMPERATIVE_NT'when play begins' {unit: 4} {imperative definition: 809}
|
||||
IMPERATIVE_NT'every turn' {unit: 4} {imperative definition: 810}
|
||||
SENTENCE_NT'understand "sneeze on [something]" as sneezing on' {unit: 4} {classified}
|
||||
VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}
|
||||
UNPARSED_NOUN_NT'"sneeze on [something]"'
|
||||
|
@ -336,11 +336,11 @@ ROOT_NT
|
|||
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}
|
||||
UNPARSED_NOUN_NT'sneezing on'
|
||||
UNPARSED_NOUN_NT'applying to one thing'
|
||||
IMPERATIVE_NT'check sneezing on' {unit: 4} {imperative definition: 853}
|
||||
IMPERATIVE_NT'carry out sneezing on' {unit: 4} {imperative definition: 854}
|
||||
IMPERATIVE_NT'carry out someone sneezing on' {unit: 4} {imperative definition: 855}
|
||||
IMPERATIVE_NT'report sneezing on' {unit: 4} {imperative definition: 856}
|
||||
IMPERATIVE_NT'report someone sneezing on' {unit: 4} {imperative definition: 857}
|
||||
IMPERATIVE_NT'check sneezing on' {unit: 4} {imperative definition: 811}
|
||||
IMPERATIVE_NT'carry out sneezing on' {unit: 4} {imperative definition: 812}
|
||||
IMPERATIVE_NT'carry out someone sneezing on' {unit: 4} {imperative definition: 813}
|
||||
IMPERATIVE_NT'report sneezing on' {unit: 4} {imperative definition: 814}
|
||||
IMPERATIVE_NT'report someone sneezing on' {unit: 4} {imperative definition: 815}
|
||||
SENTENCE_NT'understand "inject [someone] with [something]" as injecting ' {unit: 4} {classified}
|
||||
VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}
|
||||
UNPARSED_NOUN_NT'"inject [someone] with [something]"'
|
||||
|
@ -361,10 +361,10 @@ ROOT_NT
|
|||
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}
|
||||
UNPARSED_NOUN_NT'injecting it with'
|
||||
UNPARSED_NOUN_NT'applying to two things'
|
||||
IMPERATIVE_NT'check injecting it with' {unit: 4} {imperative definition: 858}
|
||||
IMPERATIVE_NT'carry out injecting it with' {unit: 4} {imperative definition: 859}
|
||||
IMPERATIVE_NT'after injecting the player with something' {unit: 4} {imperative definition: 860}
|
||||
IMPERATIVE_NT'report injecting it with' {unit: 4} {imperative definition: 861}
|
||||
IMPERATIVE_NT'check injecting it with' {unit: 4} {imperative definition: 816}
|
||||
IMPERATIVE_NT'carry out injecting it with' {unit: 4} {imperative definition: 817}
|
||||
IMPERATIVE_NT'after injecting the player with something' {unit: 4} {imperative definition: 818}
|
||||
IMPERATIVE_NT'report injecting it with' {unit: 4} {imperative definition: 819}
|
||||
HEADING_NT'section 3 - geography' {heading 5} {under: H5'section 3 - geography'} {unit: 4}
|
||||
INCLUSION_NT'include locksmith by emily short' {unit: 4}
|
||||
HEADING_NT'version 12 of locksmith by emily short begins here' {heading 0} {under: H0'version 12 of locksmith by emily short begins here'} {includes: Locksmith by Emily Short v12 } {unit: 3}
|
||||
|
@ -389,9 +389,9 @@ ROOT_NT
|
|||
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}
|
||||
UNPARSED_NOUN_NT'going toward'
|
||||
UNPARSED_NOUN_NT'applying to one thing'
|
||||
IMPERATIVE_NT'check going toward' {unit: 4} {imperative definition: 899}
|
||||
IMPERATIVE_NT'carry out going toward' {unit: 4} {imperative definition: 900}
|
||||
IMPERATIVE_NT'instead of waiting when the destination of the player is not' {unit: 4} {imperative definition: 901}
|
||||
IMPERATIVE_NT'check going toward' {unit: 4} {imperative definition: 857}
|
||||
IMPERATIVE_NT'carry out going toward' {unit: 4} {imperative definition: 858}
|
||||
IMPERATIVE_NT'instead of waiting when the destination of the player is not' {unit: 4} {imperative definition: 859}
|
||||
SENTENCE_NT'understand "stop" or "cease" as stopping' {unit: 4} {classified}
|
||||
VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}
|
||||
UNPARSED_NOUN_NT'"stop" or "cease"'
|
||||
|
@ -400,11 +400,11 @@ ROOT_NT
|
|||
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}
|
||||
UNPARSED_NOUN_NT'stopping'
|
||||
UNPARSED_NOUN_NT'applying to nothing'
|
||||
IMPERATIVE_NT'carry out stopping' {unit: 4} {imperative definition: 902}
|
||||
IMPERATIVE_NT'report stopping' {unit: 4} {imperative definition: 903}
|
||||
IMPERATIVE_NT'after going to an air-conditioned room' {unit: 4} {imperative definition: 904}
|
||||
IMPERATIVE_NT'after going from an air-conditioned room' {unit: 4} {imperative definition: 905}
|
||||
IMPERATIVE_NT'instead of listening to an air-conditioned room' {unit: 4} {imperative definition: 906}
|
||||
IMPERATIVE_NT'carry out stopping' {unit: 4} {imperative definition: 860}
|
||||
IMPERATIVE_NT'report stopping' {unit: 4} {imperative definition: 861}
|
||||
IMPERATIVE_NT'after going to an air-conditioned room' {unit: 4} {imperative definition: 862}
|
||||
IMPERATIVE_NT'after going from an air-conditioned room' {unit: 4} {imperative definition: 863}
|
||||
IMPERATIVE_NT'instead of listening to an air-conditioned room' {unit: 4} {imperative definition: 864}
|
||||
SENTENCE_NT'the alfred cralle pool hall is a room' {unit: 4} {classified} {interpretation of subject: infs'person'}
|
||||
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
|
||||
PROPER_NOUN_NT'alfred cralle pool hall' {definite 'the' n/m/f s/p nom/acc} {refined} {refers: infs'alfred cralle pool hall'} {eval: CONSTANT_NT'alfred cralle pool hall' {kind: object} {instance: I88'alfred cralle pool hall'} {enumeration: 0}} {created here}
|
||||
|
@ -446,7 +446,7 @@ ROOT_NT
|
|||
PROPER_NOUN_NT'felt door' {definite 'the' n/m/f s/p nom/acc} {refined} {refers: infs'felt door'} {eval: CONSTANT_NT'felt door' {kind: door} {instance: I90'felt door'} {enumeration: 0}}
|
||||
PROPER_NOUN_NT'description' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'description'=text}}
|
||||
PROPER_NOUN_NT'"It has a prominent lock, designed for an old-fashioned key.' {refined} {eval: CONSTANT_NT'"It has a prominent lock, designed for an old-fashioned key.' {kind: text}}
|
||||
IMPERATIVE_NT'after locking a door with something in the presence of an ot' {unit: 4} {imperative definition: 907}
|
||||
IMPERATIVE_NT'after locking a door with something in the presence of an ot' {unit: 4} {imperative definition: 865}
|
||||
SENTENCE_NT'nancy johnson memorial square is west of the felt door' {unit: 4} {classified} {interpretation of subject: infs'key to the city'}
|
||||
VERB_NT'is west of' {verb 'be' 3p s act IS_TENSE +ve} {prep1: west of}
|
||||
PROPER_NOUN_NT'nancy johnson memorial square' {refined} {refers: infs'nancy johnson memorial square'} {eval: CONSTANT_NT'nancy johnson memorial square' {kind: object} {instance: I92'nancy johnson memorial square'} {enumeration: 0}} {created here}
|
||||
|
@ -508,8 +508,8 @@ ROOT_NT
|
|||
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
|
||||
PROPER_NOUN_NT'slot' {definite 'the' n/m/f s/p nom/acc} {refined} {refers: infs'slot'} {eval: CONSTANT_NT'slot' {kind: object} {instance: I97'slot'} {enumeration: 0}}
|
||||
COMMON_NOUN_NT'container' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'container'} {creation: << kind=container(x) >>} {eval: TEST_VALUE_NT}
|
||||
IMPERATIVE_NT'carry out inserting something into the slot' {unit: 4} {imperative definition: 908}
|
||||
IMPERATIVE_NT'report inserting something into the slot' {unit: 4} {imperative definition: 909}
|
||||
IMPERATIVE_NT'carry out inserting something into the slot' {unit: 4} {imperative definition: 866}
|
||||
IMPERATIVE_NT'report inserting something into the slot' {unit: 4} {imperative definition: 867}
|
||||
SENTENCE_NT'hamwi street is northeast of an iron gate' {unit: 4} {classified} {interpretation of subject: infs'slot'}
|
||||
VERB_NT'is northeast of' {verb 'be' 3p s act IS_TENSE +ve} {prep1: northeast of}
|
||||
PROPER_NOUN_NT'hamwi street' {refined} {refers: infs'hamwi street'} {eval: CONSTANT_NT'hamwi street' {kind: object} {instance: I98'hamwi street'} {enumeration: 0}} {created here}
|
||||
|
@ -533,7 +533,7 @@ ROOT_NT
|
|||
AND_NT'and' {refined}
|
||||
ADJECTIVE_NT'lockable' {refined} {predicate: lockable} {creation: << lockable(x) ^ lockable(x) >>}
|
||||
ADJECTIVE_NT'unlocked' {refined} {predicate: unlocked} {creation: << unlocked(x) ^ unlocked(x) >>}
|
||||
IMPERATIVE_NT'before printing the name of the iron gate while not opening ' {unit: 4} {imperative definition: 910}
|
||||
IMPERATIVE_NT'before printing the name of the iron gate while not opening ' {unit: 4} {imperative definition: 868}
|
||||
SENTENCE_NT'cold comfort ice cream is north of a metal door' {unit: 4} {classified} {interpretation of subject: infs'iron gate'}
|
||||
VERB_NT'is north of' {verb 'be' 3p s act IS_TENSE +ve} {prep1: north of}
|
||||
PROPER_NOUN_NT'cold comfort ice cream' {refined} {refers: infs'cold comfort ice cream'} {eval: CONSTANT_NT'cold comfort ice cream' {kind: object} {instance: I100'cold comfort ice cream'} {enumeration: 0}} {created here}
|
||||
|
@ -639,8 +639,8 @@ ROOT_NT
|
|||
VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}
|
||||
UNPARSED_NOUN_NT'"glass"'
|
||||
UNPARSED_NOUN_NT'the box'
|
||||
IMPERATIVE_NT'instead of attacking the closed emergency box' {unit: 4} {imperative definition: 911}
|
||||
IMPERATIVE_NT'instead of attacking the open emergency box' {unit: 4} {imperative definition: 912}
|
||||
IMPERATIVE_NT'instead of attacking the closed emergency box' {unit: 4} {imperative definition: 869}
|
||||
IMPERATIVE_NT'instead of attacking the open emergency box' {unit: 4} {imperative definition: 870}
|
||||
SENTENCE_NT'the syringe is in the emergency box' {unit: 4} {classified} {interpretation of subject: infs'emergency box'}
|
||||
VERB_NT'is in' {verb 'be' 3p s act IS_TENSE +ve} {prep1: in}
|
||||
PROPER_NOUN_NT'syringe' {definite 'the' n/m/f s/p nom/acc} {refined} {refers: infs'syringe'} {eval: CONSTANT_NT'syringe' {kind: object} {instance: I109'syringe'} {enumeration: 0}} {created here}
|
||||
|
@ -743,8 +743,8 @@ ROOT_NT
|
|||
SENTENCE_NT'use full-length room descriptions' {unit: 4} {classified}
|
||||
VERB_NT'use' {verb 'use' 3p p act IS_TENSE +ve} {special meaning: use}
|
||||
UNPARSED_NOUN_NT'full-length room descriptions'
|
||||
IMPERATIVE_NT'after looking in an outdoors room' {unit: 4} {imperative definition: 913}
|
||||
IMPERATIVE_NT'definition' {unit: 4} {imperative definition: 914}
|
||||
IMPERATIVE_NT'after looking in an outdoors room' {unit: 4} {imperative definition: 871}
|
||||
IMPERATIVE_NT'definition' {unit: 4} {imperative definition: 872}
|
||||
DEFN_CONT_NT'a door is proximate' {unit: 4}
|
||||
CODE_BLOCK_NT
|
||||
CODE_BLOCK_NT {control structure: IF}
|
||||
|
@ -765,7 +765,7 @@ ROOT_NT
|
|||
INVOCATION_NT'yes' {phrase invoked: <no-inter-name>}
|
||||
INVOCATION_LIST_NT'no' {unit: 4}
|
||||
INVOCATION_NT'no' {phrase invoked: <no-inter-name>}
|
||||
IMPERATIVE_NT'before exiting when the player is in an indoors room' {unit: 4} {imperative definition: 915}
|
||||
IMPERATIVE_NT'before exiting when the player is in an indoors room' {unit: 4} {imperative definition: 873}
|
||||
SENTENCE_NT'blank is a room' {unit: 4} {classified} {interpretation of subject: infs'key to the city'}
|
||||
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
|
||||
PROPER_NOUN_NT'blank' {refined} {refers: infs'blank'} {eval: CONSTANT_NT'blank' {kind: object} {instance: I113'blank'} {enumeration: 0}} {created here}
|
||||
|
@ -991,15 +991,15 @@ ROOT_NT
|
|||
PROPER_NOUN_NT'ned' {refined} {refers: infs'ned'} {eval: CONSTANT_NT'ned' {kind: man} {instance: I166'ned'} {enumeration: 0}}
|
||||
RELATIONSHIP_NT'owns' {meaning: ownership-r} {refined}
|
||||
PROPER_NOUN_NT'movie rental' {definite 'the' n/m/f s/p nom/acc} {refined} {refers: infs'movie rental store'} {eval: CONSTANT_NT'movie rental store' {kind: object} {instance: I104'movie rental store'} {enumeration: 0}}
|
||||
IMPERATIVE_NT'after printing the name of someone ( called target ) while l' {unit: 4} {imperative definition: 916}
|
||||
IMPERATIVE_NT'after printing the name of someone ( called target ) while l' {unit: 4} {imperative definition: 874}
|
||||
SENTENCE_NT'the description of a person is usually "[The noun] [if the n' {unit: 4} {classified} {interpretation of subject: infs'ned'}
|
||||
VERB_NT'is usually' {certainty:likely} {verb 'be' 3p s act IS_TENSE +ve}
|
||||
X_OF_Y_NT'description of a person' {definite 'the' n/m/f s/p nom/acc} {refined}
|
||||
COMMON_NOUN_NT'person' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'person'} {creation: << kind=person(x) >>} {eval: TEST_VALUE_NT}
|
||||
PROPER_NOUN_NT'description' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'description'=text}}
|
||||
PROPER_NOUN_NT'"[The noun] [if the noun is clean]looks healthy[otherwise]is' {refined} {eval: CONSTANT_NT'"[The noun] [if the noun is clean]looks healthy[otherwise]is' {kind: text}}
|
||||
IMPERATIVE_NT'after examining another person who is carrying something' {unit: 4} {imperative definition: 917}
|
||||
IMPERATIVE_NT'when play begins' {unit: 4} {imperative definition: 918}
|
||||
IMPERATIVE_NT'after examining another person who is carrying something' {unit: 4} {imperative definition: 875}
|
||||
IMPERATIVE_NT'when play begins' {unit: 4} {imperative definition: 876}
|
||||
HEADING_NT'section 5 - conversation' {heading 5} {under: H5'section 5 - conversation'} {unit: 4}
|
||||
SENTENCE_NT'a person has a table name called conversation' {unit: 4} {classified}
|
||||
VERB_NT'has' {verb 'have' 3p s act IS_TENSE +ve}
|
||||
|
@ -1008,8 +1008,8 @@ ROOT_NT
|
|||
PROPERTYCALLED_NT'called'
|
||||
UNPARSED_NOUN_NT'table name' {indefinite 'a' n/m/f nom/acc s}
|
||||
UNPARSED_NOUN_NT'conversation'
|
||||
IMPERATIVE_NT'instead of asking someone about something' {unit: 4} {imperative definition: 919}
|
||||
IMPERATIVE_NT'instead of telling someone about something' {unit: 4} {imperative definition: 920}
|
||||
IMPERATIVE_NT'instead of asking someone about something' {unit: 4} {imperative definition: 877}
|
||||
IMPERATIVE_NT'instead of telling someone about something' {unit: 4} {imperative definition: 878}
|
||||
SENTENCE_NT'understand "recap" or "recall" or "review" as recalling conv' {unit: 4} {classified}
|
||||
VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}
|
||||
UNPARSED_NOUN_NT'"recap" or "recall" or "review"'
|
||||
|
@ -1018,7 +1018,7 @@ ROOT_NT
|
|||
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}
|
||||
UNPARSED_NOUN_NT'recalling conversations'
|
||||
UNPARSED_NOUN_NT'applying to nothing'
|
||||
IMPERATIVE_NT'carry out recalling conversations' {unit: 4} {imperative definition: 921}
|
||||
IMPERATIVE_NT'carry out recalling conversations' {unit: 4} {imperative definition: 879}
|
||||
SENTENCE_NT'the conversation of a person is usually table of general chi' {unit: 4} {classified} {interpretation of subject: infs'person'}
|
||||
VERB_NT'is usually' {certainty:likely} {verb 'be' 3p s act IS_TENSE +ve}
|
||||
X_OF_Y_NT'conversation of a person' {definite 'the' n/m/f s/p nom/acc} {refined}
|
||||
|
@ -1033,7 +1033,7 @@ ROOT_NT
|
|||
PROPER_NOUN_NT'conversation' {refined} {eval: CONSTANT_NT {kind: table names valued property} {property: 'conversation'=table name}}
|
||||
PROPER_NOUN_NT'table of vanessa chatter' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'table of vanessa chatter' {kind: table name} {table: table_data}{meaning: {table of vanessa chatter = TABLE_MC}}}
|
||||
TABLE_NT'table of vanessa chatter topic reply summary turn stamp char' {unit: 4}
|
||||
IMPERATIVE_NT'after reading a command' {unit: 4} {imperative definition: 922}
|
||||
IMPERATIVE_NT'after reading a command' {unit: 4} {imperative definition: 880}
|
||||
HEADING_NT'section 6 - movement description' {heading 5} {under: H5'section 6 - movement description'} {unit: 4}
|
||||
SENTENCE_NT'a person has some text called walk style' {unit: 4} {classified}
|
||||
VERB_NT'has' {verb 'have' 3p s act IS_TENSE +ve}
|
||||
|
@ -1080,8 +1080,8 @@ ROOT_NT
|
|||
PROPER_NOUN_NT'"sashay"' {refined} {eval: CONSTANT_NT'"sashay"' {kind: text}}
|
||||
TABLE_NT'table of visible exits character second third heading chosen' {unit: 4}
|
||||
TABLE_NT'table of visible entrances character second third heading ch' {unit: 4}
|
||||
IMPERATIVE_NT'to clear ( current table - a table name )' {unit: 4} {imperative definition: 923}
|
||||
IMPERATIVE_NT'to tidy departures of ( current table - a table name )' {unit: 4} {imperative definition: 924}
|
||||
IMPERATIVE_NT'to clear ( current table - a table name )' {unit: 4} {imperative definition: 881}
|
||||
IMPERATIVE_NT'to tidy departures of ( current table - a table name )' {unit: 4} {imperative definition: 882}
|
||||
SENTENCE_NT'a door has a person called last opener' {unit: 4} {classified} {interpretation of subject: infs'person'}
|
||||
VERB_NT'has' {verb 'have' 3p s act IS_TENSE +ve}
|
||||
COMMON_NOUN_NT'door' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'door'} {creation: << kind=door(x) >>} {eval: TEST_VALUE_NT}
|
||||
|
@ -1089,21 +1089,21 @@ ROOT_NT
|
|||
PROPERTYCALLED_NT'called'
|
||||
UNPARSED_NOUN_NT'person' {indefinite 'a' n/m/f nom/acc s}
|
||||
UNPARSED_NOUN_NT'last opener'
|
||||
IMPERATIVE_NT'report someone opening a door' {unit: 4} {imperative definition: 925}
|
||||
IMPERATIVE_NT'report someone going through a door ( called route )' {unit: 4} {imperative definition: 926}
|
||||
IMPERATIVE_NT'report someone opening a door' {unit: 4} {imperative definition: 883}
|
||||
IMPERATIVE_NT'report someone going through a door ( called route )' {unit: 4} {imperative definition: 884}
|
||||
SENTENCE_NT'the last thing named is a thing that varies' {unit: 4} {classified} {interpretation of subject: infs'door'}
|
||||
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
|
||||
PROPER_NOUN_NT'last thing named' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: NONLOCAL_VARIABLE_NT'last thing named' {nonlocal: 'last thing named'(var)thing}} {created here}
|
||||
COMMON_NOUN_NT'thing that varies' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values variable-pointer'-k} {creation: << kind=things variable-pointer(x) >>} {eval: TEST_VALUE_NT}
|
||||
IMPERATIVE_NT'before printing the name of something ( called target ) whic' {unit: 4} {imperative definition: 927}
|
||||
IMPERATIVE_NT'report someone going a direction' {unit: 4} {imperative definition: 928}
|
||||
IMPERATIVE_NT'this is the movement reporting rule' {unit: 4} {imperative definition: 929}
|
||||
IMPERATIVE_NT'to generate descriptions from ( current table - a table name' {unit: 4} {imperative definition: 930}
|
||||
IMPERATIVE_NT'before printing the name of something ( called target ) whic' {unit: 4} {imperative definition: 885}
|
||||
IMPERATIVE_NT'report someone going a direction' {unit: 4} {imperative definition: 886}
|
||||
IMPERATIVE_NT'this is the movement reporting rule' {unit: 4} {imperative definition: 887}
|
||||
IMPERATIVE_NT'to generate descriptions from ( current table - a table name' {unit: 4} {imperative definition: 888}
|
||||
SENTENCE_NT'the last person named is a person that varies' {unit: 4} {classified} {interpretation of subject: infs'door'}
|
||||
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
|
||||
PROPER_NOUN_NT'last person named' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: NONLOCAL_VARIABLE_NT'last person named' {nonlocal: 'last person named'(var)person}} {created here}
|
||||
COMMON_NOUN_NT'person that varies' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values variable-pointer'-k} {creation: << kind=people variable-pointer(x) >>} {eval: TEST_VALUE_NT}
|
||||
IMPERATIVE_NT'before printing the name of a person ( called target )' {unit: 4} {imperative definition: 931}
|
||||
IMPERATIVE_NT'before printing the name of a person ( called target )' {unit: 4} {imperative definition: 889}
|
||||
SENTENCE_NT'group size is a number that varies' {unit: 4} {classified} {interpretation of subject: infs'door'}
|
||||
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
|
||||
PROPER_NOUN_NT'group size' {refined} {eval: NONLOCAL_VARIABLE_NT'group size' {nonlocal: 'group size'(var)number}} {created here}
|
||||
|
@ -1112,19 +1112,19 @@ ROOT_NT
|
|||
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
|
||||
PROPER_NOUN_NT'group size' {refined} {eval: NONLOCAL_VARIABLE_NT'group size' {nonlocal: 'group size'(var)number}{meaning: {group size = VARIABLE_MC}}}
|
||||
PROPER_NOUN_NT'1' {refined} {eval: CONSTANT_NT'1' {kind: number} {explicit literal} {number: 1}}
|
||||
IMPERATIVE_NT'to clear marked people' {unit: 4} {imperative definition: 932}
|
||||
IMPERATIVE_NT'before listing nondescript items' {unit: 4} {imperative definition: 933}
|
||||
IMPERATIVE_NT'to describe patients' {unit: 4} {imperative definition: 934}
|
||||
IMPERATIVE_NT'to say ( named character - a man ) as pronoun' {unit: 4} {imperative definition: 935}
|
||||
IMPERATIVE_NT'to say ( named character - a woman ) as pronoun' {unit: 4} {imperative definition: 936}
|
||||
IMPERATIVE_NT'to say looks as though dipped in for ( index - a number )' {unit: 4} {imperative definition: 937}
|
||||
IMPERATIVE_NT'to clear marked people' {unit: 4} {imperative definition: 890}
|
||||
IMPERATIVE_NT'before listing nondescript items' {unit: 4} {imperative definition: 891}
|
||||
IMPERATIVE_NT'to describe patients' {unit: 4} {imperative definition: 892}
|
||||
IMPERATIVE_NT'to say ( named character - a man ) as pronoun' {unit: 4} {imperative definition: 893}
|
||||
IMPERATIVE_NT'to say ( named character - a woman ) as pronoun' {unit: 4} {imperative definition: 894}
|
||||
IMPERATIVE_NT'to say looks as though dipped in for ( index - a number )' {unit: 4} {imperative definition: 895}
|
||||
TABLE_NT'table of dipping phrases dipping "looks as though dipped in"' {unit: 4}
|
||||
SENTENCE_NT'a door is usually scenery' {unit: 4} {classified} {interpretation of subject: infs'door'}
|
||||
VERB_NT'is usually' {certainty:likely} {verb 'be' 3p s act IS_TENSE +ve}
|
||||
COMMON_NOUN_NT'door' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'door'} {creation: << kind=door(x) >>} {eval: TEST_VALUE_NT}
|
||||
ADJECTIVE_NT'scenery' {refined} {predicate: scenery} {creation: << scenery(x) ^ scenery(x) >>}
|
||||
IMPERATIVE_NT'to make delimiter ( index - a number ) of ( count - a number' {unit: 4} {imperative definition: 938}
|
||||
IMPERATIVE_NT'to say optional comma' {unit: 4} {imperative definition: 939}
|
||||
IMPERATIVE_NT'to make delimiter ( index - a number ) of ( count - a number' {unit: 4} {imperative definition: 896}
|
||||
IMPERATIVE_NT'to say optional comma' {unit: 4} {imperative definition: 897}
|
||||
SENTENCE_NT'test me with go to cold comfort / z / z / z / z / ask vaness' {unit: 4} {classified}
|
||||
VERB_NT'test' {verb 'test' 3p p act IS_TENSE +ve} {prep2: with} {special meaning: test-with}
|
||||
UNPARSED_NOUN_NT'me'
|
||||
|
|
|
@ -1,37 +1,37 @@
|
|||
100.0% in inform7 run
|
||||
54.5% in compilation to Inter
|
||||
39.6% in //Sequence::undertake_queued_tasks//
|
||||
3.5% in //MajorNodes::pre_pass//
|
||||
2.6% in //MajorNodes::pass_1//
|
||||
1.6% in //RTPhrasebook::compile_entries//
|
||||
1.4% in //ImperativeDefinitions::assess_all//
|
||||
1.1% in //RTKindConstructors::compile//
|
||||
54.0% in compilation to Inter
|
||||
39.4% in //Sequence::undertake_queued_tasks//
|
||||
3.3% in //MajorNodes::pre_pass//
|
||||
2.5% in //MajorNodes::pass_1//
|
||||
1.3% in //ImperativeDefinitions::assess_all//
|
||||
1.3% in //RTPhrasebook::compile_entries//
|
||||
1.2% in //RTKindConstructors::compile//
|
||||
0.4% in //ImperativeDefinitions::compile_first_block//
|
||||
0.4% in //MajorNodes::pass_2//
|
||||
0.4% in //Sequence::undertake_queued_tasks//
|
||||
0.4% in //Sequence::undertake_queued_tasks//
|
||||
0.4% in //World::stage_V//
|
||||
0.2% in //ImperativeDefinitions::compile_first_block//
|
||||
0.2% in //Sequence::undertake_queued_tasks//
|
||||
0.1% in //CompletionModule::compile//
|
||||
0.2% in //CompletionModule::compile//
|
||||
0.1% in //InferenceSubjects::emit_all//
|
||||
0.1% in //RTKindConstructors::compile_permissions//
|
||||
0.1% in //Task::make_built_in_kind_constructors//
|
||||
0.1% in //World::stages_II_and_III//
|
||||
1.9% not specifically accounted for
|
||||
43.5% in running Inter pipeline
|
||||
11.9% in step preparation
|
||||
9.7% in inter step 7/15: consolidate-text
|
||||
8.0% in inter step 2/15: link
|
||||
44.0% in running Inter pipeline
|
||||
11.6% in step preparation
|
||||
10.1% in inter step 7/15: consolidate-text
|
||||
8.1% in inter step 2/15: link
|
||||
7.8% in inter step 15/15: generate inform6 -> auto.inf
|
||||
1.4% in inter step 11/15: make-identifiers-unique
|
||||
1.6% in inter step 11/15: make-identifiers-unique
|
||||
0.4% in inter step 12/15: reconcile-verbs
|
||||
0.2% in inter step 10/15: detect-indirect-calls
|
||||
0.2% in inter step 14/15: eliminate-redundant-operations
|
||||
0.2% in inter step 6/15: assimilate
|
||||
0.2% in inter step 8/15: resolve-external-symbols
|
||||
0.2% in inter step 9/15: inspect-plugs
|
||||
0.1% in inter step 10/15: detect-indirect-calls
|
||||
0.1% in inter step 13/15: eliminate-redundant-labels
|
||||
0.1% in inter step 4/15: parse-linked-matter
|
||||
0.1% in inter step 5/15: resolve-conditional-compilation
|
||||
2.2% not specifically accounted for
|
||||
1.7% in supervisor
|
||||
0.2% not specifically accounted for
|
||||
2.5% not specifically accounted for
|
||||
1.6% in supervisor
|
||||
0.3% not specifically accounted for
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -41,9 +41,22 @@ what the Inform UI apps typically call when the user clicks "Go":
|
|||
= (text as ConsoleText)
|
||||
$ inform7/Tangled/inform7 -internal I -external E -project P -format=F
|
||||
=
|
||||
for suitable pathnames |I|, |E|, |P| and a choice of |F|. To dispose of this
|
||||
first, |-format=ulx| tells Inform to compile to the Glulx story file, and
|
||||
|-format=z8| to (version 8 of) the Z-machine.
|
||||
for suitable pathnames |I|, |E|, |P| and a choice of |F|.
|
||||
|
||||
The format |F| can have quite a complex syntax. It takes the form of a
|
||||
sequence of criteria divided by slashes. The first will be the name of the
|
||||
language which //inform7// is writing as its output; the second will be the
|
||||
architecture used. Thus, |inform6/32d| means "32-bit Inform 6 code with
|
||||
debugging enabled", and this in practice is what the Inform UI apps make
|
||||
when Glulx is the preferred virtual machine, as it is by default. But other
|
||||
alternatives are available at the command line, and it's also possible for
|
||||
|-format| to specify a semantic version number for the target, or some
|
||||
compilation options. See //arch// for a fuller description.
|
||||
|
||||
In previous releases of Inform, |-format=F| had a cruder syntax in which only
|
||||
|-format=ulx|, |-format=z5| and |-format=z8| were allowed. Those are still
|
||||
recognised, but deprecated. Inform will print a warning about this and supply
|
||||
the equivalent modern notation if one is used.
|
||||
|
||||
The project |P| is the directory holding the project to compile, such as
|
||||
|Bronze.inform|. On MacOS, this will be a bundle, and will look like an
|
||||
|
|
|
@ -15,4 +15,4 @@ inform7/Tests/Test\ Externals/_Build/XText-I.o: inform7/Tests/Test\ Externals/_B
|
|||
clang -g -std=c99 -c -o inform7/Tests/Test\ Externals/_Build/XText-I.o inform7/Tests/Test\ Externals/_Build/XText-I.c -Wno-parentheses-equality -D DEBUG -D I7_NO_MAIN -I inform7/Internal/Miscellany
|
||||
|
||||
inform7/Tests/Test\ Externals/_Build/XText-I.c: inform7/Tests/Test\ Externals/_Source/XText.i7
|
||||
'inform7/Tangled/inform7' '-kit' 'BasicInformKit' '-format=C/32d' '-no-progress' '-fixtime' '-rng' '-sigils' '-log' 'nothing' '-external' 'inform7/Tests' '-transient' '/Users/gnelson/Natural Inform/intest/Workspace/T0/Transient' '-no-index' '-internal' 'inform7/Internal' '-format=ulx' '-project' '/Users/gnelson/Natural Inform/intest/Workspace/T0/Example.inform' '-variable' '*tout=inform7/Tests/Test Externals/_Textual/XText.intert' '-variable' '*cout=inform7/Tests/Test Externals/_Build/XText-I.c' '-pipeline' 'test_any'
|
||||
'inform7/Tangled/inform7' '-kit' 'BasicInformKit' '-format=C/32d' '-no-progress' '-fixtime' '-rng' '-sigils' '-log' 'nothing' '-external' 'inform7/Tests' '-transient' '/Users/gnelson/Natural Inform/intest/Workspace/T0/Transient' '-no-index' '-internal' 'inform7/Internal' '-project' '/Users/gnelson/Natural Inform/intest/Workspace/T0/Example.inform' '-variable' '*tout=inform7/Tests/Test Externals/_Textual/XText.intert' '-variable' '*out=inform7/Tests/Test Externals/_Build/XText-I.c' '-pipeline' 'test_any'
|
||||
|
|
|
@ -22,27 +22,10 @@ void GenericModule::compile_basic_constants(void) {
|
|||
|
||||
if (TargetVMs::debug_enabled(VM)) GenericModule::emit_one(DEBUG_HL, 1);
|
||||
|
||||
@<Special constants for Z-machine and Glulx VMs@>;
|
||||
if (TargetVMs::is_16_bit(VM)) @<16-bit constants@>
|
||||
else @<32-bit constants@>;
|
||||
}
|
||||
|
||||
@ These constants may be predefined in the veneer of the Inform 6 compiler,
|
||||
if that is being used further down the compilation chain, but we want to define
|
||||
them here regardless of that: and then linking can work properly, and the code
|
||||
will make sense even if I6 is not the final code-generator.
|
||||
|
||||
@<Special constants for Z-machine and Glulx VMs@> =
|
||||
if (Str::eq(VM->family_name, I"Z-Machine")) {
|
||||
GenericModule::emit_one(TARGET_ZCODE_HL, 1);
|
||||
GenericModule::emit_one(DICT_WORD_SIZE_HL, 6);
|
||||
}
|
||||
if (Str::eq(VM->family_name, I"Glulx")) {
|
||||
GenericModule::emit_one(TARGET_GLULX_HL, 1);
|
||||
GenericModule::emit_one(DICT_WORD_SIZE_HL, 9);
|
||||
GenericModule::emit_one(INDIV_PROP_START_HL, 0);
|
||||
}
|
||||
|
||||
@ These constants mostly have obvious meanings, but a few notes:
|
||||
|
||||
(1) |NULL|, in our runtime, is -1, and not 0 as it would be in C. This is
|
||||
|
@ -69,6 +52,8 @@ in the VM can be added to it without it becoming negative.
|
|||
GenericModule::emit_hex(REPARSE_CODE_HL, 10000);
|
||||
GenericModule::emit_one(MAX_POSITIVE_NUMBER_HL, 32767);
|
||||
GenericModule::emit_signed(MIN_NEGATIVE_NUMBER_HL, -32768);
|
||||
GenericModule::emit_one(TARGET_ZCODE_HL, 1);
|
||||
GenericModule::emit_one(DICT_WORD_SIZE_HL, 6);
|
||||
|
||||
@<32-bit constants@> =
|
||||
GenericModule::emit_one(WORDSIZE_HL, 4);
|
||||
|
@ -79,6 +64,9 @@ in the VM can be added to it without it becoming negative.
|
|||
GenericModule::emit_hex(REPARSE_CODE_HL, 0x40000000);
|
||||
GenericModule::emit_one(MAX_POSITIVE_NUMBER_HL, 2147483647);
|
||||
GenericModule::emit_signed(MIN_NEGATIVE_NUMBER_HL, -2147483648);
|
||||
GenericModule::emit_one(TARGET_GLULX_HL, 1);
|
||||
GenericModule::emit_one(DICT_WORD_SIZE_HL, 9);
|
||||
GenericModule::emit_one(INDIV_PROP_START_HL, 0);
|
||||
|
||||
@ Note that all of these constants are made available for linking:
|
||||
|
||||
|
|
|
@ -108,7 +108,7 @@ pipeline_step *CodeGen::Pipeline::read_step(text_stream *step, dictionary *D,
|
|||
} else if (Regexp::match(&mr, step, L"(%c+?) *-> *(%c*)")) {
|
||||
ST->target_argument = NULL;
|
||||
ST->take_target_argument_from_VM = TRUE;
|
||||
ST->step_argument = CodeGen::Pipeline::read_parameter(mr.exp[2], D, tfp);
|
||||
ST->step_argument = CodeGen::Pipeline::read_parameter(mr.exp[1], D, tfp);
|
||||
if (ST->step_argument == NULL) return NULL;
|
||||
Str::copy(step, mr.exp[0]);
|
||||
}
|
||||
|
@ -284,7 +284,7 @@ void CodeGen::Pipeline::run(pathname *P, codegen_pipeline *S, linked_list *PP,
|
|||
if ((VM) && (step->take_target_argument_from_VM)) {
|
||||
code_generation_target *cgt;
|
||||
LOOP_OVER(cgt, code_generation_target)
|
||||
if (Str::eq_insensitive(VM->format_name, cgt->target_name))
|
||||
if (Str::eq_insensitive(TargetVMs::family(VM), cgt->target_name))
|
||||
step->target_argument = cgt;
|
||||
if (step->target_argument == NULL) {
|
||||
#ifdef PROBLEMS_MODULE
|
||||
|
|
|
@ -291,7 +291,7 @@ int Compatibility::parse_token(compat_parser_state *cps, text_stream *token, int
|
|||
target_vm *VM;
|
||||
int seen = FALSE;
|
||||
LOOP_OVER(VM, target_vm)
|
||||
if (Str::eq_insensitive(VM->family_name, cps->current_family)) {
|
||||
if (TargetVMs::compatible_with(VM, cps->current_family)) {
|
||||
seen = TRUE;
|
||||
if ((VersionNumbers::eq(VM->version, V)) &&
|
||||
((with == NOT_APPLICABLE) || (TargetVMs::debug_enabled(VM) == with)))
|
||||
|
@ -314,7 +314,7 @@ int Compatibility::parse_token(compat_parser_state *cps, text_stream *token, int
|
|||
int seen = FALSE;
|
||||
target_vm *VM;
|
||||
LOOP_OVER(VM, target_vm)
|
||||
if (Str::eq_insensitive(VM->family_name, token)) {
|
||||
if (TargetVMs::compatible_with(VM, token)) {
|
||||
seen = TRUE;
|
||||
if (TargetVMs::debug_enabled(VM) == with)
|
||||
Compatibility::add_exception(cps->C, VM);
|
||||
|
@ -326,8 +326,8 @@ int Compatibility::parse_token(compat_parser_state *cps, text_stream *token, int
|
|||
@<Construe token as a family name@> =
|
||||
target_vm *VM;
|
||||
LOOP_OVER(VM, target_vm)
|
||||
if (Str::eq_insensitive(VM->family_name, token)) {
|
||||
cps->current_family = VM->family_name;
|
||||
if (TargetVMs::compatible_with(VM, token)) {
|
||||
cps->current_family = TargetVMs::family(VM);
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
|
@ -336,7 +336,7 @@ int Compatibility::parse_token(compat_parser_state *cps, text_stream *token, int
|
|||
if ((cps->family_used == FALSE) && (Str::len(cps->current_family) > 0)) {
|
||||
target_vm *VM;
|
||||
LOOP_OVER(VM, target_vm)
|
||||
if (Str::eq_insensitive(cps->current_family, VM->family_name))
|
||||
if (TargetVMs::compatible_with(VM, cps->current_family))
|
||||
Compatibility::add_exception(cps->C, VM);
|
||||
}
|
||||
return TRUE;
|
||||
|
|
|
@ -2,202 +2,277 @@
|
|||
|
||||
To deal with multiple object code formats.
|
||||
|
||||
@h Object code.
|
||||
The end result of compilation is traditionally called "object code" and
|
||||
people tend to use words like "binary" or even "machine code" about it,
|
||||
though in fact the world is more diverse nowadays. Inform 7 has always
|
||||
generated "object code" which is itself a program for a virtual machine;
|
||||
for example, it makes Glulx bytecode rather than x86 or ARM instructions.
|
||||
Because of that, we use the customary term "virtual machine" for the format
|
||||
of the end product of the Inform build process. But it doesn't have to be
|
||||
virtual. If Inter-to-x86-via-C is properly implemented, we will probably
|
||||
want to add a VM to represent something like "32-bit binary via ANSI C".
|
||||
@h Target VMs.
|
||||
For a fuller explanation of these, see //What This Module Does//, but briefly:
|
||||
a //target_vm// object represents a choice of both Inter architecture and
|
||||
also a format for final code-generation from Inter. For example, it might
|
||||
represent "16-bit with debugging enabled to be generated to Inform 6 code",
|
||||
or, say, "32-bit to be generated to ANSI C code".
|
||||
|
||||
Each different target VM is represented by one of these objects:
|
||||
|
||||
=
|
||||
typedef struct target_vm {
|
||||
struct text_stream *family_name; /* such as |Glulx| */
|
||||
int with_debugging_enabled;
|
||||
struct inter_architecture *architecture; /* such as 32d */
|
||||
struct semantic_version_number version; /* such as 0.8.7 */
|
||||
struct text_stream *VM_extension; /* canonical filename extension */
|
||||
struct text_stream *VM_unblorbed_extension; /* such as |z8| */
|
||||
struct text_stream *VM_blorbed_extension; /* when blorbed up */
|
||||
struct text_stream *VM_image; /* filename of image for icon denoting VM */
|
||||
int max_locals; /* upper limit on local variables per stack frame */
|
||||
struct text_stream *default_browser_interpreter; /* e.g., "Parchment" */
|
||||
struct text_stream *iFiction_format_name; /* e.g., "zcode": see the Treaty of Babel */
|
||||
struct text_stream *format_name; /* transpiler format, e.g., "Inform6" or "C" */
|
||||
struct linked_list *format_options; /* of |text_stream| */
|
||||
int supports_floating_point;
|
||||
CLASS_DEFINITION
|
||||
} target_vm;
|
||||
|
||||
@ =
|
||||
target_vm *TargetVMs::new(text_stream *code, text_stream *nick, semantic_version_number V,
|
||||
text_stream *image, text_stream *interpreter, text_stream *blorbed, inter_architecture *arch,
|
||||
int debug, int max_locals, text_stream *iFiction, text_stream *format) {
|
||||
target_vm *VM = CREATE(target_vm);
|
||||
VM->family_name = Str::duplicate(code);
|
||||
VM->version = V;
|
||||
VM->VM_extension = Str::duplicate(nick);
|
||||
VM->VM_unblorbed_extension = Str::duplicate(nick);
|
||||
VM->VM_blorbed_extension = Str::duplicate(blorbed);
|
||||
VM->VM_image = Str::duplicate(image);
|
||||
VM->max_locals = max_locals;
|
||||
VM->default_browser_interpreter = Str::duplicate(interpreter);
|
||||
VM->architecture = arch;
|
||||
if (VM->architecture == NULL) internal_error("no such architecture");
|
||||
VM->with_debugging_enabled = debug;
|
||||
VM->supports_floating_point = TRUE;
|
||||
if (Architectures::is_16_bit(VM->architecture)) VM->supports_floating_point = FALSE;
|
||||
VM->iFiction_format_name = Str::duplicate(iFiction);
|
||||
VM->format_name = Str::duplicate(format);
|
||||
VM->format_options = NEW_LINKED_LIST(text_stream);
|
||||
return VM;
|
||||
}
|
||||
|
||||
@h Standard set.
|
||||
This is called when the //arch// module starts up; no other architectures
|
||||
are ever made.
|
||||
The basic set of possible target VMs is made when the //arch// module starts up:
|
||||
|
||||
=
|
||||
void TargetVMs::create(void) {
|
||||
/* hat tip: Joel Berez and Marc Blank, 1979, and later hands */
|
||||
TargetVMs::new(I"Z-Machine", I"z5", VersionNumbers::from_text(I"5"),
|
||||
I"vm_z5.png", I"Parchment", I"zblorb", Architectures::from_codename(I"16"), FALSE, 15, I"zcode", I"Inform6");
|
||||
TargetVMs::new(I"Z-Machine", I"z5", VersionNumbers::from_text(I"5"),
|
||||
I"vm_z5.png", I"Parchment", I"zblorb", Architectures::from_codename(I"16d"), TRUE, 15, I"zcode", I"Inform6");
|
||||
TargetVMs::new(Architectures::from_codename(I"16"), I"Inform6",
|
||||
VersionNumbers::from_text(I"5"), I"z5", I"zblorb", I"Parchment", NULL);
|
||||
TargetVMs::new(Architectures::from_codename(I"16d"), I"Inform6",
|
||||
VersionNumbers::from_text(I"5"), I"z5", I"zblorb", I"Parchment", NULL);
|
||||
|
||||
TargetVMs::new(I"Z-Machine", I"z8", VersionNumbers::from_text(I"8"),
|
||||
I"vm_z8.png", I"Parchment", I"zblorb", Architectures::from_codename(I"16"), FALSE, 15, I"zcode", I"Inform6");
|
||||
TargetVMs::new(I"Z-Machine", I"z8", VersionNumbers::from_text(I"8"),
|
||||
I"vm_z8.png", I"Parchment", I"zblorb", Architectures::from_codename(I"16d"), TRUE, 15, I"zcode", I"Inform6");
|
||||
TargetVMs::new(Architectures::from_codename(I"16"), I"Inform6",
|
||||
VersionNumbers::from_text(I"8"), I"z8", I"zblorb", I"Parchment", NULL);
|
||||
TargetVMs::new(Architectures::from_codename(I"16d"), I"Inform6",
|
||||
VersionNumbers::from_text(I"8"), I"z8", I"zblorb", I"Parchment", NULL);
|
||||
|
||||
/* hat tip: Andrew Plotkin, 2000 */
|
||||
TargetVMs::new(I"Glulx", I"ulx", VersionNumbers::from_text(I"3.1.2"),
|
||||
I"vm_glulx.png", I"Quixe", I"gblorb", Architectures::from_codename(I"32"), FALSE, 256, I"glulx", I"Inform6");
|
||||
TargetVMs::new(I"Glulx", I"ulx", VersionNumbers::from_text(I"3.1.2"),
|
||||
I"vm_glulx.png", I"Quixe", I"gblorb", Architectures::from_codename(I"32d"), TRUE, 256, I"glulx", I"Inform6");
|
||||
TargetVMs::new(Architectures::from_codename(I"32"), I"Inform6",
|
||||
VersionNumbers::from_text(I"3.1.2"), I"ulx", I"gblorb", I"Quixe", NULL);
|
||||
TargetVMs::new(Architectures::from_codename(I"32d"), I"Inform6",
|
||||
VersionNumbers::from_text(I"3.1.2"), I"ulx", I"gblorb", I"Quixe", NULL);
|
||||
|
||||
TargetVMs::new(I"C", I"c", VersionNumbers::from_text(I"1"),
|
||||
I"vm_glulx.png", I"", I"", Architectures::from_codename(I"32"), FALSE, 256, I"inform7-c", I"C");
|
||||
TargetVMs::new(I"C", I"c", VersionNumbers::from_text(I"1"),
|
||||
I"vm_glulx.png", I"", I"", Architectures::from_codename(I"32d"), TRUE, 256, I"inform7-c", I"C");
|
||||
/* C support added September 2021 */
|
||||
TargetVMs::new(Architectures::from_codename(I"32"), I"C",
|
||||
VersionNumbers::from_text(I"1"), I"c", I"", I"", NULL);
|
||||
TargetVMs::new(Architectures::from_codename(I"32d"), I"C",
|
||||
VersionNumbers::from_text(I"1"), I"c", I"", I"", NULL);
|
||||
}
|
||||
|
||||
@h Describing and finding.
|
||||
This is the longhand form of the VM name:
|
||||
@ The //target_vm// structure contains two arguably architectural doohickies:
|
||||
potential limits on the use of floating-point arithmetic or on local variables.
|
||||
These are indeed currently derived only from the choice of |architecture|, but
|
||||
we're keeping them here in case there is some day a need for a 32-bit format
|
||||
with integer-only arithmetic, say.
|
||||
|
||||
=
|
||||
typedef struct target_vm {
|
||||
struct inter_architecture *architecture; /* such as 32d */
|
||||
struct semantic_version_number version; /* such as 0.8.7 */
|
||||
struct text_stream *VM_unblorbed_extension; /* such as |z8| */
|
||||
struct text_stream *VM_blorbed_extension; /* when blorbed up */
|
||||
struct text_stream *VM_image; /* filename of image for icon used in the index */
|
||||
struct text_stream *default_browser_interpreter; /* e.g., "Parchment" */
|
||||
struct text_stream *iFiction_format_name; /* e.g., "zcode": see the Treaty of Babel */
|
||||
struct text_stream *transpiler_family; /* transpiler format, e.g., "Inform6" or "C" */
|
||||
struct text_stream *full_format; /* e.g., "Inform6/32d/v3.1.2" */
|
||||
int supports_floating_point;
|
||||
int max_locals; /* upper limit on local variables per stack frame */
|
||||
struct linked_list *format_options; /* of |text_stream| */
|
||||
CLASS_DEFINITION
|
||||
} target_vm;
|
||||
|
||||
@ =
|
||||
target_vm *TargetVMs::new(inter_architecture *arch, text_stream *format,
|
||||
semantic_version_number V, text_stream *unblorbed, text_stream *blorbed,
|
||||
text_stream *interpreter, linked_list *opts) {
|
||||
target_vm *VM = CREATE(target_vm);
|
||||
VM->version = V;
|
||||
VM->VM_unblorbed_extension = Str::duplicate(unblorbed);
|
||||
VM->VM_blorbed_extension = Str::duplicate(blorbed);
|
||||
VM->default_browser_interpreter = Str::duplicate(interpreter);
|
||||
VM->architecture = arch;
|
||||
if (VM->architecture == NULL) internal_error("no such architecture");
|
||||
if (Architectures::is_16_bit(VM->architecture)) {
|
||||
VM->supports_floating_point = FALSE;
|
||||
VM->max_locals = 15;
|
||||
if (Str::eq(unblorbed, I"z5")) VM->VM_image = I"vm_z8.png";
|
||||
else VM->VM_image = I"vm_z5.png";
|
||||
} else {
|
||||
VM->supports_floating_point = TRUE;
|
||||
VM->max_locals = 256;
|
||||
VM->VM_image = I"vm_glulx.png";
|
||||
}
|
||||
VM->iFiction_format_name = Str::new();
|
||||
if (Str::eq(format, I"Inform6")) {
|
||||
if (Architectures::is_16_bit(VM->architecture)) {
|
||||
VM->iFiction_format_name = I"zcode";
|
||||
} else {
|
||||
VM->iFiction_format_name = I"glulx";
|
||||
}
|
||||
} else {
|
||||
WRITE_TO(VM->iFiction_format_name, "Inform+%S", format);
|
||||
}
|
||||
VM->transpiler_family = Str::duplicate(format);
|
||||
VM->format_options = NEW_LINKED_LIST(text_stream);
|
||||
VM->full_format = Str::new();
|
||||
WRITE_TO(VM->full_format, "%S/%S/v%v",
|
||||
VM->transpiler_family, Architectures::to_codename(VM->architecture), &V);
|
||||
if (opts) {
|
||||
text_stream *opt;
|
||||
LOOP_OVER_LINKED_LIST(opt, text_stream, opts) {
|
||||
WRITE_TO(VM->full_format, "/%S", opt);
|
||||
ADD_TO_LINKED_LIST(opt, text_stream, VM->format_options);
|
||||
}
|
||||
}
|
||||
return VM;
|
||||
}
|
||||
|
||||
@ Plumbing is included here to add "options" to a VM's textual description. The
|
||||
idea is that these allow for the user to specify additional and VM-specific
|
||||
command-line options (using |-format|) which are then picked up by //final//.
|
||||
Thus, a request for |-format=C/32d/no-halt/stack=240| would cause a new variant of
|
||||
|C/32d| to be created which would have the (purely hypothetical) list of
|
||||
options |I"no-halt", I"stack=240"|. It is then up to the C final code generator
|
||||
to understand what these mean, if indeed they mean anything.
|
||||
|
||||
=
|
||||
target_vm *TargetVMs::new_variant(target_vm *existing, linked_list *opts) {
|
||||
return TargetVMs::new(existing->architecture, existing->transpiler_family,
|
||||
existing->version, existing->VM_unblorbed_extension,
|
||||
existing->VM_blorbed_extension, existing->default_browser_interpreter, opts);
|
||||
}
|
||||
|
||||
@h To and from text.
|
||||
First, writing. This is the longhand form of the VM name:
|
||||
|
||||
=
|
||||
void TargetVMs::write(OUTPUT_STREAM, target_vm *VM) {
|
||||
if (VM == NULL) WRITE("none");
|
||||
else {
|
||||
WRITE("%S", VM->family_name);
|
||||
semantic_version_number V = VM->version;
|
||||
if (VersionNumbers::is_null(V) == FALSE) WRITE(" version %v", &V);
|
||||
if (VM->with_debugging_enabled) WRITE(" with debugging");
|
||||
}
|
||||
else WRITE("%S", VM->full_format);
|
||||
}
|
||||
|
||||
@ Here we deduce a VM from the given filename extension, which is the rather
|
||||
clumsy way that VMs are referred to on the //inform7// command line. For
|
||||
example, |ulx| produces one of the Glulx VMs.
|
||||
text_stream *TargetVMs::get_full_format_text(target_vm *VM) {
|
||||
if (VM == NULL) internal_error("no VM");
|
||||
return VM->full_format;
|
||||
}
|
||||
|
||||
@ And now for reading. The following is used by //inbuild// when reading the
|
||||
command-line option |-format=T|: the text |T| is supplied as a parameter here.
|
||||
|
||||
Note however that it actually calls //TargetVMs::find_with_hint//. The |debug|
|
||||
hint, if set, says to make the architecture have debugging enabled or not according
|
||||
to this hint: thus |"C"| plus the hint |FALSE| will return the VM |C/32|, while
|
||||
|"C"| plus the hint |TRUE| will return the VM |C/32d|. The hint |NOT_APPLICABLE|
|
||||
is ignored; and the hint is also ignored if the supplied text already definitely
|
||||
specifies debugging. Thus |"C/32d"| plus hint |FALSE| will return |C/32d|.
|
||||
|
||||
=
|
||||
target_vm *TargetVMs::find_by_extension(text_stream *ext, int debug) {
|
||||
target_vm *TargetVMs::find(text_stream *format) {
|
||||
return TargetVMs::find_with_hint(format, NOT_APPLICABLE); /* i.e., no hint */
|
||||
}
|
||||
|
||||
target_vm *TargetVMs::find_with_hint(text_stream *format, int debug) {
|
||||
if (Str::len(format) == 0) format = I"Inform6";
|
||||
text_stream *wanted_language = NULL;
|
||||
inter_architecture *wanted_arch = NULL;
|
||||
semantic_version_number wanted_version = VersionNumbers::null();
|
||||
linked_list *wanted_opts = NEW_LINKED_LIST(text_stream);
|
||||
@<Parse the text supplied into these variables@>;
|
||||
if ((wanted_arch) && (Architectures::debug_enabled(wanted_arch))) debug = TRUE;
|
||||
@<Try to find a VM which is a perfect match@>;
|
||||
@<Try to find a VM which would be a match except for the options@>;
|
||||
@<Try to find a VM in the now-deprecated old notation@>;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ Format text is a list of criteria divided by slashes:
|
||||
|
||||
@<Parse the text supplied into these variables@> =
|
||||
TEMPORARY_TEXT(criterion)
|
||||
LOOP_THROUGH_TEXT(pos, format) {
|
||||
if (Str::get(pos) == '/') {
|
||||
if (Str::len(criterion) > 0) @<Accept criterion@>;
|
||||
Str::clear(criterion);
|
||||
} else {
|
||||
PUT_TO(criterion, Str::get(pos));
|
||||
}
|
||||
}
|
||||
if (Str::len(criterion) > 0) @<Accept criterion@>;
|
||||
DISCARD_TEXT(criterion)
|
||||
|
||||
@ The first criterion is the only compulsory one, and must be something like
|
||||
|Inform6| or |C|. After that, any criterion in the form of an architecture code,
|
||||
like |32d|, is interpreted as such; and any criterion opening with |v| plus a
|
||||
digit is read as a semantic version number. If any criteria are left after all
|
||||
that, they are considered options (see above).
|
||||
|
||||
@<Accept criterion@> =
|
||||
if (wanted_language == NULL) wanted_language = Str::duplicate(criterion);
|
||||
else {
|
||||
inter_architecture *arch = Architectures::from_codename(criterion);
|
||||
if (arch) wanted_arch = arch;
|
||||
else {
|
||||
if (((Str::get_at(criterion, 0) == 'v') || (Str::get_at(criterion, 0) == 'V')) &&
|
||||
(Characters::isdigit(Str::get_at(criterion, 1)))) {
|
||||
Str::delete_first_character(criterion);
|
||||
wanted_version = VersionNumbers::from_text(criterion);
|
||||
} else {
|
||||
ADD_TO_LINKED_LIST(Str::duplicate(criterion), text_stream, wanted_opts);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@<Try to find a VM which is a perfect match@> =
|
||||
target_vm *result = NULL;
|
||||
target_vm *VM;
|
||||
LOOP_OVER(VM, target_vm)
|
||||
if ((Str::eq_insensitive(VM->transpiler_family, wanted_language)) &&
|
||||
((wanted_arch == NULL) || (VM->architecture == wanted_arch)) &&
|
||||
((debug == NOT_APPLICABLE) || (TargetVMs::debug_enabled(VM) == debug)) &&
|
||||
(TargetVMs::versions_match(VM, wanted_version)) &&
|
||||
(TargetVMs::options_match(VM, wanted_opts)))
|
||||
result = VM;
|
||||
if (result) return result;
|
||||
|
||||
@ If we're given, say, |C/32d/no-pointer-nonsense| and we can't find that exact
|
||||
thing, but can find |C/32d|, then we construct a variant of it which does have
|
||||
the option |no-pointer-nonsense| and return that.
|
||||
|
||||
@<Try to find a VM which would be a match except for the options@> =
|
||||
target_vm *result = NULL;
|
||||
target_vm *VM;
|
||||
LOOP_OVER(VM, target_vm)
|
||||
if ((Str::eq_insensitive(VM->transpiler_family, wanted_language)) &&
|
||||
((wanted_arch == NULL) || (VM->architecture == wanted_arch)) &&
|
||||
((debug == NOT_APPLICABLE) || (TargetVMs::debug_enabled(VM) == debug)) &&
|
||||
(TargetVMs::versions_match(VM, wanted_version)))
|
||||
result = VM;
|
||||
if (result) return TargetVMs::new_variant(result, wanted_opts);
|
||||
|
||||
@ If we get here, we've failed to make any match using the modern notation.
|
||||
|
||||
So next we try to deduce a VM from the given filename extension, which is the
|
||||
clumsy way that VMs used to be referred to on the //inform7// command line. For
|
||||
example, |-format=ulx| produces |Inform6/32| or |Inform6/32d| (depending on
|
||||
the |debug| hint).
|
||||
|
||||
=
|
||||
@<Try to find a VM in the now-deprecated old notation@> =
|
||||
target_vm *result = NULL;
|
||||
if (Str::len(ext) == 0) ext = I"ulx";
|
||||
TEMPORARY_TEXT(file_extension)
|
||||
Str::copy(file_extension, ext);
|
||||
Str::copy(file_extension, format);
|
||||
if (Str::get_first_char(file_extension) == '.')
|
||||
Str::delete_first_character(file_extension);
|
||||
LOOP_THROUGH_TEXT(pos, file_extension)
|
||||
Str::put(pos, Characters::tolower(Str::get(pos)));
|
||||
target_vm *VM;
|
||||
LOOP_OVER(VM, target_vm)
|
||||
if ((Str::eq_insensitive(VM->VM_unblorbed_extension, ext)) &&
|
||||
(VM->with_debugging_enabled == debug))
|
||||
if ((Str::eq_insensitive(VM->VM_unblorbed_extension, file_extension)) &&
|
||||
(TargetVMs::debug_enabled(VM) == debug))
|
||||
result = VM;
|
||||
DISCARD_TEXT(file_extension)
|
||||
return result;
|
||||
}
|
||||
if (result) {
|
||||
WRITE_TO(STDOUT, "(-format=%S is deprecated: try -format=%S/%S instead)\n",
|
||||
format, result->transpiler_family,
|
||||
Architectures::to_codename(result->architecture));
|
||||
return result;
|
||||
}
|
||||
|
||||
@ A somewhat sharper method finds specific versions: for example, it can pick
|
||||
out version 5 rather than version 8 of the Z-machine. Note that the version
|
||||
numbers must match exactly, and not simply be compatible according to semver
|
||||
rules.
|
||||
@ Semantic version rules apply if the user supplies a format text with a given
|
||||
version requirement. If the user asks for |v3.1.0| and we've got |v3.1.2|,
|
||||
no problem: there's a match. But |v2.9.3| or |3.2.1| would not match.
|
||||
|
||||
=
|
||||
target_vm *TargetVMs::find_in_family(text_stream *family, semantic_version_number V,
|
||||
int debug) {
|
||||
target_vm *VM;
|
||||
LOOP_OVER(VM, target_vm)
|
||||
if ((Str::eq_insensitive(VM->family_name, family)) &&
|
||||
(VersionNumbers::eq(VM->version, V)) &&
|
||||
((debug == NOT_APPLICABLE) || (debug == VM->with_debugging_enabled)))
|
||||
return VM;
|
||||
return NULL;
|
||||
int TargetVMs::versions_match(target_vm *VM, semantic_version_number wanted) {
|
||||
if (VersionNumbers::is_null(wanted)) return TRUE;
|
||||
if (VersionNumberRanges::in_range(VM->version,
|
||||
VersionNumberRanges::compatibility_range(wanted))) return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ And a device for discovering (or making) a target VM given a more general
|
||||
format,
|
||||
|
||||
=
|
||||
target_vm *TargetVMs::find(text_stream *format, int debug) {
|
||||
text_stream *wanted = NULL;
|
||||
inter_architecture *wanted_arch = NULL;
|
||||
linked_list *segs = NEW_LINKED_LIST(text_stream);
|
||||
TEMPORARY_TEXT(segment)
|
||||
LOOP_THROUGH_TEXT(pos, format) {
|
||||
if (Str::get(pos) == '/') {
|
||||
if (Str::len(segment) > 0) @<Accept segment@>;
|
||||
Str::clear(segment);
|
||||
}
|
||||
}
|
||||
if (Str::len(segment) > 0) @<Accept segment@>
|
||||
DISCARD_TEXT(segment)
|
||||
target_vm *result = NULL;
|
||||
target_vm *VM;
|
||||
LOOP_OVER(VM, target_vm)
|
||||
if ((Str::eq_insensitive(VM->format_name, wanted)) &&
|
||||
((wanted_arch == NULL) || (VM->architecture == wanted_arch)) &&
|
||||
(VM->with_debugging_enabled == debug) &&
|
||||
(TargetVMs::options_match(VM, segs)))
|
||||
result = VM;
|
||||
if (result) return result;
|
||||
LOOP_OVER(VM, target_vm)
|
||||
if ((Str::eq_insensitive(VM->format_name, wanted)) &&
|
||||
((wanted_arch == NULL) || (VM->architecture == wanted_arch)) &&
|
||||
(VM->with_debugging_enabled == debug))
|
||||
result = VM;
|
||||
if (result) {
|
||||
target_vm *new_VM = TargetVMs::new(result->family_name, result->VM_extension, result->version,
|
||||
result->VM_image, result->default_browser_interpreter, result->VM_blorbed_extension, result->architecture,
|
||||
result->with_debugging_enabled, result->max_locals, result->iFiction_format_name, result->format_name);
|
||||
new_VM->format_options = segs;
|
||||
return new_VM;
|
||||
}
|
||||
result = TargetVMs::find_by_extension(format, debug);
|
||||
if (result) {
|
||||
WRITE_TO(STDOUT, "(warning: that use of -format is deprecated: try -format=%S/%S instead)\n",
|
||||
result->format_name, Architectures::to_codename(result->architecture));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@<Accept segment@> =
|
||||
if (wanted == NULL) wanted = Str::duplicate(segment);
|
||||
else {
|
||||
inter_architecture *arch = Architectures::from_codename(segment);
|
||||
if (arch) wanted_arch = arch;
|
||||
else {
|
||||
ADD_TO_LINKED_LIST(Str::duplicate(segment), text_stream, segs);
|
||||
}
|
||||
}
|
||||
|
||||
@
|
||||
@ That just leaves how to tell whether or not a VM has exactly the right options,
|
||||
given that (a) there can be any number of them, including 0, and (b) they can
|
||||
be specified in any order. Speed is unimportant here: in effect we test whether
|
||||
two lists of options give rise to sets which are subsets of each other.
|
||||
|
||||
=
|
||||
int TargetVMs::options_match(target_vm *VM, linked_list *supplied) {
|
||||
|
@ -220,27 +295,24 @@ int TargetVMs::ll_of_text_is_subset(linked_list *A, linked_list *B) {
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
@h Miscellaneous provisions.
|
||||
@h Architectural provisions.
|
||||
|
||||
=
|
||||
int TargetVMs::is_16_bit(target_vm *VM) {
|
||||
if (VM == NULL) internal_error("no VM");
|
||||
return Architectures::is_16_bit(VM->architecture);
|
||||
}
|
||||
|
||||
int TargetVMs::debug_enabled(target_vm *VM) {
|
||||
if (VM == NULL) internal_error("no VM");
|
||||
return Architectures::debug_enabled(VM->architecture);
|
||||
}
|
||||
|
||||
int TargetVMs::supports_floating_point(target_vm *VM) {
|
||||
if (VM == NULL) internal_error("no VM");
|
||||
return VM->supports_floating_point;
|
||||
}
|
||||
|
||||
@ The limits on local variables per routine are different on each platform.
|
||||
On Z, the maximum is fixed at 15, but Glulx allows it to be set with an I6
|
||||
memory setting.
|
||||
|
||||
=
|
||||
int TargetVMs::allow_this_many_locals(target_vm *VM, int N) {
|
||||
if (VM == NULL) internal_error("no VM");
|
||||
if ((VM->max_locals >= 0) && (VM->max_locals < N)) return FALSE;
|
||||
|
@ -252,11 +324,19 @@ int TargetVMs::allow_MAX_LOCAL_VARIABLES(target_vm *VM) {
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
@ When releasing a blorbed story file, the file extension depends on the
|
||||
@h File extension provisions.
|
||||
The normal or unblorbed file extension is just a hint for what would make a
|
||||
natural filename for our output: for example, |py| would be a natural choice
|
||||
for a Python VN, if there were one.
|
||||
|
||||
When releasing a blorbed story file, the file extension used depends on the
|
||||
story file wrapped inside. (This is a dubious idea, in the opinion of
|
||||
the author of Inform -- should not "blorb" be one unified wrapper? -- but
|
||||
that ship seems to have sailed.)
|
||||
|
||||
Note that for VMs not using Inform 6, blorbing is essentially meaningless,
|
||||
and then the blorbed extension may be the empty text.
|
||||
|
||||
=
|
||||
text_stream *TargetVMs::get_unblorbed_extension(target_vm *VM) {
|
||||
if (VM == NULL) internal_error("no VM");
|
||||
|
@ -272,6 +352,10 @@ text_stream *TargetVMs::get_blorbed_extension(target_vm *VM) {
|
|||
where it's not meaningful to talk about debugging features or the number
|
||||
of bits, and where it's currently not possible to express a VM version number.
|
||||
|
||||
It's also unclear what to write to this if we're compiling, say, an Inform 7
|
||||
source text into C: the Treaty of Babel is unclear on that. For now, we write
|
||||
|Inform7+C|.
|
||||
|
||||
=
|
||||
text_stream *TargetVMs::get_iFiction_format(target_vm *VM) {
|
||||
if (VM == NULL) internal_error("no VM");
|
||||
|
@ -284,11 +368,43 @@ inter_architecture *TargetVMs::get_architecture(target_vm *VM) {
|
|||
}
|
||||
|
||||
@ Different VMs have different in-browser interpreters, which means that
|
||||
Inblorb needs to be given different release instructions for them. If the
|
||||
user doesn't specify any particular interpreter, she gets:
|
||||
//inblorb// needs to be given different release instructions for them. If the
|
||||
user doesn't specify any particular interpreter, she gets the following.
|
||||
|
||||
On some platforms this will make no sense, and in those cases the function
|
||||
will return the empty text.
|
||||
|
||||
=
|
||||
text_stream *TargetVMs::get_default_interpreter(target_vm *VM) {
|
||||
if (VM == NULL) internal_error("no VM");
|
||||
return VM->default_browser_interpreter;
|
||||
}
|
||||
|
||||
@h Family compatibility.
|
||||
This is used when, for example, source text headings are said to be "for
|
||||
Glulx only". How are we to interpret that? The full story is at //Compatibility//,
|
||||
but here we do at least match whether a given |VM| is, or is not, "Glulx"
|
||||
(or whatever may be).
|
||||
|
||||
=
|
||||
text_stream *TargetVMs::family(target_vm *VM) {
|
||||
if (VM == NULL) internal_error("no VM");
|
||||
return VM->transpiler_family;
|
||||
}
|
||||
|
||||
int TargetVMs::compatible_with(target_vm *VM, text_stream *token) {
|
||||
if (Str::eq_insensitive(token, I"Glulx")) {
|
||||
if ((Str::eq_insensitive(VM->transpiler_family, I"Inform6")) &&
|
||||
(TargetVMs::is_16_bit(VM) == FALSE))
|
||||
return TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
if (Str::eq_insensitive(token, I"Z-Machine")) {
|
||||
if ((Str::eq_insensitive(VM->transpiler_family, I"Inform6")) &&
|
||||
(TargetVMs::is_16_bit(VM) == TRUE))
|
||||
return TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
if (Str::eq_insensitive(VM->transpiler_family, token)) return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
|
|
@ -16,45 +16,60 @@ uses a module of utility functions called //foundation//.
|
|||
For more, see //foundation: A Brief Guide to Foundation//.
|
||||
|
||||
@h Architecture versus VM.
|
||||
The Inform 7 build process ultimately wants to make code for some target
|
||||
virtual machine -- traditionally, the Z or Glulx machines. But it does this
|
||||
in two stages: first generating abstract Inter code, then further generating
|
||||
VM code from that.
|
||||
The Inform 7 build process works in two stages: first it generates abstract
|
||||
Inter code, then it further generates "final code" from that.
|
||||
|
||||
It's an appealing notion that this first stage might be VM-independent: that
|
||||
It's an appealing notion that this first stage might be universal: that
|
||||
is, that //inform7// could generate the same Inter code regardless of the
|
||||
final VM, and that only the second stage would vary according to target.
|
||||
And this is nearly true, but not quite. There are (currently) two reasons
|
||||
why not:
|
||||
eventual build product needed, and that only the second stage would vary
|
||||
according to this.
|
||||
|
||||
Which is very nearly true, but not quite. Here's why not:
|
||||
(a) //inform7// has to generate different code if integers are 16 rather
|
||||
than 32 bits wide, and
|
||||
(b) it also generates different code with debugging enabled than without.
|
||||
(b) kits of Inter code normally used in compilation make certain other
|
||||
architectural assumptions based on the integer size (for example, the
|
||||
assembly-language syntax and semantics are different in these cases);
|
||||
(c) it also generates different code with debugging enabled than without.
|
||||
|
||||
Reason (b) could be avoided, at some cost in complexity, but reason (a) is
|
||||
something we cannot sensibly avoid without making Inter a much higher-level
|
||||
Reason (c) could be avoided, at some cost in complexity, but reasons (a) and (b)
|
||||
are something we cannot sensibly avoid without making Inter a much higher-level
|
||||
form of bytecode. Instead, we have "architectures" for Inter: for example,
|
||||
32-bit with debugging enabled is the |32d| architecture. See //Architectures//;
|
||||
if ever we introduce a 64-bit VM, that will need new architectures, and
|
||||
this is where they would go.
|
||||
|
||||
@ A //target_vm// object, on the other hand, represents an actual choice of
|
||||
virtual machine. For example, Glulx is a //target_vm//. The compilation
|
||||
process thus involves a combination of both architecture and target:
|
||||
= (text as BoxArt)
|
||||
Source text -----------> Inter code --------------> Bytecode for
|
||||
INFORM7 for architecture via INFORM6 target virtual machine
|
||||
=
|
||||
Each VM can be used with just one architecture: use the function
|
||||
//TargetVMs::get_architecture// to obtain this. It might seem reasonable
|
||||
to say that Glulx ought to be viable with both |32| and |32d| architectures,
|
||||
but in fact "Glulx" is not a single virtual machine but a family of them.
|
||||
A specific member of this family would be the //target_vm// representing
|
||||
Glulx version 3.1.2 with debugging enabled, and that can be used with the
|
||||
|32d| but not the |32| architecture.
|
||||
@ A //target_vm// object, on the other hand, expresses the choices made at
|
||||
the second stage too. The term "VM" is traditional here, and stands for
|
||||
"virtual machine", because until 2021, Inform could only generate code which
|
||||
would ultimately run on virtual machines called Glulx and the Z-machine. But it
|
||||
can now, for example, also generate C.
|
||||
|
||||
There can in principle be numerous VMs in any given family; see
|
||||
//TargetVMs::find_in_family// to obtain family members with given behaviour,
|
||||
and in general see //Target Virtual Machines// for more.
|
||||
As a result, "VM" now has a more general meaning, and really means "form of
|
||||
final code generation". The Glulx format used to be specified by supplying the
|
||||
command-line option |-format=ulx| to //inform7// or //inter//: that still works,
|
||||
though it is deprecated, and |-format=Inform6/32d| is better. But equally
|
||||
possible now would be |-format=C/32d|. Here the target is a native executable
|
||||
to be compiled with a C compiler.
|
||||
|
||||
As these new-style |-format| options suggest, the compilation process thus
|
||||
involves a combination of both architecture and target:
|
||||
= (text as BoxArt)
|
||||
depends on architecture: depends on target:
|
||||
Source text -----------> Inter code ----------------> Bytecode for
|
||||
INFORM7 via INFORM6 target virtual machine
|
||||
----------------> Executable
|
||||
via CLANG/GCC
|
||||
...
|
||||
=
|
||||
Note that a single //target_vm// object can be used with just one architecture:
|
||||
use the function //TargetVMs::get_architecture// to obtain this. If a target supports
|
||||
multiple architectures, then there will be multiple //target_vm// objects for it,
|
||||
one for each architecture it supports. For example, the Glulx VM can be reached
|
||||
by |Inform6/32| or |Inform6/32d|. There can also be multiple versions: for example,
|
||||
|Inform6/16/v8| is a valid target. The function //TargetVMs::find// finds the
|
||||
//target_vm// object associated with a given textual form like |"C/32d"|, if
|
||||
the toolchain supports this.
|
||||
|
||||
@h Compatibility.
|
||||
Not all software in the Inform stack -- source text from the user, extensions,
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
Size of lexicon: 3099 excerpt meanings
|
||||
Stored among 839 words out of total vocabulary of 10560
|
||||
709 words have a start list: longest belongs to report (with 293 meanings)
|
||||
15 words have an end list: longest belongs to case (with 6 meanings)
|
||||
29 words have a middle list: longest belongs to to (with 4 meanings)
|
||||
Size of lexicon: 3036 excerpt meanings
|
||||
Stored among 797 words out of total vocabulary of 10559
|
||||
670 words have a start list: longest belongs to report (with 293 meanings)
|
||||
11 words have an end list: longest belongs to case (with 6 meanings)
|
||||
29 words have a middle list: longest belongs to is (with 4 meanings)
|
||||
108 words have a subset list: longest belongs to street (with 4 meanings)
|
||||
|
||||
Number of attempts to retrieve: 106254
|
||||
of which unsuccessful: 88639
|
||||
of which successful: 17615
|
||||
Number of attempts to retrieve: 105334
|
||||
of which unsuccessful: 87854
|
||||
of which successful: 17480
|
||||
|
||||
Total attempts to match against excerpt meanings: 253776
|
||||
of which, total with incorrect hash codes: 231757
|
||||
of which, total with correct hash codes: 22019
|
||||
of which, total which matched: 19285
|
||||
Total attempts to match against excerpt meanings: 252880
|
||||
of which, total with incorrect hash codes: 231032
|
||||
of which, total with correct hash codes: 21848
|
||||
of which, total which matched: 19130
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
adjective: 137 items
|
||||
adjective: 133 items
|
||||
article: 2 items
|
||||
noun: 2380 items
|
||||
noun: 2360 items
|
||||
pronoun: 8 items
|
||||
preposition: 273 items
|
||||
determiner: 22 items
|
||||
verb: 108 items
|
||||
verb_form: 386 items
|
||||
total in all categories: 3316
|
||||
total in all categories: 3292
|
||||
|
||||
adjective: 'even'
|
||||
adjective: 'odd'
|
||||
|
@ -31,10 +31,6 @@ adjective: 'one-to-one'
|
|||
adjective: 'one-to-various'
|
||||
adjective: 'various-to-one'
|
||||
adjective: 'various-to-various'
|
||||
adjective: 'infinite'
|
||||
adjective: 'finite'
|
||||
adjective: 'nonexistent'
|
||||
adjective: 'existent'
|
||||
adjective: 'worn'
|
||||
adjective: 'carried'
|
||||
adjective: 'held'
|
||||
|
@ -222,26 +218,6 @@ noun: proper: 'printed plural name'
|
|||
noun: proper: 'property printed plural name'
|
||||
noun: proper: 'indefinite article'
|
||||
noun: proper: 'property indefinite article'
|
||||
noun: proper: 'abs function'
|
||||
noun: proper: 'root function'
|
||||
noun: proper: 'rsqr function'
|
||||
noun: proper: 'ceiling function'
|
||||
noun: proper: 'floor function'
|
||||
noun: proper: 'int function'
|
||||
noun: proper: 'log function'
|
||||
noun: proper: 'exp function'
|
||||
noun: proper: 'sin function'
|
||||
noun: proper: 'cos function'
|
||||
noun: proper: 'tan function'
|
||||
noun: proper: 'arcsin function'
|
||||
noun: proper: 'arccos function'
|
||||
noun: proper: 'arctan function'
|
||||
noun: proper: 'sinh function'
|
||||
noun: proper: 'cosh function'
|
||||
noun: proper: 'tanh function'
|
||||
noun: proper: 'arcsinh function'
|
||||
noun: proper: 'arccosh function'
|
||||
noun: proper: 'arctanh function'
|
||||
noun: proper: 'adaptive text viewpoint'
|
||||
noun: proper: 'property adaptive text viewpoint'
|
||||
noun: proper: 'description'
|
||||
|
|
Loading…
Reference in a new issue