1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-07-09 02:24:21 +03:00
inform7/docs/WorldModelKit/S-tt2.html
2020-03-19 00:11:25 +00:00

667 lines
94 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>S/tt</title>
<meta name="viewport" content="width=device-width initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-gb">
<link href="../inweb.css" rel="stylesheet" rev="stylesheet" type="text/css">
</head>
<body>
<nav role="navigation">
<h1><a href="../webs.html">Sources</a></h1>
<ul>
<li><a href="../compiler.html">compiler</a></li>
<li><a href="../other.html">other tools</a></li>
<li><a href="../extensions.html"><b>extensions and kits</b></a></li>
<li><a href="../units.html">unit test tools</a></li>
/ul>
<h2>Extensions</h2>
<ul>
<li><a href="../basic_inform/index.html">Basic Inform</a></li>
<li><a href="../standard_rules/index.html">Standard Rules</a></li>
</ul>
<h2>Kits</h2>
<ul>
<li><a href="../BasicInformKit/index.html">BasicInformKit</a></li>
<li><a href="../BasicInformExtrasKit/index.html">BasicInformExtrasKit</a></li>
<li><a href="../CommandParserKit/index.html">CommandParserKit</a></li>
<li><a href="../EnglishLanguageKit/index.html">EnglishLanguageKit</a></li>
<li><a href="../WorldModelKit/index.html">WorldModelKit</a></li>
</ul>
</nav>
<main role="main">
<!--Weave of 'S/tt2' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">Source</a></li><li><a href="../extensions.html">Kits</a></li><li><a href="index.html">WorldModelKit</a></li><li><b>Tests Template</b></li></ul><p class="purpose">The command grammar and I6 implementation for testing commands such as TEST, ACTIONS and PURLOIN.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. All testy</a></li><li><a href="#SP2">&#167;2. Abstract Command</a></li><li><a href="#SP3">&#167;3. Actions Command</a></li><li><a href="#SP4">&#167;4. Gonear Command</a></li><li><a href="#SP5">&#167;5. Purloin Command</a></li><li><a href="#SP6">&#167;6. Random Command</a></li><li><a href="#SP7">&#167;7. Relations Command</a></li><li><a href="#SP8">&#167;8. Responses Command</a></li><li><a href="#SP9">&#167;9. Rules Command</a></li><li><a href="#SP10">&#167;10. Scenes Command</a></li><li><a href="#SP11">&#167;11. Scope Command</a></li><li><a href="#SP12">&#167;12. Showheap Command</a></li><li><a href="#SP13">&#167;13. ShowMe Command</a></li><li><a href="#SP14">&#167;14. Showverb Command</a></li><li><a href="#SP15">&#167;15. Test Command</a></li><li><a href="#SP16">&#167;16. Trace Command</a></li><li><a href="#SP17">&#167;17. Tree Command</a></li><li><a href="#SP18">&#167;18. Grammar</a></li><li><a href="#SP19">&#167;19. End testy</a></li></ul><hr class="tocbar">
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. All testy. </b></p>
<pre class="display">
<span class="plain">#</span><span class="identifier">Ifdef</span><span class="plain"> </span><span class="identifier">DEBUG</span><span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. Abstract Command. </b>The code below is compiled only if the symbol <code class="display"><span class="extract">DEBUG</span></code> is defined, which it
always is for normal runs in the Inform user interface, but not for Release
runs.
</p>
<p class="inwebparagraph">Not all of these commands are documented; this is intentional. They may be
changed in name or function. This is all of the testing commands except for
the GLKLIST command, which is in Glulx.i6t (and does not exist when the
target VM is the Z-machine).
</p>
<p class="inwebparagraph">We take the commands in alphabetical order, beginning with ABSTRACT, which
moves an object to a new position in the object tree.
</p>
<pre class="display">
<span class="plain">[ </span><span class="identifier">XAbstractSub</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">XTestMove</span><span class="plain">(</span><span class="identifier">noun</span><span class="plain">, </span><span class="identifier">second</span><span class="plain">)) </span><span class="reserved">return</span><span class="plain">;</span>
<span class="reserved">move</span><span class="plain"> </span><span class="identifier">noun</span><span class="plain"> </span><span class="reserved">to</span><span class="plain"> </span><span class="identifier">second</span><span class="plain">;</span>
<span class="string">"[Abstracted.]"</span><span class="plain">;</span>
<span class="plain">];</span>
<span class="plain">[ </span><span class="identifier">XTestMove</span><span class="plain"> </span><span class="identifier">obj</span><span class="plain"> </span><span class="identifier">dest</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">obj</span><span class="plain"> &lt;= </span><span class="identifier">InformLibrary</span><span class="plain">) </span><span class="reserved">print_ret</span><span class="plain"> </span><span class="string">"[Can't move "</span><span class="plain">, (</span><span class="identifier">name</span><span class="plain">) </span><span class="identifier">obj</span><span class="plain">, </span><span class="string">": it's a system object.]"</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">obj</span><span class="plain">.</span><span class="identifier">component_parent</span><span class="plain">) </span><span class="reserved">print_ret</span><span class="plain"> </span><span class="string">"[Can't move "</span><span class="plain">, (</span><span class="identifier">name</span><span class="plain">) </span><span class="identifier">obj</span><span class="plain">, </span><span class="string">": it's part of "</span><span class="plain">,</span>
<span class="plain">(</span><span class="identifier">the</span><span class="plain">) </span><span class="identifier">obj</span><span class="plain">.</span><span class="identifier">component_parent</span><span class="plain">, </span><span class="string">".]"</span><span class="plain">;</span>
<span class="reserved">while</span><span class="plain"> (</span><span class="identifier">dest</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">dest</span><span class="plain"> == </span><span class="identifier">obj</span><span class="plain">) </span><span class="reserved">print_ret</span><span class="plain"> </span><span class="string">"[Can't move "</span><span class="plain">, (</span><span class="identifier">name</span><span class="plain">) </span><span class="identifier">obj</span><span class="plain">, </span><span class="string">": it would contain itself.]"</span><span class="plain">;</span>
<span class="identifier">dest</span><span class="plain"> = </span><span class="identifier">CoreOfParentOfCoreOf</span><span class="plain">(</span><span class="identifier">dest</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">rfalse</span><span class="plain">;</span>
<span class="plain">];</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. Actions Command. </b>ACTIONS turns tracing of actions on.
</p>
<pre class="display">
<span class="plain">[ </span><span class="identifier">ActionsOnSub</span><span class="plain">; </span><span class="identifier">trace_actions</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">; </span><span class="identifier">say__p</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">; </span><span class="string">"Actions listing on."</span><span class="plain">; ];</span>
<span class="plain">[ </span><span class="identifier">ActionsOffSub</span><span class="plain">; </span><span class="identifier">trace_actions</span><span class="plain"> = </span><span class="constant">0</span><span class="plain">; </span><span class="identifier">say__p</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">; </span><span class="string">"Actions listing off."</span><span class="plain">; ];</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. Gonear Command. </b>GONEAR teleports the player to the vicinity of some named item.
</p>
<pre class="display">
<span class="plain">[ </span><span class="identifier">GonearSub</span><span class="plain">;</span>
<span class="identifier">PlayerTo</span><span class="plain">(</span><span class="identifier">LocationOf</span><span class="plain">(</span><span class="identifier">noun</span><span class="plain">));</span>
<span class="plain">];</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP5"></a><b>&#167;5. Purloin Command. </b>To PURLOIN is to acquire something without reference to any rules on accessibility.
</p>
<pre class="display">
<span class="plain">[ </span><span class="identifier">XPurloinSub</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">XTestMove</span><span class="plain">(</span><span class="identifier">noun</span><span class="plain">, </span><span class="identifier">player</span><span class="plain">)) </span><span class="reserved">return</span><span class="plain">;</span>
<span class="reserved">move</span><span class="plain"> </span><span class="identifier">noun</span><span class="plain"> </span><span class="reserved">to</span><span class="plain"> </span><span class="identifier">player</span><span class="plain">; </span><span class="reserved">give</span><span class="plain"> </span><span class="identifier">noun</span><span class="plain"> </span><span class="identifier">moved</span><span class="plain">; </span><span class="reserved">give</span><span class="plain"> </span><span class="identifier">noun</span><span class="plain"> ~</span><span class="identifier">concealed</span><span class="plain">;</span>
<span class="identifier">say__p</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">;</span>
<span class="string">"[Purloined.]"</span><span class="plain">;</span>
<span class="plain">];</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP6"></a><b>&#167;6. Random Command. </b>RANDOM forces the random-number generator to a predictable seed value.
</p>
<pre class="display">
<span class="plain">[ </span><span class="identifier">PredictableSub</span><span class="plain">;</span>
<span class="identifier">VM_Seed_RNG</span><span class="plain">(-100);</span>
<span class="identifier">say__p</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">;</span>
<span class="string">"[Random number generator now predictable.]"</span><span class="plain">;</span>
<span class="plain">];</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP7"></a><b>&#167;7. Relations Command. </b>RELATIONS lists the current state of the mutable relations.
</p>
<pre class="display">
<span class="plain">[ </span><span class="identifier">ShowRelationsSub</span><span class="plain">;</span>
<span class="identifier">IterateRelations</span><span class="plain">(</span><span class="identifier">ShowOneRelation</span><span class="plain">);</span>
<span class="plain">];</span>
<span class="plain">[ </span><span class="identifier">ShowOneRelation</span><span class="plain"> </span><span class="identifier">rel</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">RlnGetF</span><span class="plain">(</span><span class="identifier">rel</span><span class="plain">, </span><span class="identifier">RR_PERMISSIONS</span><span class="plain">)) &amp; (</span><span class="identifier">RELS_SHOW</span><span class="plain">)) {</span>
<span class="plain">(</span><span class="identifier">RlnGetF</span><span class="plain">(</span><span class="identifier">rel</span><span class="plain">, </span><span class="identifier">RR_HANDLER</span><span class="plain">))(</span><span class="identifier">rel</span><span class="plain">, </span><span class="identifier">RELS_SHOW</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="plain">];</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP8"></a><b>&#167;8. Responses Command. </b>RESPONSES lists the known responses.
</p>
<pre class="display">
<span class="plain">[ </span><span class="identifier">ShowResponsesSub</span><span class="plain"> </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">i</span><span class="plain"> </span><span class="identifier">j</span><span class="plain"> </span><span class="identifier">reg</span><span class="plain"> </span><span class="identifier">wd</span><span class="plain"> </span><span class="identifier">set_mode</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">NO_RESPONSES</span><span class="plain"> == </span><span class="constant">0</span><span class="plain">) </span><span class="string">"There are no lettered responses."</span><span class="plain">;</span>
<span class="identifier">wn</span><span class="plain"> = </span><span class="constant">2</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">NextWordStopped</span><span class="plain">() == </span><span class="character">'now'</span><span class="plain">) </span><span class="identifier">set_mode</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">; </span><span class="reserved">else</span><span class="plain"> </span><span class="identifier">wn</span><span class="plain">--;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">NextWordStopped</span><span class="plain">() == </span><span class="character">'set'</span><span class="plain">) </span><span class="identifier">set_mode</span><span class="plain"> = </span><span class="constant">2</span><span class="plain">; </span><span class="reserved">else</span><span class="plain"> </span><span class="identifier">wn</span><span class="plain">--;</span>
<span class="identifier">wd</span><span class="plain"> = </span><span class="identifier">NextWordStopped</span><span class="plain">(); </span><span class="identifier">wn</span><span class="plain">--;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">wd</span><span class="plain"> == </span><span class="character">'all'</span><span class="plain">) </span><span class="identifier">reg</span><span class="plain"> = </span><span class="constant">0</span><span class="plain">;</span>
<span class="reserved">else</span><span class="plain"> {</span>
<span class="identifier">reg</span><span class="plain"> = </span><span class="constant">-1</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">wd</span><span class="plain"> ~= </span><span class="constant">-1</span><span class="plain">) </span><span class="identifier">reg</span><span class="plain"> = </span><span class="identifier">TryNumber</span><span class="plain">(</span><span class="identifier">wn</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">reg</span><span class="plain"> &lt; </span><span class="constant">0</span><span class="plain">) {</span>
<span class="identifier">say__p</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">;</span>
<span class="reserved">print</span><span class="plain"> </span><span class="string">"&gt;--&gt; The following sets of responses are available:^"</span><span class="plain">;</span>
<span class="reserved">print</span><span class="plain"> </span><span class="string">" RESPONSES ALL^"</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="reserved">for</span><span class="plain"> (</span><span class="identifier">a</span><span class="plain">=0, </span><span class="identifier">i</span><span class="plain">=1, </span><span class="identifier">j</span><span class="plain">=0: </span><span class="identifier">ResponseDivisions</span><span class="plain">--&gt;</span><span class="identifier">a</span><span class="plain">: </span><span class="identifier">a</span><span class="plain">=</span><span class="identifier">a</span><span class="plain">+3, </span><span class="identifier">i</span><span class="plain">++) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ResponseDivisions</span><span class="plain">--&gt;</span><span class="identifier">a</span><span class="plain"> ~= </span><span class="identifier">EMPTY_TEXT_PACKED</span><span class="plain">) </span><span class="identifier">j</span><span class="plain">++;</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">reg</span><span class="plain"> == </span><span class="constant">0</span><span class="plain">) || (</span><span class="identifier">reg</span><span class="plain"> == </span><span class="identifier">j</span><span class="plain">)) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ResponseDivisions</span><span class="plain">--&gt;</span><span class="identifier">a</span><span class="plain"> ~= </span><span class="identifier">EMPTY_TEXT_PACKED</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">set_mode</span><span class="plain">) {</span>
<span class="reserved">print</span><span class="plain"> </span><span class="string">"["</span><span class="plain">, (</span><span class="reserved">string</span><span class="plain">) </span><span class="identifier">ResponseDivisions</span><span class="plain">--&gt;</span><span class="identifier">a</span><span class="plain">, </span><span class="string">"]^"</span><span class="plain">;</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
<span class="reserved">print</span><span class="plain"> (</span><span class="reserved">string</span><span class="plain">) </span><span class="identifier">ResponseDivisions</span><span class="plain">--&gt;</span><span class="identifier">a</span><span class="plain">, </span><span class="string">":^"</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="identifier">ShowResponsesRange</span><span class="plain">(</span><span class="identifier">ResponseDivisions</span><span class="plain">--&gt;(</span><span class="identifier">a</span><span class="plain">+1), </span><span class="identifier">ResponseDivisions</span><span class="plain">--&gt;(</span><span class="identifier">a</span><span class="plain">+2), </span><span class="identifier">set_mode</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">reg</span><span class="plain"> &lt; </span><span class="constant">0</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ResponseDivisions</span><span class="plain">--&gt;</span><span class="identifier">a</span><span class="plain"> ~= </span><span class="identifier">EMPTY_TEXT_PACKED</span><span class="plain">) {</span>
<span class="reserved">print</span><span class="plain"> </span><span class="string">" RESPONSES "</span><span class="plain">, </span><span class="identifier">j</span><span class="plain">, </span><span class="string">": "</span><span class="plain">, (</span><span class="reserved">string</span><span class="plain">) </span><span class="identifier">ResponseDivisions</span><span class="plain">--&gt;</span><span class="identifier">a</span><span class="plain">, </span><span class="string">"^"</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="plain">];</span>
<span class="plain">[ </span><span class="identifier">ShowResponsesRange</span><span class="plain"> </span><span class="identifier">from</span><span class="plain"> </span><span class="reserved">to</span><span class="plain"> </span><span class="identifier">set_mode</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">;</span>
<span class="identifier">say__p</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">;</span>
<span class="reserved">for</span><span class="plain"> (</span><span class="identifier">i</span><span class="plain">=</span><span class="identifier">from</span><span class="plain">: </span><span class="identifier">i</span><span class="plain">&lt;=</span><span class="reserved">to</span><span class="plain">: </span><span class="identifier">i</span><span class="plain">++) {</span>
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">set_mode</span><span class="plain">) {</span>
<span class="constant">1</span><span class="plain">: </span><span class="reserved">print</span><span class="plain"> </span><span class="string">"now "</span><span class="plain">;</span>
<span class="constant">2</span><span class="plain">: ;</span>
<span class="constant">0</span><span class="plain">: </span><span class="reserved">print</span><span class="plain"> </span><span class="string">" "</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">print</span><span class="plain"> (</span><span class="identifier">PrintResponse</span><span class="plain">) </span><span class="identifier">i</span><span class="plain">;</span>
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">set_mode</span><span class="plain">) {</span>
<span class="constant">1</span><span class="plain">: </span><span class="reserved">print</span><span class="plain"> </span><span class="string">" is "</span><span class="plain">;</span>
<span class="constant">2</span><span class="plain">: </span><span class="reserved">print</span><span class="plain"> </span><span class="string">" is "</span><span class="plain">;</span>
<span class="constant">0</span><span class="plain">: </span><span class="reserved">print</span><span class="plain"> </span><span class="string">": "</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="identifier">suppress_text_substitution</span><span class="plain"> = </span><span class="reserved">true</span><span class="plain">;</span>
<span class="identifier">CarryOutActivity</span><span class="plain">(</span><span class="identifier">PRINTING_RESPONSE_ACT</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">);</span>
<span class="identifier">suppress_text_substitution</span><span class="plain"> = </span><span class="reserved">false</span><span class="plain">;</span>
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">set_mode</span><span class="plain">) {</span>
<span class="constant">1</span><span class="plain">: </span><span class="reserved">print</span><span class="plain"> </span><span class="string">";"</span><span class="plain">;</span>
<span class="constant">2</span><span class="plain">: </span><span class="reserved">print</span><span class="plain"> </span><span class="string">"."</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">print</span><span class="plain"> </span><span class="string">"^"</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="plain">];</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP9"></a><b>&#167;9. Rules Command. </b>RULES changes the level of rule tracing.
</p>
<pre class="display">
<span class="plain">[ </span><span class="identifier">RulesOnSub</span><span class="plain">;</span>
<span class="identifier">debug_rules</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">; </span><span class="identifier">say__p</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">;</span>
<span class="string">"Rules tracing now switched on. Type ~rules off~ to switch it off again,</span>
<span class="reserved">or</span><span class="plain"> ~</span><span class="identifier">rules</span><span class="plain"> </span><span class="identifier">all</span><span class="plain">~ </span><span class="reserved">to</span><span class="plain"> </span><span class="identifier">include</span><span class="plain"> </span><span class="identifier">even</span><span class="plain"> </span><span class="identifier">rules</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="reserved">do</span><span class="plain"> </span><span class="identifier">not</span><span class="plain"> </span><span class="identifier">apply</span><span class="plain">.</span><span class="string">";</span>
<span class="plain">];</span>
<span class="plain">[ </span><span class="identifier">RulesAllSub</span><span class="plain">;</span>
<span class="identifier">debug_rules</span><span class="plain"> = </span><span class="constant">2</span><span class="plain">; </span><span class="identifier">say__p</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">;</span>
<span class="string">"Rules tracing now switched to ~all~. Type ~rules off~ to switch it off again."</span><span class="plain">;</span>
<span class="plain">];</span>
<span class="plain">[ </span><span class="identifier">RulesOffSub</span><span class="plain">;</span>
<span class="identifier">debug_rules</span><span class="plain"> = </span><span class="constant">0</span><span class="plain">; </span><span class="identifier">say__p</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">;</span>
<span class="string">"Rules tracing now switched off. Type ~rules~ to switch it on again."</span><span class="plain">;</span>
<span class="plain">];</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP10"></a><b>&#167;10. Scenes Command. </b>SCENES switches scene-change tracing on or off, and also shows the current position.
</p>
<pre class="display">
<span class="plain">[ </span><span class="identifier">ScenesOnSub</span><span class="plain">;</span>
<span class="identifier">debug_scenes</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">;</span>
<span class="identifier">ShowSceneStatus</span><span class="plain">(); </span><span class="identifier">say__p</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">;</span>
<span class="string">"(Scene monitoring now switched on. Type ~scenes off~ to switch it off again.)"</span><span class="plain">;</span>
<span class="plain">];</span>
<span class="plain">[ </span><span class="identifier">ScenesOffSub</span><span class="plain">;</span>
<span class="identifier">debug_scenes</span><span class="plain"> = </span><span class="constant">0</span><span class="plain">; </span><span class="identifier">say__p</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">;</span>
<span class="string">"(Scene monitoring now switched off. Type ~scenes~ to switch it on again.)"</span><span class="plain">;</span>
<span class="plain">];</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP11"></a><b>&#167;11. Scope Command. </b>SCOPE prints a numbered list of all objects in scope to the player.
</p>
<pre class="display">
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">x_scope_count</span><span class="plain">;</span>
<span class="plain">[ </span><span class="identifier">ScopeSub</span><span class="plain">;</span>
<span class="identifier">x_scope_count</span><span class="plain"> = </span><span class="constant">0</span><span class="plain">;</span>
<span class="identifier">LoopOverScope</span><span class="plain">(</span><span class="identifier">Print_ScL</span><span class="plain">, </span><span class="identifier">noun</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">x_scope_count</span><span class="plain"> == </span><span class="constant">0</span><span class="plain">) </span><span class="string">"Nothing is in scope."</span><span class="plain">;</span>
<span class="plain">];</span>
<span class="plain">[ </span><span class="identifier">Print_ScL</span><span class="plain"> </span><span class="identifier">obj</span><span class="plain">; </span><span class="reserved">print_ret</span><span class="plain"> ++</span><span class="identifier">x_scope_count</span><span class="plain">, </span><span class="string">": "</span><span class="plain">, (</span><span class="identifier">a</span><span class="plain">) </span><span class="identifier">obj</span><span class="plain">, </span><span class="string">" ("</span><span class="plain">, </span><span class="identifier">obj</span><span class="plain">, </span><span class="string">")"</span><span class="plain">; ];</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP12"></a><b>&#167;12. Showheap Command. </b>SHOWHEAP is for debugging the memory heap, and is intended for Inform
maintainers rather than users.
</p>
<pre class="display">
<span class="plain">[ </span><span class="identifier">ShowHeapSub</span><span class="plain">;</span>
<span class="identifier">HeapDebug</span><span class="plain">();</span>
<span class="plain">];</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP13"></a><b>&#167;13. ShowMe Command. </b>SHOWME is probably the most useful testing command: it shows the state of the
current room, or a named item.
</p>
<pre class="display">
<span class="plain">[ </span><span class="identifier">ShowMeSub</span><span class="plain"> </span><span class="identifier">t_0</span><span class="plain">;</span>
<span class="identifier">t_0</span><span class="plain"> = </span><span class="identifier">noun</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">noun</span><span class="plain"> == </span><span class="reserved">nothing</span><span class="plain">) </span><span class="identifier">noun</span><span class="plain"> = </span><span class="identifier">real_location</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ShowMeRecursively</span><span class="plain">(</span><span class="identifier">noun</span><span class="plain">, </span><span class="constant">0</span><span class="plain">, (</span><span class="identifier">noun</span><span class="plain"> == </span><span class="identifier">real_location</span><span class="plain">))) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">noun</span><span class="plain"> == </span><span class="identifier">real_location</span><span class="plain">)</span>
<span class="reserved">print</span><span class="plain"> </span><span class="string">"* denotes things which are not in scope^"</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">t_0</span><span class="plain"> </span><span class="reserved">ofclass</span><span class="plain"> </span><span class="identifier">K2_thing</span><span class="plain">) {</span>
<span class="reserved">print</span><span class="plain"> </span><span class="string">"location:"</span><span class="plain">; </span><span class="identifier">ShowRLocation</span><span class="plain">(</span><span class="identifier">noun</span><span class="plain">, </span><span class="reserved">true</span><span class="plain">); </span><span class="reserved">print</span><span class="plain"> </span><span class="string">"^"</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="identifier">ShowMeDetails</span><span class="plain">(</span><span class="identifier">t_0</span><span class="plain">);</span>
<span class="plain">];</span>
<span class="plain">[ </span><span class="identifier">ShowRLocation</span><span class="plain"> </span><span class="identifier">obj</span><span class="plain"> </span><span class="identifier">top</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">obj</span><span class="plain"> </span><span class="reserved">ofclass</span><span class="plain"> </span><span class="identifier">K1_room</span><span class="plain">) </span><span class="reserved">return</span><span class="plain">;</span>
<span class="reserved">print</span><span class="plain"> </span><span class="string">" "</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="reserved">parent</span><span class="plain">(</span><span class="identifier">obj</span><span class="plain">)) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">obj</span><span class="plain"> </span><span class="reserved">has</span><span class="plain"> </span><span class="identifier">worn</span><span class="plain">) </span><span class="reserved">print</span><span class="plain"> </span><span class="string">"worn by "</span><span class="plain">;</span>
<span class="reserved">else</span><span class="plain"> {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="reserved">parent</span><span class="plain">(</span><span class="identifier">obj</span><span class="plain">) </span><span class="reserved">has</span><span class="plain"> </span><span class="identifier">animate</span><span class="plain">) </span><span class="reserved">print</span><span class="plain"> </span><span class="string">"carried by "</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="reserved">parent</span><span class="plain">(</span><span class="identifier">obj</span><span class="plain">) </span><span class="reserved">has</span><span class="plain"> </span><span class="identifier">container</span><span class="plain">) </span><span class="reserved">print</span><span class="plain"> </span><span class="string">"in "</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="reserved">parent</span><span class="plain">(</span><span class="identifier">obj</span><span class="plain">) </span><span class="reserved">ofclass</span><span class="plain"> </span><span class="identifier">K1_room</span><span class="plain">) </span><span class="reserved">print</span><span class="plain"> </span><span class="string">"in "</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="reserved">parent</span><span class="plain">(</span><span class="identifier">obj</span><span class="plain">) </span><span class="reserved">has</span><span class="plain"> </span><span class="identifier">supporter</span><span class="plain">) </span><span class="reserved">print</span><span class="plain"> </span><span class="string">"on "</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">print</span><span class="plain"> (</span><span class="identifier">the</span><span class="plain">) </span><span class="reserved">parent</span><span class="plain">(</span><span class="identifier">obj</span><span class="plain">);</span>
<span class="identifier">ShowRLocation</span><span class="plain">(</span><span class="reserved">parent</span><span class="plain">(</span><span class="identifier">obj</span><span class="plain">));</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">obj</span><span class="plain">.</span><span class="identifier">component_parent</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">top</span><span class="plain"> == </span><span class="reserved">false</span><span class="plain">) </span><span class="reserved">print</span><span class="plain"> </span><span class="string">", which is "</span><span class="plain">;</span>
<span class="reserved">print</span><span class="plain"> </span><span class="string">"part of "</span><span class="plain">, (</span><span class="identifier">the</span><span class="plain">) </span><span class="identifier">obj</span><span class="plain">.</span><span class="identifier">component_parent</span><span class="plain">;</span>
<span class="identifier">ShowRLocation</span><span class="plain">(</span><span class="identifier">obj</span><span class="plain">.</span><span class="identifier">component_parent</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">print</span><span class="plain"> </span><span class="string">"out of play"</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="plain">];</span>
<span class="plain">[ </span><span class="identifier">ShowMeRecursively</span><span class="plain"> </span><span class="identifier">obj</span><span class="plain"> </span><span class="identifier">depth</span><span class="plain"> </span><span class="identifier">f</span><span class="plain"> </span><span class="identifier">c</span><span class="plain"> </span><span class="identifier">i</span><span class="plain"> </span><span class="identifier">k</span><span class="plain">;</span>
<span class="reserved">spaces</span><span class="plain">(2*</span><span class="identifier">depth</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">f</span><span class="plain"> &amp;&amp; (</span><span class="identifier">depth</span><span class="plain"> &gt; </span><span class="constant">0</span><span class="plain">) &amp;&amp; (</span><span class="identifier">TestScope</span><span class="plain">(</span><span class="identifier">obj</span><span class="plain">, </span><span class="identifier">player</span><span class="plain">) == </span><span class="reserved">false</span><span class="plain">)) { </span><span class="reserved">print</span><span class="plain"> </span><span class="string">"*"</span><span class="plain">; </span><span class="identifier">c</span><span class="plain"> = </span><span class="reserved">true</span><span class="plain">; }</span>
<span class="reserved">print</span><span class="plain"> (</span><span class="identifier">name</span><span class="plain">) </span><span class="identifier">obj</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">depth</span><span class="plain"> &gt; </span><span class="constant">0</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">obj</span><span class="plain">.</span><span class="identifier">component_parent</span><span class="plain">) </span><span class="reserved">print</span><span class="plain"> </span><span class="string">" (part of "</span><span class="plain">, (</span><span class="identifier">name</span><span class="plain">) </span><span class="identifier">obj</span><span class="plain">.</span><span class="identifier">component_parent</span><span class="plain">, </span><span class="string">")"</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">obj</span><span class="plain"> </span><span class="reserved">has</span><span class="plain"> </span><span class="identifier">worn</span><span class="plain">) </span><span class="reserved">print</span><span class="plain"> </span><span class="string">" (worn)"</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">obj</span><span class="plain"> </span><span class="reserved">provides</span><span class="plain"> </span><span class="identifier">KD_Count</span><span class="plain">) {</span>
<span class="identifier">k</span><span class="plain"> = </span><span class="identifier">KindHierarchy</span><span class="plain">--&gt;((</span><span class="identifier">obj</span><span class="plain">.</span><span class="identifier">KD_Count</span><span class="plain">)*2);</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">k</span><span class="plain"> ~= </span><span class="identifier">K2_thing</span><span class="plain">) || (</span><span class="identifier">depth</span><span class="plain">==0)) {</span>
<span class="reserved">print</span><span class="plain"> </span><span class="string">" - "</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">k</span><span class="plain"> == </span><span class="identifier">K4_door</span><span class="plain"> </span><span class="reserved">or</span><span class="plain"> </span><span class="identifier">K5_container</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">obj</span><span class="plain"> </span><span class="reserved">has</span><span class="plain"> </span><span class="identifier">transparent</span><span class="plain">) </span><span class="reserved">print</span><span class="plain"> </span><span class="string">"transparent "</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">obj</span><span class="plain"> </span><span class="reserved">has</span><span class="plain"> </span><span class="identifier">locked</span><span class="plain">) </span><span class="reserved">print</span><span class="plain"> </span><span class="string">"locked "</span><span class="plain">;</span>
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">obj</span><span class="plain"> </span><span class="reserved">has</span><span class="plain"> </span><span class="identifier">open</span><span class="plain">) </span><span class="reserved">print</span><span class="plain"> </span><span class="string">"open "</span><span class="plain">;</span>
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">print</span><span class="plain"> </span><span class="string">"closed "</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">print</span><span class="plain"> (</span><span class="identifier">I7_Kind_Name</span><span class="plain">) </span><span class="identifier">k</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="reserved">print</span><span class="plain"> </span><span class="string">"^"</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">obj</span><span class="plain">.</span><span class="identifier">component_child</span><span class="plain">) </span><span class="identifier">c</span><span class="plain"> = </span><span class="identifier">c</span><span class="plain"> | </span><span class="identifier">ShowMeRecursively</span><span class="plain">(</span><span class="identifier">obj</span><span class="plain">.</span><span class="identifier">component_child</span><span class="plain">, </span><span class="identifier">depth</span><span class="plain">+2, </span><span class="identifier">f</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">depth</span><span class="plain">&gt;0) &amp;&amp; (</span><span class="identifier">obj</span><span class="plain">.</span><span class="identifier">component_sibling</span><span class="plain">))</span>
<span class="identifier">c</span><span class="plain"> = </span><span class="identifier">c</span><span class="plain"> | </span><span class="identifier">ShowMeRecursively</span><span class="plain">(</span><span class="identifier">obj</span><span class="plain">.</span><span class="identifier">component_sibling</span><span class="plain">, </span><span class="identifier">depth</span><span class="plain">, </span><span class="identifier">f</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="reserved">child</span><span class="plain">(</span><span class="identifier">obj</span><span class="plain">)) </span><span class="identifier">c</span><span class="plain"> = </span><span class="identifier">c</span><span class="plain"> | </span><span class="identifier">ShowMeRecursively</span><span class="plain">(</span><span class="reserved">child</span><span class="plain">(</span><span class="identifier">obj</span><span class="plain">), </span><span class="identifier">depth</span><span class="plain">+2, </span><span class="identifier">f</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">depth</span><span class="plain">&gt;0) &amp;&amp; (</span><span class="reserved">sibling</span><span class="plain">(</span><span class="identifier">obj</span><span class="plain">))) </span><span class="identifier">c</span><span class="plain"> = </span><span class="identifier">c</span><span class="plain"> | </span><span class="identifier">ShowMeRecursively</span><span class="plain">(</span><span class="reserved">sibling</span><span class="plain">(</span><span class="identifier">obj</span><span class="plain">), </span><span class="identifier">depth</span><span class="plain">, </span><span class="identifier">f</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">c</span><span class="plain">;</span>
<span class="plain">];</span>
<span class="plain">[ </span><span class="identifier">AllowInShowme</span><span class="plain"> </span><span class="identifier">pr</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">pr</span><span class="plain"> == </span><span class="identifier">workflag</span><span class="plain"> </span><span class="reserved">or</span><span class="plain"> </span><span class="identifier">concealed</span><span class="plain"> </span><span class="reserved">or</span><span class="plain"> </span><span class="identifier">mentioned</span><span class="plain">) </span><span class="reserved">rfalse</span><span class="plain">;</span>
<span class="reserved">rtrue</span><span class="plain">;</span>
<span class="plain">];</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP14"></a><b>&#167;14. Showverb Command. </b>SHOWVERB is a holdover from old I6 days, but still quite useful. It writes
out the I6 command verb grammar for the supplied command.
</p>
<pre class="display">
<span class="plain">[ </span><span class="identifier">ShowVerbSub</span><span class="plain"> </span><span class="identifier">address</span><span class="plain"> </span><span class="identifier">lines</span><span class="plain"> </span><span class="identifier">meta</span><span class="plain"> </span><span class="identifier">i</span><span class="plain"> </span><span class="identifier">x</span><span class="plain">;</span>
<span class="identifier">wn</span><span class="plain"> = </span><span class="constant">2</span><span class="plain">; </span><span class="identifier">x</span><span class="plain"> = </span><span class="identifier">NextWordStopped</span><span class="plain">();</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">x</span><span class="plain"> == </span><span class="constant">0</span><span class="plain"> || ((</span><span class="identifier">x</span><span class="plain">-&gt;#</span><span class="identifier">dict_par1</span><span class="plain">) &amp; </span><span class="constant">1</span><span class="plain">) == </span><span class="constant">0</span><span class="plain">)</span>
<span class="string">"Try typing ~showverb~ and then the name of a verb."</span><span class="plain">;</span>
<span class="identifier">meta</span><span class="plain"> = ((</span><span class="identifier">x</span><span class="plain">-&gt;#</span><span class="identifier">dict_par1</span><span class="plain">) &amp; </span><span class="constant">2</span><span class="plain">)/2;</span>
<span class="identifier">i</span><span class="plain"> = </span><span class="identifier">DictionaryWordToVerbNum</span><span class="plain">(</span><span class="identifier">x</span><span class="plain">);</span>
<span class="identifier">address</span><span class="plain"> = </span><span class="identifier">VM_CommandTableAddress</span><span class="plain">(</span><span class="identifier">i</span><span class="plain">);</span>
<span class="identifier">lines</span><span class="plain"> = </span><span class="identifier">address</span><span class="plain">-&gt;0;</span>
<span class="identifier">address</span><span class="plain">++;</span>
<span class="reserved">print</span><span class="plain"> </span><span class="string">"Verb "</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">meta</span><span class="plain">) </span><span class="reserved">print</span><span class="plain"> </span><span class="string">"meta "</span><span class="plain">;</span>
<span class="identifier">VM_PrintCommandWords</span><span class="plain">(</span><span class="identifier">i</span><span class="plain">);</span>
<span class="reserved">new_line</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">lines</span><span class="plain"> == </span><span class="constant">0</span><span class="plain">) </span><span class="reserved">print</span><span class="plain"> </span><span class="string">"has no grammar lines.^"</span><span class="plain">;</span>
<span class="reserved">for</span><span class="plain"> (: </span><span class="identifier">lines</span><span class="plain">&gt;0 : </span><span class="identifier">lines</span><span class="plain">--) {</span>
<span class="identifier">address</span><span class="plain"> = </span><span class="identifier">UnpackGrammarLine</span><span class="plain">(</span><span class="identifier">address</span><span class="plain">);</span>
<span class="reserved">print</span><span class="plain"> </span><span class="string">" "</span><span class="plain">; </span><span class="identifier">DebugGrammarLine</span><span class="plain">(); </span><span class="reserved">new_line</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="identifier">ParaContent</span><span class="plain">();</span>
<span class="plain">];</span>
<span class="plain">[ </span><span class="identifier">DebugGrammarLine</span><span class="plain"> </span><span class="identifier">pcount</span><span class="plain">;</span>
<span class="reserved">print</span><span class="plain"> </span><span class="string">" * "</span><span class="plain">;</span>
<span class="reserved">for</span><span class="plain"> (: </span><span class="identifier">line_token</span><span class="plain">--&gt;</span><span class="identifier">pcount</span><span class="plain"> ~= </span><span class="identifier">ENDIT_TOKEN</span><span class="plain"> : </span><span class="identifier">pcount</span><span class="plain">++) {</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">line_token</span><span class="plain">--&gt;</span><span class="identifier">pcount</span><span class="plain">)-&gt;0 &amp; </span><span class="constant">$10</span><span class="plain">) </span><span class="reserved">print</span><span class="plain"> </span><span class="string">"/ "</span><span class="plain">;</span>
<span class="reserved">print</span><span class="plain"> (</span><span class="identifier">DebugToken</span><span class="plain">) </span><span class="identifier">line_token</span><span class="plain">--&gt;</span><span class="identifier">pcount</span><span class="plain">, </span><span class="string">" "</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">print</span><span class="plain"> </span><span class="string">"-&gt; "</span><span class="plain">, (</span><span class="identifier">DebugAction</span><span class="plain">) </span><span class="identifier">action_to_be</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">action_reversed</span><span class="plain">) </span><span class="reserved">print</span><span class="plain"> </span><span class="string">" reverse"</span><span class="plain">;</span>
<span class="plain">];</span>
<span class="plain">[ </span><span class="identifier">DebugToken</span><span class="plain"> </span><span class="identifier">token</span><span class="plain">;</span>
<span class="identifier">AnalyseToken</span><span class="plain">(</span><span class="identifier">token</span><span class="plain">);</span>
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">found_ttype</span><span class="plain">) {</span>
<span class="identifier">ILLEGAL_TT</span><span class="plain">:</span>
<span class="reserved">print</span><span class="plain"> </span><span class="string">"&lt;illegal token number "</span><span class="plain">, </span><span class="identifier">token</span><span class="plain">, </span><span class="string">"&gt;"</span><span class="plain">;</span>
<span class="identifier">ELEMENTARY_TT</span><span class="plain">:</span>
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">found_tdata</span><span class="plain">) {</span>
<span class="identifier">NOUN_TOKEN</span><span class="plain">: </span><span class="reserved">print</span><span class="plain"> </span><span class="string">"noun"</span><span class="plain">;</span>
<span class="identifier">HELD_TOKEN</span><span class="plain">: </span><span class="reserved">print</span><span class="plain"> </span><span class="string">"held"</span><span class="plain">;</span>
<span class="identifier">MULTI_TOKEN</span><span class="plain">: </span><span class="reserved">print</span><span class="plain"> </span><span class="string">"multi"</span><span class="plain">;</span>
<span class="identifier">MULTIHELD_TOKEN</span><span class="plain">: </span><span class="reserved">print</span><span class="plain"> </span><span class="string">"multiheld"</span><span class="plain">;</span>
<span class="identifier">MULTIEXCEPT_TOKEN</span><span class="plain">: </span><span class="reserved">print</span><span class="plain"> </span><span class="string">"multiexcept"</span><span class="plain">;</span>
<span class="identifier">MULTIINSIDE_TOKEN</span><span class="plain">: </span><span class="reserved">print</span><span class="plain"> </span><span class="string">"multiinside"</span><span class="plain">;</span>
<span class="identifier">CREATURE_TOKEN</span><span class="plain">: </span><span class="reserved">print</span><span class="plain"> </span><span class="string">"creature"</span><span class="plain">;</span>
<span class="identifier">SPECIAL_TOKEN</span><span class="plain">: </span><span class="reserved">print</span><span class="plain"> </span><span class="string">"special"</span><span class="plain">;</span>
<span class="identifier">NUMBER_TOKEN</span><span class="plain">: </span><span class="reserved">print</span><span class="plain"> </span><span class="string">"number"</span><span class="plain">;</span>
<span class="identifier">TOPIC_TOKEN</span><span class="plain">: </span><span class="reserved">print</span><span class="plain"> </span><span class="string">"topic"</span><span class="plain">;</span>
<span class="identifier">ENDIT_TOKEN</span><span class="plain">: </span><span class="reserved">print</span><span class="plain"> </span><span class="string">"END"</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="identifier">PREPOSITION_TT</span><span class="plain">:</span>
<span class="reserved">print</span><span class="plain"> </span><span class="string">"'"</span><span class="plain">, (</span><span class="identifier">address</span><span class="plain">) </span><span class="identifier">found_tdata</span><span class="plain">, </span><span class="string">"'"</span><span class="plain">;</span>
<span class="identifier">ROUTINE_FILTER_TT</span><span class="plain">:</span>
<span class="reserved">print</span><span class="plain"> </span><span class="string">"noun=Routine("</span><span class="plain">, </span><span class="identifier">found_tdata</span><span class="plain">, </span><span class="string">")"</span><span class="plain">;</span>
<span class="identifier">ATTR_FILTER_TT</span><span class="plain">:</span>
<span class="reserved">print</span><span class="plain"> (</span><span class="identifier">DebugAttribute</span><span class="plain">) </span><span class="identifier">found_tdata</span><span class="plain">;</span>
<span class="identifier">SCOPE_TT</span><span class="plain">:</span>
<span class="reserved">print</span><span class="plain"> </span><span class="string">"scope=Routine("</span><span class="plain">, </span><span class="identifier">found_tdata</span><span class="plain">, </span><span class="string">")"</span><span class="plain">;</span>
<span class="identifier">GPR_TT</span><span class="plain">:</span>
<span class="reserved">print</span><span class="plain"> </span><span class="string">"Routine("</span><span class="plain">, </span><span class="identifier">found_tdata</span><span class="plain">, </span><span class="string">")"</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="plain">];</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP15"></a><b>&#167;15. Test Command. </b>TEST runs a short script of commands from the source text.
</p>
<pre class="display">
<span class="plain">#</span><span class="identifier">ifdef</span><span class="plain"> </span><span class="identifier">DEBUG</span><span class="plain">;</span>
<span class="plain">#</span><span class="identifier">ifdef</span><span class="plain"> </span><span class="identifier">TARGET_GLULX</span><span class="plain">;</span>
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">TEST_STACK_SIZE</span><span class="plain"> = </span><span class="constant">128</span><span class="plain">;</span>
<span class="plain">#</span><span class="identifier">ifnot</span><span class="plain">;</span>
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">TEST_STACK_SIZE</span><span class="plain"> = </span><span class="constant">48</span><span class="plain">;</span>
<span class="plain">#</span><span class="identifier">endif</span><span class="plain">;</span>
<span class="reserved">Array</span><span class="plain"> </span><span class="identifier">test_stack</span><span class="plain"> </span><span class="constant">--</span><span class="plain">&gt; </span><span class="identifier">TEST_STACK_SIZE</span><span class="plain">;</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">test_sp</span><span class="plain"> = </span><span class="constant">0</span><span class="plain">;</span>
<span class="plain">[ </span><span class="identifier">TestStart</span><span class="plain"> </span><span class="identifier">T</span><span class="plain"> </span><span class="identifier">R</span><span class="plain"> </span><span class="identifier">l</span><span class="plain"> </span><span class="identifier">k</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">test_sp</span><span class="plain"> &gt;= </span><span class="identifier">TEST_STACK_SIZE</span><span class="plain">) </span><span class="string">"&gt;--&gt; Testing too many levels deep"</span><span class="plain">;</span>
<span class="identifier">test_stack</span><span class="plain">--&gt;</span><span class="identifier">test_sp</span><span class="plain"> = </span><span class="identifier">T</span><span class="plain">;</span>
<span class="identifier">test_stack</span><span class="plain">--&gt;(</span><span class="identifier">test_sp</span><span class="plain">+1) = </span><span class="constant">0</span><span class="plain">;</span>
<span class="identifier">test_stack</span><span class="plain">--&gt;(</span><span class="identifier">test_sp</span><span class="plain">+3) = </span><span class="identifier">l</span><span class="plain">;</span>
<span class="identifier">test_sp</span><span class="plain"> = </span><span class="identifier">test_sp</span><span class="plain"> + </span><span class="constant">4</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">R</span><span class="plain">--&gt;0) &amp;&amp; (</span><span class="identifier">R</span><span class="plain">--&gt;0 ~= </span><span class="identifier">real_location</span><span class="plain">)) {</span>
<span class="reserved">print</span><span class="plain"> </span><span class="string">"(first moving to "</span><span class="plain">, (</span><span class="identifier">name</span><span class="plain">) </span><span class="identifier">R</span><span class="plain">--&gt;0, </span><span class="string">")^"</span><span class="plain">;</span>
<span class="identifier">PlayerTo</span><span class="plain">(</span><span class="identifier">R</span><span class="plain">--&gt;0, </span><span class="constant">1</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="identifier">k</span><span class="plain">=1;</span>
<span class="reserved">while</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain">--&gt;</span><span class="identifier">k</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain">--&gt;</span><span class="identifier">k</span><span class="plain"> </span><span class="reserved">notin</span><span class="plain"> </span><span class="identifier">player</span><span class="plain">) {</span>
<span class="reserved">print</span><span class="plain"> </span><span class="string">"(first acquiring "</span><span class="plain">, (</span><span class="identifier">the</span><span class="plain">) </span><span class="identifier">R</span><span class="plain">--&gt;</span><span class="identifier">k</span><span class="plain">, </span><span class="string">")^"</span><span class="plain">;</span>
<span class="reserved">move</span><span class="plain"> </span><span class="identifier">R</span><span class="plain">--&gt;</span><span class="identifier">k</span><span class="plain"> </span><span class="reserved">to</span><span class="plain"> </span><span class="identifier">player</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="identifier">k</span><span class="plain">++;</span>
<span class="plain">}</span>
<span class="reserved">print</span><span class="plain"> </span><span class="string">"(Testing.)^"</span><span class="plain">; </span><span class="identifier">say__p</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">;</span>
<span class="plain">];</span>
<span class="plain">[ </span><span class="identifier">TestKeyboardPrimitive</span><span class="plain"> </span><span class="identifier">a_buffer</span><span class="plain"> </span><span class="identifier">a_table</span><span class="plain"> </span><span class="identifier">p</span><span class="plain"> </span><span class="identifier">i</span><span class="plain"> </span><span class="identifier">j</span><span class="plain"> </span><span class="identifier">l</span><span class="plain"> </span><span class="identifier">spaced</span><span class="plain"> </span><span class="identifier">ch</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">test_sp</span><span class="plain"> == </span><span class="constant">0</span><span class="plain">) {</span>
<span class="identifier">test_stack</span><span class="plain">--&gt;2 = </span><span class="constant">1</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">VM_ReadKeyboard</span><span class="plain">(</span><span class="identifier">a_buffer</span><span class="plain">, </span><span class="identifier">a_table</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">else</span><span class="plain"> {</span>
<span class="identifier">p</span><span class="plain"> = </span><span class="identifier">test_stack</span><span class="plain">--&gt;(</span><span class="identifier">test_sp</span><span class="plain">-4);</span>
<span class="identifier">i</span><span class="plain"> = </span><span class="identifier">test_stack</span><span class="plain">--&gt;(</span><span class="identifier">test_sp</span><span class="plain">-3);</span>
<span class="identifier">l</span><span class="plain"> = </span><span class="identifier">test_stack</span><span class="plain">--&gt;(</span><span class="identifier">test_sp</span><span class="plain">-1);</span>
<span class="reserved">print</span><span class="plain"> </span><span class="string">"["</span><span class="plain">;</span>
<span class="reserved">print</span><span class="plain"> </span><span class="identifier">test_stack</span><span class="plain">--&gt;2;</span>
<span class="reserved">print</span><span class="plain"> </span><span class="string">"] "</span><span class="plain">;</span>
<span class="identifier">test_stack</span><span class="plain">--&gt;2 = </span><span class="identifier">test_stack</span><span class="plain">--&gt;2 + </span><span class="constant">1</span><span class="plain">;</span>
<span class="reserved">style</span><span class="plain"> </span><span class="identifier">bold</span><span class="plain">;</span>
<span class="reserved">while</span><span class="plain"> ((</span><span class="identifier">i</span><span class="plain"> &lt; </span><span class="identifier">l</span><span class="plain">) &amp;&amp; (</span><span class="identifier">p</span><span class="plain">-&gt;</span><span class="identifier">i</span><span class="plain"> ~= </span><span class="character">'/'</span><span class="plain">)) {</span>
<span class="identifier">ch</span><span class="plain"> = </span><span class="identifier">p</span><span class="plain">-&gt;</span><span class="identifier">i</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">spaced</span><span class="plain"> || (</span><span class="identifier">ch</span><span class="plain"> ~= </span><span class="character">' '</span><span class="plain">)) {</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">p</span><span class="plain">-&gt;</span><span class="identifier">i</span><span class="plain"> == </span><span class="character">'['</span><span class="plain">) &amp;&amp; (</span><span class="identifier">p</span><span class="plain">-&gt;(</span><span class="identifier">i</span><span class="plain">+1) == </span><span class="character">'/'</span><span class="plain">) &amp;&amp; (</span><span class="identifier">p</span><span class="plain">-&gt;(</span><span class="identifier">i</span><span class="plain">+2) == </span><span class="character">']'</span><span class="plain">)) {</span>
<span class="identifier">ch</span><span class="plain"> = </span><span class="character">'/'</span><span class="plain">; </span><span class="identifier">i</span><span class="plain"> = </span><span class="identifier">i</span><span class="plain">+2;</span>
<span class="plain">}</span>
<span class="identifier">a_buffer</span><span class="plain">-&gt;(</span><span class="identifier">j</span><span class="plain">+</span><span class="identifier">WORDSIZE</span><span class="plain">) = </span><span class="identifier">ch</span><span class="plain">;</span>
<span class="reserved">print</span><span class="plain"> (</span><span class="identifier">char</span><span class="plain">) </span><span class="identifier">ch</span><span class="plain">;</span>
<span class="identifier">i</span><span class="plain">++; </span><span class="identifier">j</span><span class="plain">++;</span>
<span class="identifier">spaced</span><span class="plain"> = </span><span class="reserved">true</span><span class="plain">;</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">++;</span>
<span class="plain">}</span>
<span class="reserved">style</span><span class="plain"> </span><span class="identifier">roman</span><span class="plain">;</span>
<span class="reserved">print</span><span class="plain"> </span><span class="string">"^"</span><span class="plain">;</span>
<span class="plain">#</span><span class="identifier">ifdef</span><span class="plain"> </span><span class="identifier">TARGET_ZCODE</span><span class="plain">;</span>
<span class="identifier">a_buffer</span><span class="plain">-&gt;1 = </span><span class="identifier">j</span><span class="plain">;</span>
<span class="plain">#</span><span class="identifier">ifnot</span><span class="plain">; </span><span class="comment">! TARGET_GLULX</span>
<span class="identifier">a_buffer</span><span class="plain">--&gt;0 = </span><span class="identifier">j</span><span class="plain">;</span>
<span class="plain">#</span><span class="identifier">endif</span><span class="plain">;</span>
<span class="identifier">VM_Tokenise</span><span class="plain">(</span><span class="identifier">a_buffer</span><span class="plain">, </span><span class="identifier">a_table</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">p</span><span class="plain">-&gt;</span><span class="identifier">i</span><span class="plain"> == </span><span class="character">'/'</span><span class="plain">) </span><span class="identifier">i</span><span class="plain">++;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">i</span><span class="plain"> &gt;= </span><span class="identifier">l</span><span class="plain">) {</span>
<span class="identifier">test_sp</span><span class="plain"> = </span><span class="identifier">test_sp</span><span class="plain"> </span><span class="constant">-</span><span class="plain"> </span><span class="constant">4</span><span class="plain">;</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="identifier">test_stack</span><span class="plain">--&gt;(</span><span class="identifier">test_sp</span><span class="plain">-3) = </span><span class="identifier">i</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="plain">];</span>
<span class="plain">#</span><span class="identifier">ENDIF</span><span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP16"></a><b>&#167;16. Trace Command. </b>Another holdover from I6: TRACE sets the level of parser tracing, on a scale
of 0 (off, the default) to 5.
</p>
<pre class="display">
<span class="plain">[ </span><span class="identifier">TraceOnSub</span><span class="plain">; </span><span class="identifier">parser_trace</span><span class="plain">=1; </span><span class="identifier">say__p</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">; </span><span class="string">"[Trace on.]"</span><span class="plain">; ];</span>
<span class="plain">[ </span><span class="identifier">TraceLevelSub</span><span class="plain">;</span>
<span class="identifier">parser_trace</span><span class="plain"> = </span><span class="identifier">parsed_number</span><span class="plain">; </span><span class="identifier">say__p</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">;</span>
<span class="reserved">print</span><span class="plain"> </span><span class="string">"[Parser tracing set to level "</span><span class="plain">, </span><span class="identifier">parser_trace</span><span class="plain">, </span><span class="string">".]^"</span><span class="plain">;</span>
<span class="plain">];</span>
<span class="plain">[ </span><span class="identifier">TraceOffSub</span><span class="plain">; </span><span class="identifier">parser_trace</span><span class="plain">=0; </span><span class="identifier">say__p</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">; </span><span class="string">"Trace off."</span><span class="plain">; ];</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP17"></a><b>&#167;17. Tree Command. </b>TREE prints out the I6 object tree, though this is not always very helpful
in I7 terms. It should arguably be withdrawn, but doesn't seem to do any harm.
</p>
<pre class="display">
<span class="plain">[ </span><span class="identifier">XTreeSub</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">noun</span><span class="plain"> == </span><span class="constant">0</span><span class="plain">) {</span>
<span class="reserved">objectloop</span><span class="plain"> (</span><span class="identifier">i</span><span class="plain">)</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">i</span><span class="plain"> </span><span class="reserved">ofclass</span><span class="plain"> </span><span class="identifier">Object</span><span class="plain"> &amp;&amp; </span><span class="reserved">parent</span><span class="plain">(</span><span class="identifier">i</span><span class="plain">) == </span><span class="constant">0</span><span class="plain">) </span><span class="identifier">XObj</span><span class="plain">(</span><span class="identifier">i</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">XObj</span><span class="plain">(</span><span class="identifier">noun</span><span class="plain">,1);</span>
<span class="plain">];</span>
<span class="plain">[ </span><span class="identifier">XObj</span><span class="plain"> </span><span class="identifier">obj</span><span class="plain"> </span><span class="identifier">f</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="reserved">parent</span><span class="plain">(</span><span class="identifier">obj</span><span class="plain">) == </span><span class="constant">0</span><span class="plain">) </span><span class="reserved">print</span><span class="plain"> (</span><span class="identifier">name</span><span class="plain">) </span><span class="identifier">obj</span><span class="plain">; </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">print</span><span class="plain"> (</span><span class="identifier">a</span><span class="plain">) </span><span class="identifier">obj</span><span class="plain">;</span>
<span class="reserved">print</span><span class="plain"> </span><span class="string">" ("</span><span class="plain">, </span><span class="identifier">obj</span><span class="plain">, </span><span class="string">") "</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">f</span><span class="plain"> == </span><span class="constant">1</span><span class="plain"> &amp;&amp; </span><span class="reserved">parent</span><span class="plain">(</span><span class="identifier">obj</span><span class="plain">) ~= </span><span class="constant">0</span><span class="plain">)</span>
<span class="reserved">print</span><span class="plain"> </span><span class="string">"(in "</span><span class="plain">, (</span><span class="identifier">name</span><span class="plain">) </span><span class="reserved">parent</span><span class="plain">(</span><span class="identifier">obj</span><span class="plain">), </span><span class="string">" "</span><span class="plain">, </span><span class="reserved">parent</span><span class="plain">(</span><span class="identifier">obj</span><span class="plain">), </span><span class="string">")"</span><span class="plain">;</span>
<span class="reserved">new_line</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="reserved">child</span><span class="plain">(</span><span class="identifier">obj</span><span class="plain">) == </span><span class="constant">0</span><span class="plain">) </span><span class="reserved">rtrue</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">obj</span><span class="plain"> == </span><span class="identifier">Class</span><span class="plain">)</span>
<span class="identifier">WriteListFrom</span><span class="plain">(</span><span class="reserved">child</span><span class="plain">(</span><span class="identifier">obj</span><span class="plain">), </span><span class="identifier">NEWLINE_BIT</span><span class="plain">+</span><span class="identifier">INDENT_BIT</span><span class="plain">+</span><span class="identifier">ALWAYS_BIT</span><span class="plain">+</span><span class="identifier">NOARTICLE_BIT</span><span class="plain">, </span><span class="constant">1</span><span class="plain">);</span>
<span class="reserved">else</span>
<span class="identifier">WriteListFrom</span><span class="plain">(</span><span class="reserved">child</span><span class="plain">(</span><span class="identifier">obj</span><span class="plain">), </span><span class="identifier">NEWLINE_BIT</span><span class="plain">+</span><span class="identifier">INDENT_BIT</span><span class="plain">+</span><span class="identifier">ALWAYS_BIT</span><span class="plain">+</span><span class="identifier">FULLINV_BIT</span><span class="plain">, </span><span class="constant">1</span><span class="plain">);</span>
<span class="plain">];</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP18"></a><b>&#167;18. Grammar. </b>In the old I6 parser, testing commands had their own scope hardwired in to the
code: this worked by comparing the verb command word directly against <code class="display"><span class="extract">'scope'</span></code>
and the like. That would go wrong if the testing commands were translated into
other languages, and was a crude design at best. The following scope token is
better: using this token instead of <code class="display"><span class="extract">multi</span></code> provides a noun with universal
scope (but restricted to I7 objects, so I6 pseudo-objects like <code class="display"><span class="extract">compass</span></code> are
not picked up) and able to accept multiple objects.
</p>
<pre class="display">
<span class="plain">[ </span><span class="identifier">testcommandnoun</span><span class="plain"> </span><span class="identifier">obj</span><span class="plain"> </span><span class="identifier">o2</span><span class="plain">;</span>
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">scope_stage</span><span class="plain">) {</span>
<span class="constant">1</span><span class="plain">: </span><span class="reserved">rtrue</span><span class="plain">; </span><span class="comment">! allow multiple objects</span>
<span class="constant">2</span><span class="plain">: </span><span class="reserved">objectloop</span><span class="plain"> (</span><span class="identifier">obj</span><span class="plain">)</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">obj</span><span class="plain"> </span><span class="reserved">ofclass</span><span class="plain"> </span><span class="identifier">Object</span><span class="plain">) &amp;&amp; (</span><span class="identifier">obj</span><span class="plain"> </span><span class="reserved">provides</span><span class="plain"> </span><span class="identifier">KD_Count</span><span class="plain">))</span>
<span class="identifier">PlaceInScope</span><span class="plain">(</span><span class="identifier">obj</span><span class="plain">, </span><span class="reserved">true</span><span class="plain">);</span>
<span class="constant">3</span><span class="plain">: </span><span class="reserved">print</span><span class="plain"> </span><span class="string">"There seems to be no such object anywhere in the model world.^"</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="plain">];</span>
<span class="identifier">Verb</span><span class="plain"> </span><span class="identifier">meta</span><span class="plain"> </span><span class="character">'abstract'</span>
<span class="plain">* </span><span class="identifier">scope</span><span class="plain">=</span><span class="identifier">testcommandnoun</span><span class="plain"> </span><span class="character">'to'</span><span class="plain"> </span><span class="identifier">scope</span><span class="plain">=</span><span class="identifier">testcommandnoun</span><span class="plain"> </span><span class="constant">-</span><span class="plain">&gt; </span><span class="identifier">XAbstract</span><span class="plain">;</span>
<span class="identifier">Verb</span><span class="plain"> </span><span class="identifier">meta</span><span class="plain"> </span><span class="character">'actions'</span>
<span class="plain">* </span><span class="constant">-</span><span class="plain">&gt; </span><span class="identifier">ActionsOn</span>
<span class="plain">* </span><span class="character">'on'</span><span class="plain"> </span><span class="constant">-</span><span class="plain">&gt; </span><span class="identifier">ActionsOn</span>
<span class="plain">* </span><span class="character">'off'</span><span class="plain"> </span><span class="constant">-</span><span class="plain">&gt; </span><span class="identifier">ActionsOff</span><span class="plain">;</span>
<span class="identifier">Verb</span><span class="plain"> </span><span class="identifier">meta</span><span class="plain"> </span><span class="character">'gonear'</span>
<span class="plain">* </span><span class="identifier">scope</span><span class="plain">=</span><span class="identifier">testcommandnoun</span><span class="plain"> </span><span class="constant">-</span><span class="plain">&gt; </span><span class="identifier">Gonear</span><span class="plain">;</span>
<span class="identifier">Verb</span><span class="plain"> </span><span class="identifier">meta</span><span class="plain"> </span><span class="character">'purloin'</span>
<span class="plain">* </span><span class="identifier">scope</span><span class="plain">=</span><span class="identifier">testcommandnoun</span><span class="plain"> </span><span class="constant">-</span><span class="plain">&gt; </span><span class="identifier">XPurloin</span><span class="plain">;</span>
<span class="identifier">Verb</span><span class="plain"> </span><span class="identifier">meta</span><span class="plain"> </span><span class="character">'random'</span>
<span class="plain">* </span><span class="constant">-</span><span class="plain">&gt; </span><span class="identifier">Predictable</span><span class="plain">;</span>
<span class="identifier">Verb</span><span class="plain"> </span><span class="identifier">meta</span><span class="plain"> </span><span class="character">'relations'</span>
<span class="plain">* </span><span class="constant">-</span><span class="plain">&gt; </span><span class="identifier">ShowRelations</span><span class="plain">;</span>
<span class="identifier">Verb</span><span class="plain"> </span><span class="identifier">meta</span><span class="plain"> </span><span class="character">'responses'</span>
<span class="plain">* </span><span class="constant">-</span><span class="plain">&gt; </span><span class="identifier">ShowResponses</span>
<span class="plain">* </span><span class="identifier">special</span><span class="plain"> </span><span class="constant">-</span><span class="plain">&gt; </span><span class="identifier">ShowResponses</span>
<span class="plain">* </span><span class="character">'now'</span><span class="plain"> </span><span class="identifier">special</span><span class="plain"> </span><span class="constant">-</span><span class="plain">&gt; </span><span class="identifier">ShowResponses</span>
<span class="plain">* </span><span class="character">'set'</span><span class="plain"> </span><span class="identifier">special</span><span class="plain"> </span><span class="constant">-</span><span class="plain">&gt; </span><span class="identifier">ShowResponses</span><span class="plain">;</span>
<span class="identifier">Verb</span><span class="plain"> </span><span class="identifier">meta</span><span class="plain"> </span><span class="character">'rules'</span>
<span class="plain">* </span><span class="constant">-</span><span class="plain">&gt; </span><span class="identifier">RulesOn</span>
<span class="plain">* </span><span class="character">'all'</span><span class="plain"> </span><span class="constant">-</span><span class="plain">&gt; </span><span class="identifier">RulesAll</span>
<span class="plain">* </span><span class="character">'on'</span><span class="plain"> </span><span class="constant">-</span><span class="plain">&gt; </span><span class="identifier">RulesOn</span>
<span class="plain">* </span><span class="character">'off'</span><span class="plain"> </span><span class="constant">-</span><span class="plain">&gt; </span><span class="identifier">RulesOff</span><span class="plain">;</span>
<span class="identifier">Verb</span><span class="plain"> </span><span class="identifier">meta</span><span class="plain"> </span><span class="character">'scenes'</span>
<span class="plain">* </span><span class="constant">-</span><span class="plain">&gt; </span><span class="identifier">ScenesOn</span>
<span class="plain">* </span><span class="character">'on'</span><span class="plain"> </span><span class="constant">-</span><span class="plain">&gt; </span><span class="identifier">ScenesOn</span>
<span class="plain">* </span><span class="character">'off'</span><span class="plain"> </span><span class="constant">-</span><span class="plain">&gt; </span><span class="identifier">ScenesOff</span><span class="plain">;</span>
<span class="identifier">Verb</span><span class="plain"> </span><span class="identifier">meta</span><span class="plain"> </span><span class="character">'scope'</span>
<span class="plain">* </span><span class="constant">-</span><span class="plain">&gt; </span><span class="identifier">Scope</span>
<span class="plain">* </span><span class="identifier">scope</span><span class="plain">=</span><span class="identifier">testcommandnoun</span><span class="plain"> </span><span class="constant">-</span><span class="plain">&gt; </span><span class="identifier">Scope</span><span class="plain">;</span>
<span class="identifier">Verb</span><span class="plain"> </span><span class="identifier">meta</span><span class="plain"> </span><span class="character">'showheap'</span>
<span class="plain">* </span><span class="constant">-</span><span class="plain">&gt; </span><span class="identifier">ShowHeap</span><span class="plain">;</span>
<span class="identifier">Verb</span><span class="plain"> </span><span class="identifier">meta</span><span class="plain"> </span><span class="character">'showme'</span>
<span class="plain">* </span><span class="constant">-</span><span class="plain">&gt; </span><span class="identifier">ShowMe</span>
<span class="plain">* </span><span class="identifier">scope</span><span class="plain">=</span><span class="identifier">testcommandnoun</span><span class="plain"> </span><span class="constant">-</span><span class="plain">&gt; </span><span class="identifier">ShowMe</span><span class="plain">;</span>
<span class="identifier">Verb</span><span class="plain"> </span><span class="identifier">meta</span><span class="plain"> </span><span class="character">'showverb'</span>
<span class="plain">* </span><span class="identifier">special</span><span class="plain"> </span><span class="constant">-</span><span class="plain">&gt; </span><span class="identifier">ShowVerb</span><span class="plain">;</span>
<span class="identifier">Verb</span><span class="plain"> </span><span class="identifier">meta</span><span class="plain"> </span><span class="character">'test'</span>
<span class="plain">* </span><span class="constant">-</span><span class="plain">&gt; </span><span class="identifier">TestScript</span>
<span class="plain">* </span><span class="identifier">special</span><span class="plain"> </span><span class="constant">-</span><span class="plain">&gt; </span><span class="identifier">TestScript</span><span class="plain">;</span>
<span class="identifier">Verb</span><span class="plain"> </span><span class="identifier">meta</span><span class="plain"> </span><span class="character">'trace'</span>
<span class="plain">* </span><span class="constant">-</span><span class="plain">&gt; </span><span class="identifier">TraceOn</span>
<span class="plain">* </span><span class="identifier">number</span><span class="plain"> </span><span class="constant">-</span><span class="plain">&gt; </span><span class="identifier">TraceLevel</span>
<span class="plain">* </span><span class="character">'on'</span><span class="plain"> </span><span class="constant">-</span><span class="plain">&gt; </span><span class="identifier">TraceOn</span>
<span class="plain">* </span><span class="character">'off'</span><span class="plain"> </span><span class="constant">-</span><span class="plain">&gt; </span><span class="identifier">TraceOff</span><span class="plain">;</span>
<span class="identifier">Verb</span><span class="plain"> </span><span class="identifier">meta</span><span class="plain"> </span><span class="character">'tree'</span>
<span class="plain">* </span><span class="constant">-</span><span class="plain">&gt; </span><span class="identifier">XTree</span>
<span class="plain">* </span><span class="identifier">scope</span><span class="plain">=</span><span class="identifier">testcommandnoun</span><span class="plain"> </span><span class="constant">-</span><span class="plain">&gt; </span><span class="identifier">XTree</span><span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP19"></a><b>&#167;19. End testy. </b></p>
<pre class="display">
<span class="plain">#</span><span class="identifier">Endif</span><span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><a href="S-tt.html">Back to 'Time Template'</a></li><li><a href="S-ct.html">Continue with 'Chronology Template'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</main>
</body>
</html>