1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-07-08 10:04:21 +03:00
inform7/docs/runtime-module/2-ec.html
2021-06-21 00:36:17 +01:00

388 lines
130 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Emit Code</title>
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
<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="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
<script>
function togglePopup(material_id) {
var popup = document.getElementById(material_id);
popup.classList.toggle("show");
}
</script>
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
</head>
<body class="commentary-font">
<nav role="navigation">
<h1><a href="../index.html">
<img src="../docs-assets/Inform.png" height=72">
</a></h1>
<ul><li><a href="../compiler.html">compiler tools</a></li>
<li><a href="../other.html">other tools</a></li>
<li><a href="../extensions.html">extensions and kits</a></li>
<li><a href="../units.html">unit test tools</a></li>
</ul><h2>Compiler Webs</h2><ul>
<li><a href="../inbuild/index.html">inbuild</a></li>
<li><a href="../inform7/index.html">inform7</a></li>
<li><a href="../inter/index.html">inter</a></li>
</ul><h2>Inbuild Modules</h2><ul>
<li><a href="../supervisor-module/index.html">supervisor</a></li>
</ul><h2>Inform7 Modules</h2><ul>
<li><a href="../core-module/index.html">core</a></li>
<li><a href="../assertions-module/index.html">assertions</a></li>
<li><a href="../values-module/index.html">values</a></li>
<li><a href="../knowledge-module/index.html">knowledge</a></li>
<li><a href="../imperative-module/index.html">imperative</a></li>
<li><a href="index.html"><span class="selectedlink">runtime</span></a></li>
<li><a href="../if-module/index.html">if</a></li>
<li><a href="../multimedia-module/index.html">multimedia</a></li>
<li><a href="../index-module/index.html">index</a></li>
</ul><h2>Inter Modules</h2><ul>
<li><a href="../bytecode-module/index.html">bytecode</a></li>
<li><a href="../building-module/index.html">building</a></li>
<li><a href="../codegen-module/index.html">codegen</a></li>
</ul><h2>Services</h2><ul>
<li><a href="../arch-module/index.html">arch</a></li>
<li><a href="../calculus-module/index.html">calculus</a></li>
<li><a href="../html-module/index.html">html</a></li>
<li><a href="../inflections-module/index.html">inflections</a></li>
<li><a href="../kinds-module/index.html">kinds</a></li>
<li><a href="../linguistics-module/index.html">linguistics</a></li>
<li><a href="../problems-module/index.html">problems</a></li>
<li><a href="../syntax-module/index.html">syntax</a></li>
<li><a href="../words-module/index.html">words</a></li>
<li><a href="../../../inweb/docs/foundation-module/index.html">foundation</a></li>
</ul>
</nav>
<main role="main">
<!--Weave of 'Emit Code' generated by Inweb-->
<div class="breadcrumbs">
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7</a></li><li><a href="index.html">runtime</a></li><li><a href="index.html#2">Chapter 2: Emission</a></li><li><b>Emit Code</b></li></ul></div>
<p class="purpose">Here is how bytecode for instructions inside functions is emitted.</p>
<ul class="toc"><li><a href="2-ec.html#SP1">&#167;1. Introduction</a></li><li><a href="2-ec.html#SP2">&#167;2. Where bytecode comes out</a></li><li><a href="2-ec.html#SP5">&#167;5. Structural</a></li><li><a href="2-ec.html#SP6">&#167;6. Comments</a></li><li><a href="2-ec.html#SP7">&#167;7. In value context</a></li><li><a href="2-ec.html#SP8">&#167;8. Either/or property testing</a></li><li><a href="2-ec.html#SP9">&#167;9. Casts</a></li><li><a href="2-ec.html#SP12">&#167;12. In reference context</a></li><li><a href="2-ec.html#SP13">&#167;13. Invocations</a></li><li><a href="2-ec.html#SP16">&#167;16. Labels</a></li></ul><hr class="tocbar">
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. Introduction. </b>Many sections of <a href="index.html" class="internal">runtime</a> need to create functions by explicitly giving
their bytecode. This is quite verbose, but with practice easy enough to read.
For example, here's bytecode equivalent to <span class="extract"><span class="extract-syntax">return 13</span></span>:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="function-syntax">EmitCode::inv</span><span class="plain-syntax">(</span><span class="identifier-syntax">RETURN_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="function-syntax">EmitCode::down</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="function-syntax">EmitCode::val_number</span><span class="plain-syntax">(13);</span>
<span class="plain-syntax"> </span><span class="function-syntax">EmitCode::up</span><span class="plain-syntax">();</span>
</pre>
<p class="commentary">We conventionally indent this code to reflect the structure of what is being
generated, so that the source code in this module looks like the Inter tree
structure which emerges.
</p>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. Where bytecode comes out. </b>We are generating a hierarchical structure and not a stream, so we need the
ability to move the point at which new opcodes are being spawned. This is
that point
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> *</span><span class="function-syntax">EmitCode::at</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">EmitCode::at</span></span>:<br/><a href="2-ec.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Produce::at</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. </b>These should always be used in ways guaranteed to match:
</p>
<ul class="items"><li>&#9679; <a href="2-ec.html#SP3" class="internal">EmitCode::down</a> shifts us so that we are now creating bytecode below the
instruction last emitted, not after it.
</li><li>&#9679; <a href="2-ec.html#SP3" class="internal">EmitCode::up</a> then returns us back to where we were.
</li></ul>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">EmitCode::up</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">EmitCode::up</span></span>:<br/><a href="2-ec.html#SP8">&#167;8</a><br/>Shared Variables - <a href="2-sv.html#SP1">&#167;1</a>, <a href="2-sv.html#SP1_1">&#167;1.1</a>, <a href="2-sv.html#SP1_2">&#167;1.2</a><br/>The Heap - <a href="2-th.html#SP5">&#167;5</a><br/>Showme Command - <a href="2-sc.html#SP2">&#167;2</a>, <a href="2-sc.html#SP3">&#167;3</a>, <a href="2-sc.html#SP4">&#167;4</a>, <a href="2-sc.html#SP4_2">&#167;4.2</a>, <a href="2-sc.html#SP6_1">&#167;6.1</a>, <a href="2-sc.html#SP6_1_1">&#167;6.1.1</a>, <a href="2-sc.html#SP6_1_1_1">&#167;6.1.1.1</a>, <a href="2-sc.html#SP6_2">&#167;6.2</a>, <a href="2-sc.html#SP6_2_1">&#167;6.2.1</a><br/>Short Names - <a href="2-sn.html#SP4">&#167;4</a>, <a href="2-sn.html#SP4_1">&#167;4.1</a>, <a href="2-sn.html#SP4_2">&#167;4.2</a><br/>Text Substitutions - <a href="4-ts.html#SP2_1">&#167;2.1</a>, <a href="4-ts.html#SP7_2">&#167;7.2</a><br/>Responses - <a href="4-rsp.html#SP4">&#167;4</a>, <a href="4-rsp.html#SP6">&#167;6</a>, <a href="4-rsp.html#SP7_1">&#167;7.1</a><br/>Box Quotations - <a href="4-bq.html#SP2">&#167;2</a><br/>Group Together - <a href="4-gt.html#SP3">&#167;3</a><br/>Looping Over Scope - <a href="4-los.html#SP3">&#167;3</a><br/>Adjectives - <a href="5-adj.html#SP6_1_2">&#167;6.1.2</a>, <a href="5-adj.html#SP8">&#167;8</a>, <a href="5-adj.html#SP9">&#167;9</a>, <a href="5-adj.html#SP14">&#167;14</a>, <a href="5-adj.html#SP15">&#167;15</a><br/>Chronology - <a href="5-chr.html#SP3_4">&#167;3.4</a>, <a href="5-chr.html#SP4_1">&#167;4.1</a>, <a href="5-chr.html#SP5">&#167;5</a>, <a href="5-chr.html#SP7_2">&#167;7.2</a>, <a href="5-chr.html#SP8">&#167;8</a><br/>Conjugations - <a href="5-cnj.html#SP7">&#167;7</a>, <a href="5-cnj.html#SP8">&#167;8</a>, <a href="5-cnj.html#SP12_1">&#167;12.1</a>, <a href="5-cnj.html#SP7_2">&#167;7.2</a>, <a href="5-cnj.html#SP7_2_1">&#167;7.2.1</a>, <a href="5-cnj.html#SP7_2_2">&#167;7.2.2</a>, <a href="5-cnj.html#SP13">&#167;13</a><br/>Instances - <a href="5-ins.html#SP4">&#167;4</a><br/>Backdrop Instances - <a href="5-bi.html#SP2_1">&#167;2.1</a><br/>Door Instances - <a href="5-di.html#SP3">&#167;3</a>, <a href="5-di.html#SP5">&#167;5</a><br/>Region Instances - <a href="5-ri.html#SP2">&#167;2</a><br/>Scene Instances - <a href="5-si.html#SP3_1">&#167;3.1</a>, <a href="5-si.html#SP4">&#167;4</a>, <a href="5-si.html#SP4_2">&#167;4.2</a>, <a href="5-si.html#SP6_1">&#167;6.1</a>, <a href="5-si.html#SP6_2">&#167;6.2</a>, <a href="5-si.html#SP6_3">&#167;6.3</a>, <a href="5-si.html#SP6_4">&#167;6.4</a>, <a href="5-si.html#SP6_5">&#167;6.5</a>, <a href="5-si.html#SP7">&#167;7</a>, <a href="5-si.html#SP7_1">&#167;7.1</a>, <a href="5-si.html#SP7_2">&#167;7.2</a>, <a href="5-si.html#SP7_2_1">&#167;7.2.1</a>, <a href="5-si.html#SP8">&#167;8</a><br/>Rules - <a href="5-rls.html#SP12_4">&#167;12.4</a>, <a href="5-rls.html#SP14">&#167;14</a>, <a href="5-rls.html#SP14_2">&#167;14.2</a>, <a href="5-rls.html#SP15">&#167;15</a>, <a href="5-rls.html#SP15_1">&#167;15.1</a>, <a href="5-rls.html#SP17_3">&#167;17.3</a>, <a href="5-rls.html#SP17_4">&#167;17.4</a>, <a href="5-rls.html#SP15_2_1">&#167;15.2.1</a>, <a href="5-rls.html#SP17_2_1">&#167;17.2.1</a><br/>Rulebooks - <a href="5-rlb.html#SP7_4_1_1">&#167;7.4.1.1</a>, <a href="5-rlb.html#SP7_4_1_2">&#167;7.4.1.2</a>, <a href="5-rlb.html#SP7_4_1_3">&#167;7.4.1.3</a>, <a href="5-rlb.html#SP7_4_1_4">&#167;7.4.1.4</a>, <a href="5-rlb.html#SP7_4_1_5">&#167;7.4.1.5</a>, <a href="5-rlb.html#SP7_4_1_3_1">&#167;7.4.1.3.1</a>, <a href="5-rlb.html#SP15">&#167;15</a><br/>Variables - <a href="5-vrb.html#SP8">&#167;8</a>, <a href="5-vrb.html#SP14_1">&#167;14.1</a><br/>Relations - <a href="5-rlt.html#SP7_1">&#167;7.1</a>, <a href="5-rlt.html#SP7_2">&#167;7.2</a>, <a href="5-rlt.html#SP7_4">&#167;7.4</a>, <a href="5-rlt.html#SP7_4_1">&#167;7.4.1</a>, <a href="5-rlt.html#SP7_4_4">&#167;7.4.4</a>, <a href="5-rlt.html#SP7_4_5">&#167;7.4.5</a>, <a href="5-rlt.html#SP7_4_5_1">&#167;7.4.5.1</a>, <a href="5-rlt.html#SP7_4_6">&#167;7.4.6</a>, <a href="5-rlt.html#SP7_4_7">&#167;7.4.7</a>, <a href="5-rlt.html#SP7_4_8">&#167;7.4.8</a>, <a href="5-rlt.html#SP7_4_9">&#167;7.4.9</a>, <a href="5-rlt.html#SP7_4_10">&#167;7.4.10</a>, <a href="5-rlt.html#SP7_4_11">&#167;7.4.11</a>, <a href="5-rlt.html#SP7_4_12">&#167;7.4.12</a>, <a href="5-rlt.html#SP7_4_9_1">&#167;7.4.9.1</a>, <a href="5-rlt.html#SP7_4_10_1">&#167;7.4.10.1</a>, <a href="5-rlt.html#SP7_4_12_1">&#167;7.4.12.1</a>, <a href="5-rlt.html#SP20_1">&#167;20.1</a>, <a href="5-rlt.html#SP20_2">&#167;20.2</a>, <a href="5-rlt.html#SP20_3">&#167;20.3</a>, <a href="5-rlt.html#SP20_4">&#167;20.4</a>, <a href="5-rlt.html#SP20_5">&#167;20.5</a>, <a href="5-rlt.html#SP21">&#167;21</a>, <a href="5-rlt.html#SP22">&#167;22</a><br/>Literal Patterns - <a href="5-lp.html#SP4_1_1">&#167;4.1.1</a>, <a href="5-lp.html#SP4_1_1_1">&#167;4.1.1.1</a>, <a href="5-lp.html#SP4_1_1_2">&#167;4.1.1.2</a>, <a href="5-lp.html#SP4_1_1_3">&#167;4.1.1.3</a>, <a href="5-lp.html#SP4_1_1_4">&#167;4.1.1.4</a>, <a href="5-lp.html#SP4_2">&#167;4.2</a>, <a href="5-lp.html#SP4_2_1">&#167;4.2.1</a>, <a href="5-lp.html#SP4_2_1_1">&#167;4.2.1.1</a>, <a href="5-lp.html#SP4_2_1_2">&#167;4.2.1.2</a>, <a href="5-lp.html#SP4_2_1_3">&#167;4.2.1.3</a>, <a href="5-lp.html#SP4_2_1_3_1">&#167;4.2.1.3.1</a>, <a href="5-lp.html#SP4_2_1_3_1_1">&#167;4.2.1.3.1.1</a>, <a href="5-lp.html#SP4_2_1_3_2">&#167;4.2.1.3.2</a>, <a href="5-lp.html#SP4_2_1_2_1">&#167;4.2.1.2.1</a>, <a href="5-lp.html#SP4_2_1_2_2">&#167;4.2.1.2.2</a>, <a href="5-lp.html#SP5">&#167;5</a>, <a href="5-lp.html#SP5_2">&#167;5.2</a><br/>Kind Constructors - <a href="5-kc.html#SP10">&#167;10</a>, <a href="5-kc.html#SP10_8">&#167;10.8</a>, <a href="5-kc.html#SP10_8_1">&#167;10.8.1</a>, <a href="5-kc.html#SP10_8_2">&#167;10.8.2</a>, <a href="5-kc.html#SP10_8_3">&#167;10.8.3</a>, <a href="5-kc.html#SP10_8_4_1">&#167;10.8.4.1</a>, <a href="5-kc.html#SP10_8_4_2">&#167;10.8.4.2</a>, <a href="5-kc.html#SP10_8_5">&#167;10.8.5</a>, <a href="5-kc.html#SP10_8_5_1">&#167;10.8.5.1</a><br/>Kind IDs - <a href="5-ki.html#SP10">&#167;10</a><br/>Actions - <a href="5-act2.html#SP8_5">&#167;8.5</a>, <a href="5-act2.html#SP8_6">&#167;8.6</a>, <a href="5-act2.html#SP8_6_1">&#167;8.6.1</a>, <a href="5-act2.html#SP9">&#167;9</a><br/>Named Action Patterns - <a href="5-nap.html#SP3">&#167;3</a><br/>Command Grammars - <a href="7-cg.html#SP8">&#167;8</a>, <a href="7-cg.html#SP10">&#167;10</a>, <a href="7-cg.html#SP11">&#167;11</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP6_2">&#167;6.2</a>, <a href="7-cgl.html#SP6_5">&#167;6.5</a>, <a href="7-cgl.html#SP6_6">&#167;6.6</a>, <a href="7-cgl.html#SP6_8">&#167;6.8</a>, <a href="7-cgl.html#SP7">&#167;7</a>, <a href="7-cgl.html#SP9">&#167;9</a>, <a href="7-cgl.html#SP10">&#167;10</a>, <a href="7-cgl.html#SP11">&#167;11</a>, <a href="7-cgl.html#SP13">&#167;13</a>, <a href="7-cgl.html#SP14_3">&#167;14.3</a>, <a href="7-cgl.html#SP14_5">&#167;14.5</a>, <a href="7-cgl.html#SP14_5_1">&#167;14.5.1</a><br/>Command Grammar Tokens - <a href="7-cgt.html#SP1_1">&#167;1.1</a>, <a href="7-cgt.html#SP1_1_1">&#167;1.1.1</a>, <a href="7-cgt.html#SP1_1_1_1">&#167;1.1.1.1</a>, <a href="7-cgt.html#SP1_2">&#167;1.2</a>, <a href="7-cgt.html#SP1_2_1">&#167;1.2.1</a>, <a href="7-cgt.html#SP1_2_2">&#167;1.2.2</a>, <a href="7-cgt.html#SP1_2_3">&#167;1.2.3</a>, <a href="7-cgt.html#SP1_2_4">&#167;1.2.4</a>, <a href="7-cgt.html#SP1_2_5">&#167;1.2.5</a>, <a href="7-cgt.html#SP1_2_6">&#167;1.2.6</a>, <a href="7-cgt.html#SP1_2_7">&#167;1.2.7</a>, <a href="7-cgt.html#SP1_2_8">&#167;1.2.8</a>, <a href="7-cgt.html#SP1_2_9">&#167;1.2.9</a>, <a href="7-cgt.html#SP1_2_10_1_1">&#167;1.2.10.1.1</a>, <a href="7-cgt.html#SP1_2_10_2_1">&#167;1.2.10.2.1</a>, <a href="7-cgt.html#SP1_2_10_2_2">&#167;1.2.10.2.2</a>, <a href="7-cgt.html#SP1_2_10_1_1_1">&#167;1.2.10.1.1.1</a>, <a href="7-cgt.html#SP1_3">&#167;1.3</a>, <a href="7-cgt.html#SP1_4_1">&#167;1.4.1</a>, <a href="7-cgt.html#SP1_4_2">&#167;1.4.2</a>, <a href="7-cgt.html#SP1_4_3">&#167;1.4.3</a>, <a href="7-cgt.html#SP1_5">&#167;1.5</a>, <a href="7-cgt.html#SP1_6">&#167;1.6</a><br/>Kind GPRs - <a href="7-kg.html#SP1">&#167;1</a>, <a href="7-kg.html#SP2">&#167;2</a>, <a href="7-kg.html#SP3">&#167;3</a>, <a href="7-kg.html#SP4">&#167;4</a>, <a href="7-kg.html#SP4_1">&#167;4.1</a>, <a href="7-kg.html#SP4_3">&#167;4.3</a>, <a href="7-kg.html#SP4_4">&#167;4.4</a>, <a href="7-kg.html#SP5_1_1_1">&#167;5.1.1.1</a>, <a href="7-kg.html#SP5_1_1_2">&#167;5.1.1.2</a>, <a href="7-kg.html#SP5_1_1_3">&#167;5.1.1.3</a><br/>Noun Filter Tokens - <a href="7-nft.html#SP3_1">&#167;3.1</a>, <a href="7-nft.html#SP3_2">&#167;3.2</a>, <a href="7-nft.html#SP3_3">&#167;3.3</a>, <a href="7-nft.html#SP4">&#167;4</a><br/>Parse Name Properties - <a href="7-pnp.html#SP4">&#167;4</a>, <a href="7-pnp.html#SP4_1">&#167;4.1</a>, <a href="7-pnp.html#SP4_2">&#167;4.2</a>, <a href="7-pnp.html#SP4_3">&#167;4.3</a>, <a href="7-pnp.html#SP4_3_1">&#167;4.3.1</a>, <a href="7-pnp.html#SP4_4">&#167;4.4</a>, <a href="7-pnp.html#SP4_5">&#167;4.5</a>, <a href="7-pnp.html#SP5">&#167;5</a>, <a href="7-pnp.html#SP6">&#167;6</a>, <a href="7-pnp.html#SP6_2">&#167;6.2</a>, <a href="7-pnp.html#SP6_3">&#167;6.3</a>, <a href="7-pnp.html#SP6_4">&#167;6.4</a>, <a href="7-pnp.html#SP6_5">&#167;6.5</a>, <a href="7-pnp.html#SP6_6">&#167;6.6</a>, <a href="7-pnp.html#SP7_1">&#167;7.1</a>, <a href="7-pnp.html#SP8">&#167;8</a>, <a href="7-pnp.html#SP8_1">&#167;8.1</a>, <a href="7-pnp.html#SP9">&#167;9</a>, <a href="7-pnp.html#SP10">&#167;10</a>, <a href="7-pnp.html#SP10_1">&#167;10.1</a>, <a href="7-pnp.html#SP10_2">&#167;10.2</a>, <a href="7-pnp.html#SP11">&#167;11</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="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">EmitCode::down</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">EmitCode::down</span></span>:<br/><a href="2-ec.html#SP8">&#167;8</a>, <a href="2-ec.html#SP11">&#167;11</a><br/>Shared Variables - <a href="2-sv.html#SP1">&#167;1</a>, <a href="2-sv.html#SP1_1">&#167;1.1</a>, <a href="2-sv.html#SP1_2">&#167;1.2</a><br/>The Heap - <a href="2-th.html#SP5">&#167;5</a><br/>Showme Command - <a href="2-sc.html#SP2">&#167;2</a>, <a href="2-sc.html#SP3">&#167;3</a>, <a href="2-sc.html#SP4">&#167;4</a>, <a href="2-sc.html#SP4_2">&#167;4.2</a>, <a href="2-sc.html#SP6_1">&#167;6.1</a>, <a href="2-sc.html#SP6_1_1">&#167;6.1.1</a>, <a href="2-sc.html#SP6_1_1_1">&#167;6.1.1.1</a>, <a href="2-sc.html#SP6_2">&#167;6.2</a>, <a href="2-sc.html#SP6_2_1">&#167;6.2.1</a><br/>Short Names - <a href="2-sn.html#SP4">&#167;4</a>, <a href="2-sn.html#SP4_1">&#167;4.1</a>, <a href="2-sn.html#SP4_2">&#167;4.2</a><br/>Text Substitutions - <a href="4-ts.html#SP2_1">&#167;2.1</a>, <a href="4-ts.html#SP7_2">&#167;7.2</a><br/>Responses - <a href="4-rsp.html#SP6">&#167;6</a>, <a href="4-rsp.html#SP7_1">&#167;7.1</a><br/>Box Quotations - <a href="4-bq.html#SP2">&#167;2</a><br/>Group Together - <a href="4-gt.html#SP3">&#167;3</a><br/>Looping Over Scope - <a href="4-los.html#SP3">&#167;3</a><br/>Adjectives - <a href="5-adj.html#SP6_1_2">&#167;6.1.2</a>, <a href="5-adj.html#SP8">&#167;8</a>, <a href="5-adj.html#SP9">&#167;9</a>, <a href="5-adj.html#SP14">&#167;14</a>, <a href="5-adj.html#SP15">&#167;15</a><br/>Chronology - <a href="5-chr.html#SP3_4">&#167;3.4</a>, <a href="5-chr.html#SP4_1">&#167;4.1</a>, <a href="5-chr.html#SP5">&#167;5</a>, <a href="5-chr.html#SP7_2">&#167;7.2</a>, <a href="5-chr.html#SP8">&#167;8</a><br/>Conjugations - <a href="5-cnj.html#SP7">&#167;7</a>, <a href="5-cnj.html#SP8">&#167;8</a>, <a href="5-cnj.html#SP12_1">&#167;12.1</a>, <a href="5-cnj.html#SP7_2">&#167;7.2</a>, <a href="5-cnj.html#SP7_2_1">&#167;7.2.1</a>, <a href="5-cnj.html#SP7_2_2">&#167;7.2.2</a>, <a href="5-cnj.html#SP13">&#167;13</a><br/>Instances - <a href="5-ins.html#SP4">&#167;4</a><br/>Backdrop Instances - <a href="5-bi.html#SP2_1">&#167;2.1</a><br/>Door Instances - <a href="5-di.html#SP3">&#167;3</a>, <a href="5-di.html#SP5">&#167;5</a><br/>Region Instances - <a href="5-ri.html#SP2">&#167;2</a><br/>Scene Instances - <a href="5-si.html#SP3_1">&#167;3.1</a>, <a href="5-si.html#SP4">&#167;4</a>, <a href="5-si.html#SP4_2">&#167;4.2</a>, <a href="5-si.html#SP6_1">&#167;6.1</a>, <a href="5-si.html#SP6_2">&#167;6.2</a>, <a href="5-si.html#SP6_3">&#167;6.3</a>, <a href="5-si.html#SP6_4">&#167;6.4</a>, <a href="5-si.html#SP6_5">&#167;6.5</a>, <a href="5-si.html#SP7">&#167;7</a>, <a href="5-si.html#SP7_1">&#167;7.1</a>, <a href="5-si.html#SP7_2">&#167;7.2</a>, <a href="5-si.html#SP7_2_1">&#167;7.2.1</a>, <a href="5-si.html#SP8">&#167;8</a><br/>Rules - <a href="5-rls.html#SP12_4">&#167;12.4</a>, <a href="5-rls.html#SP14">&#167;14</a>, <a href="5-rls.html#SP14_2">&#167;14.2</a>, <a href="5-rls.html#SP15">&#167;15</a>, <a href="5-rls.html#SP17_1">&#167;17.1</a>, <a href="5-rls.html#SP15_1">&#167;15.1</a>, <a href="5-rls.html#SP17_3">&#167;17.3</a>, <a href="5-rls.html#SP17_4">&#167;17.4</a>, <a href="5-rls.html#SP15_2">&#167;15.2</a>, <a href="5-rls.html#SP15_2_1">&#167;15.2.1</a>, <a href="5-rls.html#SP17_2_1">&#167;17.2.1</a><br/>Rulebooks - <a href="5-rlb.html#SP7_4_1_1">&#167;7.4.1.1</a>, <a href="5-rlb.html#SP7_4_1_2">&#167;7.4.1.2</a>, <a href="5-rlb.html#SP7_4_1_3">&#167;7.4.1.3</a>, <a href="5-rlb.html#SP7_4_1_4">&#167;7.4.1.4</a>, <a href="5-rlb.html#SP7_4_1_5">&#167;7.4.1.5</a>, <a href="5-rlb.html#SP7_4_1_3_1">&#167;7.4.1.3.1</a>, <a href="5-rlb.html#SP15">&#167;15</a><br/>Variables - <a href="5-vrb.html#SP8">&#167;8</a>, <a href="5-vrb.html#SP14_1">&#167;14.1</a><br/>Relations - <a href="5-rlt.html#SP7_1">&#167;7.1</a>, <a href="5-rlt.html#SP7_2">&#167;7.2</a>, <a href="5-rlt.html#SP7_4">&#167;7.4</a>, <a href="5-rlt.html#SP7_4_1">&#167;7.4.1</a>, <a href="5-rlt.html#SP7_4_4">&#167;7.4.4</a>, <a href="5-rlt.html#SP7_4_5">&#167;7.4.5</a>, <a href="5-rlt.html#SP7_4_5_1">&#167;7.4.5.1</a>, <a href="5-rlt.html#SP7_4_6">&#167;7.4.6</a>, <a href="5-rlt.html#SP7_4_7">&#167;7.4.7</a>, <a href="5-rlt.html#SP7_4_8">&#167;7.4.8</a>, <a href="5-rlt.html#SP7_4_9">&#167;7.4.9</a>, <a href="5-rlt.html#SP7_4_10">&#167;7.4.10</a>, <a href="5-rlt.html#SP7_4_11">&#167;7.4.11</a>, <a href="5-rlt.html#SP7_4_12">&#167;7.4.12</a>, <a href="5-rlt.html#SP7_4_9_1">&#167;7.4.9.1</a>, <a href="5-rlt.html#SP7_4_10_1">&#167;7.4.10.1</a>, <a href="5-rlt.html#SP7_4_12_1">&#167;7.4.12.1</a>, <a href="5-rlt.html#SP20_1">&#167;20.1</a>, <a href="5-rlt.html#SP20_2">&#167;20.2</a>, <a href="5-rlt.html#SP20_3">&#167;20.3</a>, <a href="5-rlt.html#SP20_4">&#167;20.4</a>, <a href="5-rlt.html#SP20_5">&#167;20.5</a>, <a href="5-rlt.html#SP21">&#167;21</a>, <a href="5-rlt.html#SP22">&#167;22</a><br/>Literal Patterns - <a href="5-lp.html#SP4_1_1">&#167;4.1.1</a>, <a href="5-lp.html#SP4_1_1_1">&#167;4.1.1.1</a>, <a href="5-lp.html#SP4_1_1_2">&#167;4.1.1.2</a>, <a href="5-lp.html#SP4_1_1_3">&#167;4.1.1.3</a>, <a href="5-lp.html#SP4_1_1_4">&#167;4.1.1.4</a>, <a href="5-lp.html#SP4_2">&#167;4.2</a>, <a href="5-lp.html#SP4_2_1">&#167;4.2.1</a>, <a href="5-lp.html#SP4_2_1_1">&#167;4.2.1.1</a>, <a href="5-lp.html#SP4_2_1_2">&#167;4.2.1.2</a>, <a href="5-lp.html#SP4_2_1_3">&#167;4.2.1.3</a>, <a href="5-lp.html#SP4_2_1_3_1">&#167;4.2.1.3.1</a>, <a href="5-lp.html#SP4_2_1_3_1_1">&#167;4.2.1.3.1.1</a>, <a href="5-lp.html#SP4_2_1_3_2">&#167;4.2.1.3.2</a>, <a href="5-lp.html#SP4_2_1_2_1">&#167;4.2.1.2.1</a>, <a href="5-lp.html#SP4_2_1_2_2">&#167;4.2.1.2.2</a>, <a href="5-lp.html#SP5">&#167;5</a>, <a href="5-lp.html#SP5_2">&#167;5.2</a><br/>Kind Constructors - <a href="5-kc.html#SP10">&#167;10</a>, <a href="5-kc.html#SP10_8">&#167;10.8</a>, <a href="5-kc.html#SP10_8_1">&#167;10.8.1</a>, <a href="5-kc.html#SP10_8_2">&#167;10.8.2</a>, <a href="5-kc.html#SP10_8_3">&#167;10.8.3</a>, <a href="5-kc.html#SP10_8_4_1">&#167;10.8.4.1</a>, <a href="5-kc.html#SP10_8_4_2">&#167;10.8.4.2</a>, <a href="5-kc.html#SP10_8_5">&#167;10.8.5</a>, <a href="5-kc.html#SP10_8_5_1">&#167;10.8.5.1</a><br/>Kind IDs - <a href="5-ki.html#SP10">&#167;10</a><br/>Actions - <a href="5-act2.html#SP8_5">&#167;8.5</a>, <a href="5-act2.html#SP8_6">&#167;8.6</a>, <a href="5-act2.html#SP8_6_1">&#167;8.6.1</a>, <a href="5-act2.html#SP9">&#167;9</a><br/>Named Action Patterns - <a href="5-nap.html#SP3">&#167;3</a><br/>Command Grammars - <a href="7-cg.html#SP8">&#167;8</a>, <a href="7-cg.html#SP10">&#167;10</a>, <a href="7-cg.html#SP11">&#167;11</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP6_2">&#167;6.2</a>, <a href="7-cgl.html#SP6_5">&#167;6.5</a>, <a href="7-cgl.html#SP6_6">&#167;6.6</a>, <a href="7-cgl.html#SP6_8">&#167;6.8</a>, <a href="7-cgl.html#SP7">&#167;7</a>, <a href="7-cgl.html#SP9">&#167;9</a>, <a href="7-cgl.html#SP10">&#167;10</a>, <a href="7-cgl.html#SP11">&#167;11</a>, <a href="7-cgl.html#SP13">&#167;13</a>, <a href="7-cgl.html#SP14_3">&#167;14.3</a>, <a href="7-cgl.html#SP14_5">&#167;14.5</a>, <a href="7-cgl.html#SP14_5_1">&#167;14.5.1</a><br/>Command Grammar Tokens - <a href="7-cgt.html#SP1_1">&#167;1.1</a>, <a href="7-cgt.html#SP1_1_1">&#167;1.1.1</a>, <a href="7-cgt.html#SP1_1_1_1">&#167;1.1.1.1</a>, <a href="7-cgt.html#SP1_2">&#167;1.2</a>, <a href="7-cgt.html#SP1_2_1">&#167;1.2.1</a>, <a href="7-cgt.html#SP1_2_2">&#167;1.2.2</a>, <a href="7-cgt.html#SP1_2_3">&#167;1.2.3</a>, <a href="7-cgt.html#SP1_2_4">&#167;1.2.4</a>, <a href="7-cgt.html#SP1_2_5">&#167;1.2.5</a>, <a href="7-cgt.html#SP1_2_6">&#167;1.2.6</a>, <a href="7-cgt.html#SP1_2_7">&#167;1.2.7</a>, <a href="7-cgt.html#SP1_2_8">&#167;1.2.8</a>, <a href="7-cgt.html#SP1_2_9">&#167;1.2.9</a>, <a href="7-cgt.html#SP1_2_10_1_1">&#167;1.2.10.1.1</a>, <a href="7-cgt.html#SP1_2_10_2_1">&#167;1.2.10.2.1</a>, <a href="7-cgt.html#SP1_2_10_2_2">&#167;1.2.10.2.2</a>, <a href="7-cgt.html#SP1_2_10_1_1_1">&#167;1.2.10.1.1.1</a>, <a href="7-cgt.html#SP1_3">&#167;1.3</a>, <a href="7-cgt.html#SP1_4_1">&#167;1.4.1</a>, <a href="7-cgt.html#SP1_4_2">&#167;1.4.2</a>, <a href="7-cgt.html#SP1_4_3">&#167;1.4.3</a>, <a href="7-cgt.html#SP1_5">&#167;1.5</a>, <a href="7-cgt.html#SP1_6">&#167;1.6</a><br/>Kind GPRs - <a href="7-kg.html#SP1">&#167;1</a>, <a href="7-kg.html#SP2">&#167;2</a>, <a href="7-kg.html#SP3">&#167;3</a>, <a href="7-kg.html#SP4">&#167;4</a>, <a href="7-kg.html#SP4_1">&#167;4.1</a>, <a href="7-kg.html#SP4_3">&#167;4.3</a>, <a href="7-kg.html#SP4_4">&#167;4.4</a>, <a href="7-kg.html#SP5_1_1_1">&#167;5.1.1.1</a>, <a href="7-kg.html#SP5_1_1_2">&#167;5.1.1.2</a><br/>Noun Filter Tokens - <a href="7-nft.html#SP3_1">&#167;3.1</a>, <a href="7-nft.html#SP3_2">&#167;3.2</a>, <a href="7-nft.html#SP3_3">&#167;3.3</a>, <a href="7-nft.html#SP4">&#167;4</a><br/>Parse Name Properties - <a href="7-pnp.html#SP4">&#167;4</a>, <a href="7-pnp.html#SP4_1">&#167;4.1</a>, <a href="7-pnp.html#SP4_2">&#167;4.2</a>, <a href="7-pnp.html#SP4_3">&#167;4.3</a>, <a href="7-pnp.html#SP4_3_1">&#167;4.3.1</a>, <a href="7-pnp.html#SP4_4">&#167;4.4</a>, <a href="7-pnp.html#SP4_5">&#167;4.5</a>, <a href="7-pnp.html#SP5">&#167;5</a>, <a href="7-pnp.html#SP6">&#167;6</a>, <a href="7-pnp.html#SP6_2">&#167;6.2</a>, <a href="7-pnp.html#SP6_3">&#167;6.3</a>, <a href="7-pnp.html#SP6_4">&#167;6.4</a>, <a href="7-pnp.html#SP6_5">&#167;6.5</a>, <a href="7-pnp.html#SP6_6">&#167;6.6</a>, <a href="7-pnp.html#SP8">&#167;8</a>, <a href="7-pnp.html#SP8_1">&#167;8.1</a>, <a href="7-pnp.html#SP9">&#167;9</a>, <a href="7-pnp.html#SP10">&#167;10</a>, <a href="7-pnp.html#SP10_1">&#167;10.1</a>, <a href="7-pnp.html#SP10_2">&#167;10.2</a>, <a href="7-pnp.html#SP11">&#167;11</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="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. </b>And this returns the current depth of nesting, that is, how many downs we
have made, net:
</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">EmitCode::level</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">EmitCode::level</span></span>:<br/><a href="2-ec.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Produce::level</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>&#167;5. Structural. </b></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">EmitCode::code</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">EmitCode::code</span></span>:<br/>Shared Variables - <a href="2-sv.html#SP1">&#167;1</a><br/>Showme Command - <a href="2-sc.html#SP2">&#167;2</a>, <a href="2-sc.html#SP3">&#167;3</a>, <a href="2-sc.html#SP4">&#167;4</a>, <a href="2-sc.html#SP4_2">&#167;4.2</a>, <a href="2-sc.html#SP6_1">&#167;6.1</a>, <a href="2-sc.html#SP6_1_1">&#167;6.1.1</a>, <a href="2-sc.html#SP6_2">&#167;6.2</a>, <a href="2-sc.html#SP6_2_1">&#167;6.2.1</a><br/>Short Names - <a href="2-sn.html#SP4_1">&#167;4.1</a><br/>Text Substitutions - <a href="4-ts.html#SP7_2">&#167;7.2</a><br/>Responses - <a href="4-rsp.html#SP7_1">&#167;7.1</a><br/>Box Quotations - <a href="4-bq.html#SP2">&#167;2</a><br/>Group Together - <a href="4-gt.html#SP3">&#167;3</a><br/>Looping Over Scope - <a href="4-los.html#SP3">&#167;3</a><br/>Adjectives - <a href="5-adj.html#SP6_1_2">&#167;6.1.2</a>, <a href="5-adj.html#SP8">&#167;8</a>, <a href="5-adj.html#SP15">&#167;15</a><br/>Chronology - <a href="5-chr.html#SP8">&#167;8</a><br/>Conjugations - <a href="5-cnj.html#SP7">&#167;7</a>, <a href="5-cnj.html#SP12_1">&#167;12.1</a>, <a href="5-cnj.html#SP7_2">&#167;7.2</a>, <a href="5-cnj.html#SP7_2_1">&#167;7.2.1</a>, <a href="5-cnj.html#SP7_2_2">&#167;7.2.2</a>, <a href="5-cnj.html#SP13">&#167;13</a><br/>Backdrop Instances - <a href="5-bi.html#SP2_1">&#167;2.1</a><br/>Door Instances - <a href="5-di.html#SP3">&#167;3</a>, <a href="5-di.html#SP5">&#167;5</a><br/>Region Instances - <a href="5-ri.html#SP2">&#167;2</a><br/>Scene Instances - <a href="5-si.html#SP3_1">&#167;3.1</a>, <a href="5-si.html#SP4">&#167;4</a>, <a href="5-si.html#SP4_2">&#167;4.2</a>, <a href="5-si.html#SP6_1">&#167;6.1</a>, <a href="5-si.html#SP6_4">&#167;6.4</a>, <a href="5-si.html#SP6_5">&#167;6.5</a>, <a href="5-si.html#SP7">&#167;7</a>, <a href="5-si.html#SP7_2">&#167;7.2</a>, <a href="5-si.html#SP7_2_1">&#167;7.2.1</a><br/>Rules - <a href="5-rls.html#SP14">&#167;14</a>, <a href="5-rls.html#SP15">&#167;15</a>, <a href="5-rls.html#SP17_1">&#167;17.1</a>, <a href="5-rls.html#SP15_1">&#167;15.1</a>, <a href="5-rls.html#SP17_3">&#167;17.3</a>, <a href="5-rls.html#SP17_4">&#167;17.4</a>, <a href="5-rls.html#SP15_2">&#167;15.2</a>, <a href="5-rls.html#SP17_2_1">&#167;17.2.1</a><br/>Rulebooks - <a href="5-rlb.html#SP7_4_1_2">&#167;7.4.1.2</a>, <a href="5-rlb.html#SP7_4_1_3">&#167;7.4.1.3</a>, <a href="5-rlb.html#SP7_4_1_4">&#167;7.4.1.4</a>, <a href="5-rlb.html#SP7_4_1_3_1">&#167;7.4.1.3.1</a>, <a href="5-rlb.html#SP15">&#167;15</a><br/>Relations - <a href="5-rlt.html#SP7_4">&#167;7.4</a>, <a href="5-rlt.html#SP7_4_4">&#167;7.4.4</a>, <a href="5-rlt.html#SP7_4_9">&#167;7.4.9</a>, <a href="5-rlt.html#SP7_4_12">&#167;7.4.12</a>, <a href="5-rlt.html#SP7_4_9_1">&#167;7.4.9.1</a>, <a href="5-rlt.html#SP7_4_10_1">&#167;7.4.10.1</a>, <a href="5-rlt.html#SP7_4_12_1">&#167;7.4.12.1</a>, <a href="5-rlt.html#SP20_1">&#167;20.1</a>, <a href="5-rlt.html#SP20_2">&#167;20.2</a>, <a href="5-rlt.html#SP20_3">&#167;20.3</a>, <a href="5-rlt.html#SP20_4">&#167;20.4</a>, <a href="5-rlt.html#SP20_5">&#167;20.5</a>, <a href="5-rlt.html#SP22">&#167;22</a><br/>Literal Patterns - <a href="5-lp.html#SP4_1_1_3">&#167;4.1.1.3</a>, <a href="5-lp.html#SP4_1_1_4">&#167;4.1.1.4</a>, <a href="5-lp.html#SP4_2_1">&#167;4.2.1</a>, <a href="5-lp.html#SP4_2_1_1">&#167;4.2.1.1</a>, <a href="5-lp.html#SP4_2_1_2">&#167;4.2.1.2</a>, <a href="5-lp.html#SP4_2_1_3">&#167;4.2.1.3</a>, <a href="5-lp.html#SP4_2_1_3_1">&#167;4.2.1.3.1</a>, <a href="5-lp.html#SP4_2_1_3_1_1">&#167;4.2.1.3.1.1</a>, <a href="5-lp.html#SP4_2_1_3_2">&#167;4.2.1.3.2</a>, <a href="5-lp.html#SP4_2_1_2_1">&#167;4.2.1.2.1</a>, <a href="5-lp.html#SP4_2_1_2_2">&#167;4.2.1.2.2</a>, <a href="5-lp.html#SP5">&#167;5</a>, <a href="5-lp.html#SP5_2">&#167;5.2</a><br/>Kind Constructors - <a href="5-kc.html#SP10_8_3">&#167;10.8.3</a>, <a href="5-kc.html#SP10_8_5">&#167;10.8.5</a><br/>Actions - <a href="5-act2.html#SP8_6">&#167;8.6</a><br/>Named Action Patterns - <a href="5-nap.html#SP3">&#167;3</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP6_2">&#167;6.2</a>, <a href="7-cgl.html#SP6_6">&#167;6.6</a>, <a href="7-cgl.html#SP7">&#167;7</a>, <a href="7-cgl.html#SP9">&#167;9</a>, <a href="7-cgl.html#SP10">&#167;10</a>, <a href="7-cgl.html#SP11">&#167;11</a><br/>Command Grammar Tokens - <a href="7-cgt.html#SP1_1_1">&#167;1.1.1</a>, <a href="7-cgt.html#SP1_2_4">&#167;1.2.4</a>, <a href="7-cgt.html#SP1_2_5">&#167;1.2.5</a>, <a href="7-cgt.html#SP1_2_10_1_1">&#167;1.2.10.1.1</a>, <a href="7-cgt.html#SP1_2_10_2_1">&#167;1.2.10.2.1</a>, <a href="7-cgt.html#SP1_2_10_2_2">&#167;1.2.10.2.2</a>, <a href="7-cgt.html#SP1_2_10_1_1_1">&#167;1.2.10.1.1.1</a>, <a href="7-cgt.html#SP1_5">&#167;1.5</a><br/>Kind GPRs - <a href="7-kg.html#SP4">&#167;4</a>, <a href="7-kg.html#SP5_1_1_1">&#167;5.1.1.1</a>, <a href="7-kg.html#SP5_1_1_2">&#167;5.1.1.2</a><br/>Noun Filter Tokens - <a href="7-nft.html#SP3_1">&#167;3.1</a>, <a href="7-nft.html#SP3_2">&#167;3.2</a><br/>Parse Name Properties - <a href="7-pnp.html#SP4">&#167;4</a>, <a href="7-pnp.html#SP4_1">&#167;4.1</a>, <a href="7-pnp.html#SP4_2">&#167;4.2</a>, <a href="7-pnp.html#SP4_3">&#167;4.3</a>, <a href="7-pnp.html#SP4_3_1">&#167;4.3.1</a>, <a href="7-pnp.html#SP6_2">&#167;6.2</a>, <a href="7-pnp.html#SP6_3">&#167;6.3</a>, <a href="7-pnp.html#SP6_4">&#167;6.4</a>, <a href="7-pnp.html#SP6_6">&#167;6.6</a>, <a href="7-pnp.html#SP8">&#167;8</a>, <a href="7-pnp.html#SP10">&#167;10</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="identifier-syntax">Produce::code</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">EmitCode::reference</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::reference</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>&#167;6. Comments. </b>Note that these can only safely be made in void context: for example, at the
start of a function.
</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">EmitCode::comment</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">EmitCode::comment</span></span>:<br/>Adjectives - <a href="5-adj.html#SP6_1">&#167;6.1</a><br/>Conjugations - <a href="5-cnj.html#SP12_1">&#167;12.1</a><br/>Rulebooks - <a href="5-rlb.html#SP8">&#167;8</a>, <a href="5-rlb.html#SP9">&#167;9</a><br/>Literal Patterns - <a href="5-lp.html#SP5">&#167;5</a>, <a href="5-lp.html#SP6">&#167;6</a><br/>Kind Constructors - <a href="5-kc.html#SP10_8_1">&#167;10.8.1</a><br/>Parse Name Properties - <a href="7-pnp.html#SP8">&#167;8</a>, <a href="7-pnp.html#SP10">&#167;10</a>, <a href="7-pnp.html#SP11">&#167;11</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">text</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Functions::a_function_is_being_compiled</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">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"code comment emitted outside function"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">ID</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Warehouse::create_text</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::warehouse</span></a><span class="plain-syntax">(), </span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::package</span></a><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">Inter::Warehouse::get_text</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::warehouse</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">ID</span><span class="plain-syntax">), </span><span class="identifier-syntax">text</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::guard</span><span class="plain-syntax">(</span><span class="identifier-syntax">Inter::Comment::new</span><span class="plain-syntax">(</span><a href="2-ec.html#SP2" class="function-link"><span class="function-syntax">EmitCode::at</span></a><span class="plain-syntax">(),</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><a href="2-ec.html#SP4" class="function-link"><span class="function-syntax">EmitCode::level</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">ID</span><span class="plain-syntax">));</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>&#167;7. In value context. </b>These functions all generate a <span class="extract"><span class="extract-syntax">val</span></span> opcode:
</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">EmitCode::val_number</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">EmitCode::val_number</span></span>:<br/>Shared Variables - <a href="2-sv.html#SP1">&#167;1</a><br/>The Heap - <a href="2-th.html#SP5">&#167;5</a><br/>Showme Command - <a href="2-sc.html#SP4_2">&#167;4.2</a>, <a href="2-sc.html#SP6_1_1">&#167;6.1.1</a>, <a href="2-sc.html#SP6_2">&#167;6.2</a>, <a href="2-sc.html#SP6_2_1">&#167;6.2.1</a><br/>Short Names - <a href="2-sn.html#SP4_1">&#167;4.1</a><br/>Responses - <a href="4-rsp.html#SP7_1">&#167;7.1</a><br/>Box Quotations - <a href="4-bq.html#SP2">&#167;2</a><br/>Group Together - <a href="4-gt.html#SP3">&#167;3</a><br/>Adjectives - <a href="5-adj.html#SP8">&#167;8</a>, <a href="5-adj.html#SP9">&#167;9</a><br/>Chronology - <a href="5-chr.html#SP3_4">&#167;3.4</a>, <a href="5-chr.html#SP5">&#167;5</a>, <a href="5-chr.html#SP7_2">&#167;7.2</a><br/>Conjugations - <a href="5-cnj.html#SP7">&#167;7</a>, <a href="5-cnj.html#SP8">&#167;8</a>, <a href="5-cnj.html#SP7_2">&#167;7.2</a>, <a href="5-cnj.html#SP7_2_1">&#167;7.2.1</a>, <a href="5-cnj.html#SP7_2_2">&#167;7.2.2</a>, <a href="5-cnj.html#SP13">&#167;13</a><br/>Scene Instances - <a href="5-si.html#SP3_1">&#167;3.1</a>, <a href="5-si.html#SP4">&#167;4</a>, <a href="5-si.html#SP4_2">&#167;4.2</a>, <a href="5-si.html#SP6_1">&#167;6.1</a>, <a href="5-si.html#SP6_2">&#167;6.2</a>, <a href="5-si.html#SP6_3">&#167;6.3</a>, <a href="5-si.html#SP6_5">&#167;6.5</a>, <a href="5-si.html#SP7">&#167;7</a>, <a href="5-si.html#SP7_1">&#167;7.1</a>, <a href="5-si.html#SP7_2">&#167;7.2</a>, <a href="5-si.html#SP7_2_1">&#167;7.2.1</a>, <a href="5-si.html#SP8">&#167;8</a><br/>Rules - <a href="5-rls.html#SP14_1">&#167;14.1</a>, <a href="5-rls.html#SP14_2">&#167;14.2</a>, <a href="5-rls.html#SP15">&#167;15</a>, <a href="5-rls.html#SP15_2_1">&#167;15.2.1</a>, <a href="5-rls.html#SP17_2_1">&#167;17.2.1</a><br/>Rulebooks - <a href="5-rlb.html#SP7_4_1_3">&#167;7.4.1.3</a>, <a href="5-rlb.html#SP7_4_1_5">&#167;7.4.1.5</a>, <a href="5-rlb.html#SP15">&#167;15</a><br/>Variables - <a href="5-vrb.html#SP8">&#167;8</a><br/>Relations - <a href="5-rlt.html#SP7_4_1">&#167;7.4.1</a>, <a href="5-rlt.html#SP7_4_8">&#167;7.4.8</a>, <a href="5-rlt.html#SP7_4_10">&#167;7.4.10</a>, <a href="5-rlt.html#SP7_4_11">&#167;7.4.11</a>, <a href="5-rlt.html#SP7_4_12">&#167;7.4.12</a>, <a href="5-rlt.html#SP7_4_12_1">&#167;7.4.12.1</a><br/>Literal Patterns - <a href="5-lp.html#SP4_1_1_3">&#167;4.1.1.3</a>, <a href="5-lp.html#SP4_1_1_4">&#167;4.1.1.4</a>, <a href="5-lp.html#SP4_2_1">&#167;4.2.1</a>, <a href="5-lp.html#SP4_2_1_2">&#167;4.2.1.2</a>, <a href="5-lp.html#SP4_2_1_3">&#167;4.2.1.3</a>, <a href="5-lp.html#SP4_2_1_3_1">&#167;4.2.1.3.1</a>, <a href="5-lp.html#SP4_2_1_3_1_1">&#167;4.2.1.3.1.1</a>, <a href="5-lp.html#SP4_2_1_3_2">&#167;4.2.1.3.2</a>, <a href="5-lp.html#SP4_2_1_2_1">&#167;4.2.1.2.1</a>, <a href="5-lp.html#SP5">&#167;5</a>, <a href="5-lp.html#SP5_2">&#167;5.2</a><br/>Kind Constructors - <a href="5-kc.html#SP10_8_4_1">&#167;10.8.4.1</a>, <a href="5-kc.html#SP10_8_4_2">&#167;10.8.4.2</a>, <a href="5-kc.html#SP10_8_5">&#167;10.8.5</a>, <a href="5-kc.html#SP10_8_5_1">&#167;10.8.5.1</a><br/>Actions - <a href="5-act2.html#SP8_6">&#167;8.6</a>, <a href="5-act2.html#SP9">&#167;9</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP6_6">&#167;6.6</a>, <a href="7-cgl.html#SP7">&#167;7</a>, <a href="7-cgl.html#SP9">&#167;9</a><br/>Command Grammar Tokens - <a href="7-cgt.html#SP1_2_4">&#167;1.2.4</a>, <a href="7-cgt.html#SP1_2_5">&#167;1.2.5</a>, <a href="7-cgt.html#SP1_2_10_1_1_1">&#167;1.2.10.1.1.1</a><br/>Noun Filter Tokens - <a href="7-nft.html#SP3_2">&#167;3.2</a><br/>Parse Name Properties - <a href="7-pnp.html#SP4">&#167;4</a>, <a href="7-pnp.html#SP4_1">&#167;4.1</a>, <a href="7-pnp.html#SP4_2">&#167;4.2</a>, <a href="7-pnp.html#SP4_3">&#167;4.3</a>, <a href="7-pnp.html#SP4_3_1">&#167;4.3.1</a>, <a href="7-pnp.html#SP6_2">&#167;6.2</a>, <a href="7-pnp.html#SP6_3">&#167;6.3</a>, <a href="7-pnp.html#SP6_6">&#167;6.6</a>, <a href="7-pnp.html#SP8">&#167;8</a>, <a href="7-pnp.html#SP8_1">&#167;8.1</a>, <a href="7-pnp.html#SP9">&#167;9</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_ti</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">Produce::val</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K_number</span><span class="plain-syntax">, </span><span class="identifier-syntax">LITERAL_IVAL</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">void</span><span class="plain-syntax"> </span><span class="function-syntax">EmitCode::val_true</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">EmitCode::val_true</span></span>:<br/><a href="2-ec.html#SP8">&#167;8</a><br/>Responses - <a href="4-rsp.html#SP7_1">&#167;7.1</a><br/>Scene Instances - <a href="5-si.html#SP8">&#167;8</a><br/>Rules - <a href="5-rls.html#SP14_1">&#167;14.1</a><br/>Relations - <a href="5-rlt.html#SP7_2">&#167;7.2</a>, <a href="5-rlt.html#SP7_4_6">&#167;7.4.6</a>, <a href="5-rlt.html#SP7_4_7">&#167;7.4.7</a>, <a href="5-rlt.html#SP7_4_8">&#167;7.4.8</a>, <a href="5-rlt.html#SP7_4_12_1">&#167;7.4.12.1</a><br/>Literal Patterns - <a href="5-lp.html#SP4_2_1_3_1">&#167;4.2.1.3.1</a>, <a href="5-lp.html#SP4_2_1_3_2">&#167;4.2.1.3.2</a>, <a href="5-lp.html#SP4_2_1_2_1">&#167;4.2.1.2.1</a><br/>Command Grammar Tokens - <a href="7-cgt.html#SP1_2_4">&#167;1.2.4</a>, <a href="7-cgt.html#SP1_2_5">&#167;1.2.5</a>, <a href="7-cgt.html#SP1_2_8">&#167;1.2.8</a>, <a href="7-cgt.html#SP1_2_9">&#167;1.2.9</a>, <a href="7-cgt.html#SP1_2_10_1_1_1">&#167;1.2.10.1.1.1</a><br/>Noun Filter Tokens - <a href="7-nft.html#SP3_2">&#167;3.2</a><br/>Parse Name Properties - <a href="7-pnp.html#SP4_3_1">&#167;4.3.1</a>, <a href="7-pnp.html#SP5">&#167;5</a>, <a href="7-pnp.html#SP10">&#167;10</a>, <a href="7-pnp.html#SP10_2">&#167;10.2</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="identifier-syntax">Produce::val</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K_truth_state</span><span class="plain-syntax">, </span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">EmitCode::val_false</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">EmitCode::val_false</span></span>:<br/><a href="2-ec.html#SP8">&#167;8</a><br/>Responses - <a href="4-rsp.html#SP7_1">&#167;7.1</a><br/>Looping Over Scope - <a href="4-los.html#SP3">&#167;3</a><br/>Rules - <a href="5-rls.html#SP15_2">&#167;15.2</a><br/>Relations - <a href="5-rlt.html#SP7_4_4">&#167;7.4.4</a>, <a href="5-rlt.html#SP7_4_7">&#167;7.4.7</a>, <a href="5-rlt.html#SP7_4_8">&#167;7.4.8</a>, <a href="5-rlt.html#SP7_4_12_1">&#167;7.4.12.1</a><br/>Literal Patterns - <a href="5-lp.html#SP4_2_1">&#167;4.2.1</a>, <a href="5-lp.html#SP4_2_1_3_1">&#167;4.2.1.3.1</a>, <a href="5-lp.html#SP4_2_1_3_2">&#167;4.2.1.3.2</a>, <a href="5-lp.html#SP4_2_1_2_1">&#167;4.2.1.2.1</a>, <a href="5-lp.html#SP4_2_1_2_2">&#167;4.2.1.2.2</a><br/>Kind Constructors - <a href="5-kc.html#SP10">&#167;10</a><br/>Command Grammar Tokens - <a href="7-cgt.html#SP1_2_10_1_1">&#167;1.2.10.1.1</a>, <a href="7-cgt.html#SP1_2_10_2_1">&#167;1.2.10.2.1</a>, <a href="7-cgt.html#SP1_2_10_2_2">&#167;1.2.10.2.2</a><br/>Noun Filter Tokens - <a href="7-nft.html#SP3_2">&#167;3.2</a><br/>Parse Name Properties - <a href="7-pnp.html#SP4_3">&#167;4.3</a>, <a href="7-pnp.html#SP10">&#167;10</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="identifier-syntax">Produce::val</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K_truth_state</span><span class="plain-syntax">, </span><span class="identifier-syntax">LITERAL_IVAL</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">void</span><span class="plain-syntax"> </span><span class="function-syntax">EmitCode::val_iname</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">EmitCode::val_iname</span></span>:<br/><a href="2-ec.html#SP8">&#167;8</a><br/>Shared Variables - <a href="2-sv.html#SP1_1">&#167;1.1</a>, <a href="2-sv.html#SP1_2">&#167;1.2</a><br/>Showme Command - <a href="2-sc.html#SP6_1">&#167;6.1</a>, <a href="2-sc.html#SP6_1_1">&#167;6.1.1</a>, <a href="2-sc.html#SP6_1_1_1">&#167;6.1.1.1</a>, <a href="2-sc.html#SP6_2">&#167;6.2</a><br/>Short Names - <a href="2-sn.html#SP4_1">&#167;4.1</a><br/>Text Substitutions - <a href="4-ts.html#SP2_1">&#167;2.1</a>, <a href="4-ts.html#SP7_2">&#167;7.2</a><br/>Responses - <a href="4-rsp.html#SP4">&#167;4</a>, <a href="4-rsp.html#SP6">&#167;6</a>, <a href="4-rsp.html#SP7_1">&#167;7.1</a><br/>Box Quotations - <a href="4-bq.html#SP2">&#167;2</a><br/>Group Together - <a href="4-gt.html#SP3">&#167;3</a><br/>Adjectives - <a href="5-adj.html#SP8">&#167;8</a>, <a href="5-adj.html#SP9">&#167;9</a><br/>Chronology - <a href="5-chr.html#SP3_4">&#167;3.4</a>, <a href="5-chr.html#SP5">&#167;5</a>, <a href="5-chr.html#SP7_2">&#167;7.2</a><br/>Conjugations - <a href="5-cnj.html#SP7">&#167;7</a>, <a href="5-cnj.html#SP8">&#167;8</a>, <a href="5-cnj.html#SP12_1">&#167;12.1</a><br/>Instances - <a href="5-ins.html#SP4">&#167;4</a><br/>Backdrop Instances - <a href="5-bi.html#SP2_1">&#167;2.1</a><br/>Door Instances - <a href="5-di.html#SP3">&#167;3</a>, <a href="5-di.html#SP5">&#167;5</a><br/>Region Instances - <a href="5-ri.html#SP2">&#167;2</a><br/>Scene Instances - <a href="5-si.html#SP3_1">&#167;3.1</a>, <a href="5-si.html#SP4">&#167;4</a>, <a href="5-si.html#SP6_1">&#167;6.1</a>, <a href="5-si.html#SP6_2">&#167;6.2</a>, <a href="5-si.html#SP6_3">&#167;6.3</a>, <a href="5-si.html#SP6_4">&#167;6.4</a>, <a href="5-si.html#SP6_5">&#167;6.5</a>, <a href="5-si.html#SP7">&#167;7</a>, <a href="5-si.html#SP7_1">&#167;7.1</a>, <a href="5-si.html#SP7_2">&#167;7.2</a>, <a href="5-si.html#SP7_2_1">&#167;7.2.1</a>, <a href="5-si.html#SP8">&#167;8</a><br/>Rules - <a href="5-rls.html#SP15">&#167;15</a>, <a href="5-rls.html#SP15_1">&#167;15.1</a>, <a href="5-rls.html#SP17_3">&#167;17.3</a>, <a href="5-rls.html#SP17_4">&#167;17.4</a>, <a href="5-rls.html#SP15_2_1">&#167;15.2.1</a>, <a href="5-rls.html#SP17_2_1">&#167;17.2.1</a><br/>Rulebooks - <a href="5-rlb.html#SP7_4_1_1">&#167;7.4.1.1</a>, <a href="5-rlb.html#SP7_4_1_2">&#167;7.4.1.2</a>, <a href="5-rlb.html#SP7_4_1_3">&#167;7.4.1.3</a>, <a href="5-rlb.html#SP7_4_1_3_1">&#167;7.4.1.3.1</a>, <a href="5-rlb.html#SP15">&#167;15</a><br/>Variables - <a href="5-vrb.html#SP8">&#167;8</a>, <a href="5-vrb.html#SP14_1">&#167;14.1</a><br/>Relations - <a href="5-rlt.html#SP7_1">&#167;7.1</a>, <a href="5-rlt.html#SP7_2">&#167;7.2</a>, <a href="5-rlt.html#SP7_4">&#167;7.4</a>, <a href="5-rlt.html#SP7_4_1">&#167;7.4.1</a>, <a href="5-rlt.html#SP7_4_5">&#167;7.4.5</a>, <a href="5-rlt.html#SP7_4_5_1">&#167;7.4.5.1</a>, <a href="5-rlt.html#SP7_4_6">&#167;7.4.6</a>, <a href="5-rlt.html#SP7_4_7">&#167;7.4.7</a>, <a href="5-rlt.html#SP7_4_8">&#167;7.4.8</a>, <a href="5-rlt.html#SP7_4_9">&#167;7.4.9</a>, <a href="5-rlt.html#SP7_4_12">&#167;7.4.12</a>, <a href="5-rlt.html#SP7_4_9_1">&#167;7.4.9.1</a>, <a href="5-rlt.html#SP7_4_10_1">&#167;7.4.10.1</a>, <a href="5-rlt.html#SP7_4_12_1">&#167;7.4.12.1</a>, <a href="5-rlt.html#SP20_1">&#167;20.1</a>, <a href="5-rlt.html#SP20_2">&#167;20.2</a>, <a href="5-rlt.html#SP20_3">&#167;20.3</a>, <a href="5-rlt.html#SP20_4">&#167;20.4</a>, <a href="5-rlt.html#SP20_5">&#167;20.5</a>, <a href="5-rlt.html#SP22">&#167;22</a><br/>Literal Patterns - <a href="5-lp.html#SP4_2">&#167;4.2</a>, <a href="5-lp.html#SP4_2_1">&#167;4.2.1</a>, <a href="5-lp.html#SP4_2_1_3_1">&#167;4.2.1.3.1</a>, <a href="5-lp.html#SP4_2_1_3_2">&#167;4.2.1.3.2</a>, <a href="5-lp.html#SP4_2_1_2_1">&#167;4.2.1.2.1</a><br/>Kind Constructors - <a href="5-kc.html#SP10_8_3">&#167;10.8.3</a>, <a href="5-kc.html#SP10_8_5">&#167;10.8.5</a>, <a href="5-kc.html#SP10_8_5_1">&#167;10.8.5.1</a><br/>Kind IDs - <a href="5-ki.html#SP2">&#167;2</a>, <a href="5-ki.html#SP6">&#167;6</a>, <a href="5-ki.html#SP10">&#167;10</a><br/>Actions - <a href="5-act2.html#SP8_5">&#167;8.5</a>, <a href="5-act2.html#SP9">&#167;9</a><br/>Command Grammars - <a href="7-cg.html#SP8">&#167;8</a>, <a href="7-cg.html#SP10">&#167;10</a>, <a href="7-cg.html#SP11">&#167;11</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP6_5">&#167;6.5</a>, <a href="7-cgl.html#SP6_6">&#167;6.6</a>, <a href="7-cgl.html#SP6_8">&#167;6.8</a>, <a href="7-cgl.html#SP7">&#167;7</a>, <a href="7-cgl.html#SP9">&#167;9</a>, <a href="7-cgl.html#SP10">&#167;10</a>, <a href="7-cgl.html#SP11">&#167;11</a>, <a href="7-cgl.html#SP13">&#167;13</a>, <a href="7-cgl.html#SP14_3">&#167;14.3</a><br/>Command Grammar Tokens - <a href="7-cgt.html#SP1_2">&#167;1.2</a>, <a href="7-cgt.html#SP1_2_1">&#167;1.2.1</a>, <a href="7-cgt.html#SP1_2_2">&#167;1.2.2</a>, <a href="7-cgt.html#SP1_2_3">&#167;1.2.3</a>, <a href="7-cgt.html#SP1_2_4">&#167;1.2.4</a>, <a href="7-cgt.html#SP1_2_5">&#167;1.2.5</a>, <a href="7-cgt.html#SP1_2_6">&#167;1.2.6</a>, <a href="7-cgt.html#SP1_2_7">&#167;1.2.7</a>, <a href="7-cgt.html#SP1_2_8">&#167;1.2.8</a>, <a href="7-cgt.html#SP1_2_9">&#167;1.2.9</a>, <a href="7-cgt.html#SP1_2_10_1_1">&#167;1.2.10.1.1</a>, <a href="7-cgt.html#SP1_2_10_2_1">&#167;1.2.10.2.1</a>, <a href="7-cgt.html#SP1_2_10_2_2">&#167;1.2.10.2.2</a>, <a href="7-cgt.html#SP1_2_10_1_1_1">&#167;1.2.10.1.1.1</a>, <a href="7-cgt.html#SP1_3">&#167;1.3</a>, <a href="7-cgt.html#SP1_4_1">&#167;1.4.1</a>, <a href="7-cgt.html#SP1_4_2">&#167;1.4.2</a>, <a href="7-cgt.html#SP1_4_3">&#167;1.4.3</a>, <a href="7-cgt.html#SP1_5">&#167;1.5</a>, <a href="7-cgt.html#SP1_6">&#167;1.6</a><br/>Kind GPRs - <a href="7-kg.html#SP1">&#167;1</a>, <a href="7-kg.html#SP2">&#167;2</a>, <a href="7-kg.html#SP3">&#167;3</a>, <a href="7-kg.html#SP4">&#167;4</a>, <a href="7-kg.html#SP4_1">&#167;4.1</a>, <a href="7-kg.html#SP4_4">&#167;4.4</a>, <a href="7-kg.html#SP5_1_1_1">&#167;5.1.1.1</a>, <a href="7-kg.html#SP5_1_1_2">&#167;5.1.1.2</a><br/>Noun Filter Tokens - <a href="7-nft.html#SP3_1">&#167;3.1</a>, <a href="7-nft.html#SP3_2">&#167;3.2</a>, <a href="7-nft.html#SP3_3">&#167;3.3</a>, <a href="7-nft.html#SP4">&#167;4</a><br/>Parse Name Properties - <a href="7-pnp.html#SP4_1">&#167;4.1</a>, <a href="7-pnp.html#SP4_2">&#167;4.2</a>, <a href="7-pnp.html#SP4_3">&#167;4.3</a>, <a href="7-pnp.html#SP4_3_1">&#167;4.3.1</a>, <a href="7-pnp.html#SP4_4">&#167;4.4</a>, <a href="7-pnp.html#SP5">&#167;5</a>, <a href="7-pnp.html#SP6_2">&#167;6.2</a>, <a href="7-pnp.html#SP6_3">&#167;6.3</a>, <a href="7-pnp.html#SP8">&#167;8</a>, <a href="7-pnp.html#SP10">&#167;10</a>, <a href="7-pnp.html#SP10_2">&#167;10.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_iname</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">EmitCode::val_text</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">EmitCode::val_text</span></span>:<br/>Showme Command - <a href="2-sc.html#SP4_2">&#167;4.2</a>, <a href="2-sc.html#SP6_1_1">&#167;6.1.1</a>, <a href="2-sc.html#SP6_2">&#167;6.2</a>, <a href="2-sc.html#SP6_2_1">&#167;6.2.1</a><br/>Short Names - <a href="2-sn.html#SP4">&#167;4</a>, <a href="2-sn.html#SP4_2">&#167;4.2</a><br/>Text Substitutions - <a href="4-ts.html#SP7_2">&#167;7.2</a><br/>Box Quotations - <a href="4-bq.html#SP2">&#167;2</a><br/>Adjectives - <a href="5-adj.html#SP8">&#167;8</a><br/>Conjugations - <a href="5-cnj.html#SP12_1">&#167;12.1</a>, <a href="5-cnj.html#SP13">&#167;13</a><br/>Scene Instances - <a href="5-si.html#SP6_4">&#167;6.4</a>, <a href="5-si.html#SP7_1">&#167;7.1</a>, <a href="5-si.html#SP7_2_1">&#167;7.2.1</a><br/>Rulebooks - <a href="5-rlb.html#SP15">&#167;15</a><br/>Relations - <a href="5-rlt.html#SP7_2">&#167;7.2</a><br/>Literal Patterns - <a href="5-lp.html#SP4_1_1">&#167;4.1.1</a>, <a href="5-lp.html#SP4_1_1_1">&#167;4.1.1.1</a>, <a href="5-lp.html#SP4_1_1_2">&#167;4.1.1.2</a>, <a href="5-lp.html#SP4_1_1_3">&#167;4.1.1.3</a>, <a href="5-lp.html#SP4_2_1">&#167;4.2.1</a><br/>Kind Constructors - <a href="5-kc.html#SP10_8_3">&#167;10.8.3</a><br/>Actions - <a href="5-act2.html#SP8_6">&#167;8.6</a>, <a href="5-act2.html#SP8_6_1">&#167;8.6.1</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP9">&#167;9</a><br/>Parse Name Properties - <a href="7-pnp.html#SP4_1">&#167;4.1</a>, <a href="7-pnp.html#SP6_3">&#167;6.3</a>, <a href="7-pnp.html#SP8">&#167;8</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">text</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_text</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">text</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">EmitCode::val_dword</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">EmitCode::val_dword</span></span>:<br/>Literal Patterns - <a href="5-lp.html#SP4_2_1_1">&#167;4.2.1.1</a><br/>Command Grammar Tokens - <a href="7-cgt.html#SP1_1">&#167;1.1</a><br/>Kind GPRs - <a href="7-kg.html#SP5_1_1_1">&#167;5.1.1.1</a><br/>Parse Name Properties - <a href="7-pnp.html#SP10">&#167;10</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">text</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_dword</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">text</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">EmitCode::val_real</span><span class="plain-syntax">(</span><span class="reserved-syntax">double</span><span class="plain-syntax"> </span><span class="identifier-syntax">g</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_real</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">g</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">EmitCode::val_nothing</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">EmitCode::val_nothing</span></span>:<br/>Adjectives - <a href="5-adj.html#SP8">&#167;8</a><br/>Relations - <a href="5-rlt.html#SP20_1">&#167;20.1</a>, <a href="5-rlt.html#SP20_2">&#167;20.2</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="identifier-syntax">Produce::val_nothing</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">EmitCode::val_symbol</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">EmitCode::val_symbol</span></span>:<br/><a href="2-ec.html#SP8">&#167;8</a><br/>Shared Variables - <a href="2-sv.html#SP1">&#167;1</a>, <a href="2-sv.html#SP1_1">&#167;1.1</a>, <a href="2-sv.html#SP1_2">&#167;1.2</a><br/>Showme Command - <a href="2-sc.html#SP2">&#167;2</a>, <a href="2-sc.html#SP3">&#167;3</a>, <a href="2-sc.html#SP4_2">&#167;4.2</a>, <a href="2-sc.html#SP6_1">&#167;6.1</a>, <a href="2-sc.html#SP6_1_1">&#167;6.1.1</a>, <a href="2-sc.html#SP6_1_1_1">&#167;6.1.1.1</a><br/>Responses - <a href="4-rsp.html#SP7_1">&#167;7.1</a><br/>Looping Over Scope - <a href="4-los.html#SP3">&#167;3</a><br/>Adjectives - <a href="5-adj.html#SP8">&#167;8</a><br/>Conjugations - <a href="5-cnj.html#SP7">&#167;7</a>, <a href="5-cnj.html#SP12_1">&#167;12.1</a>, <a href="5-cnj.html#SP7_2_1">&#167;7.2.1</a>, <a href="5-cnj.html#SP7_2_2">&#167;7.2.2</a>, <a href="5-cnj.html#SP13">&#167;13</a><br/>Instances - <a href="5-ins.html#SP4">&#167;4</a><br/>Door Instances - <a href="5-di.html#SP3">&#167;3</a>, <a href="5-di.html#SP5">&#167;5</a><br/>Rulebooks - <a href="5-rlb.html#SP7_4_1_3">&#167;7.4.1.3</a>, <a href="5-rlb.html#SP7_4_1_3_1">&#167;7.4.1.3.1</a>, <a href="5-rlb.html#SP15">&#167;15</a><br/>Variables - <a href="5-vrb.html#SP8">&#167;8</a><br/>Relations - <a href="5-rlt.html#SP7_4">&#167;7.4</a>, <a href="5-rlt.html#SP7_4_1">&#167;7.4.1</a>, <a href="5-rlt.html#SP7_4_4">&#167;7.4.4</a>, <a href="5-rlt.html#SP7_4_5">&#167;7.4.5</a>, <a href="5-rlt.html#SP7_4_5_1">&#167;7.4.5.1</a>, <a href="5-rlt.html#SP7_4_6">&#167;7.4.6</a>, <a href="5-rlt.html#SP7_4_7">&#167;7.4.7</a>, <a href="5-rlt.html#SP7_4_8">&#167;7.4.8</a>, <a href="5-rlt.html#SP7_4_9">&#167;7.4.9</a>, <a href="5-rlt.html#SP7_4_10">&#167;7.4.10</a>, <a href="5-rlt.html#SP7_4_11">&#167;7.4.11</a>, <a href="5-rlt.html#SP7_4_12">&#167;7.4.12</a>, <a href="5-rlt.html#SP7_4_9_1">&#167;7.4.9.1</a>, <a href="5-rlt.html#SP7_4_10_1">&#167;7.4.10.1</a>, <a href="5-rlt.html#SP7_4_12_1">&#167;7.4.12.1</a>, <a href="5-rlt.html#SP20_1">&#167;20.1</a>, <a href="5-rlt.html#SP20_2">&#167;20.2</a>, <a href="5-rlt.html#SP20_3">&#167;20.3</a>, <a href="5-rlt.html#SP20_4">&#167;20.4</a>, <a href="5-rlt.html#SP20_5">&#167;20.5</a>, <a href="5-rlt.html#SP22">&#167;22</a><br/>Literal Patterns - <a href="5-lp.html#SP4_1_1_3">&#167;4.1.1.3</a>, <a href="5-lp.html#SP4_1_1_4">&#167;4.1.1.4</a>, <a href="5-lp.html#SP4_2_1">&#167;4.2.1</a>, <a href="5-lp.html#SP4_2_1_1">&#167;4.2.1.1</a>, <a href="5-lp.html#SP4_2_1_2">&#167;4.2.1.2</a>, <a href="5-lp.html#SP4_2_1_3">&#167;4.2.1.3</a>, <a href="5-lp.html#SP4_2_1_3_1">&#167;4.2.1.3.1</a>, <a href="5-lp.html#SP4_2_1_3_1_1">&#167;4.2.1.3.1.1</a>, <a href="5-lp.html#SP4_2_1_3_2">&#167;4.2.1.3.2</a>, <a href="5-lp.html#SP4_2_1_2_1">&#167;4.2.1.2.1</a>, <a href="5-lp.html#SP4_2_1_2_2">&#167;4.2.1.2.2</a>, <a href="5-lp.html#SP5">&#167;5</a>, <a href="5-lp.html#SP5_2">&#167;5.2</a><br/>Kind Constructors - <a href="5-kc.html#SP10">&#167;10</a>, <a href="5-kc.html#SP10_8">&#167;10.8</a>, <a href="5-kc.html#SP10_8_1">&#167;10.8.1</a>, <a href="5-kc.html#SP10_8_2">&#167;10.8.2</a>, <a href="5-kc.html#SP10_8_3">&#167;10.8.3</a>, <a href="5-kc.html#SP10_8_4_1">&#167;10.8.4.1</a>, <a href="5-kc.html#SP10_8_4_2">&#167;10.8.4.2</a>, <a href="5-kc.html#SP10_8_5">&#167;10.8.5</a>, <a href="5-kc.html#SP10_8_5_1">&#167;10.8.5.1</a><br/>Kind IDs - <a href="5-ki.html#SP10">&#167;10</a><br/>Actions - <a href="5-act2.html#SP8_6">&#167;8.6</a>, <a href="5-act2.html#SP9">&#167;9</a><br/>Command Grammars - <a href="7-cg.html#SP10">&#167;10</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP6_2">&#167;6.2</a>, <a href="7-cgl.html#SP6_5">&#167;6.5</a>, <a href="7-cgl.html#SP6_6">&#167;6.6</a>, <a href="7-cgl.html#SP6_8">&#167;6.8</a>, <a href="7-cgl.html#SP14_3">&#167;14.3</a>, <a href="7-cgl.html#SP14_5">&#167;14.5</a><br/>Command Grammar Tokens - <a href="7-cgt.html#SP1_2_4">&#167;1.2.4</a>, <a href="7-cgt.html#SP1_2_5">&#167;1.2.5</a>, <a href="7-cgt.html#SP1_2_8">&#167;1.2.8</a>, <a href="7-cgt.html#SP1_2_9">&#167;1.2.9</a>, <a href="7-cgt.html#SP1_2_10_2_1">&#167;1.2.10.2.1</a>, <a href="7-cgt.html#SP1_2_10_2_2">&#167;1.2.10.2.2</a>, <a href="7-cgt.html#SP1_2_10_1_1_1">&#167;1.2.10.1.1.1</a>, <a href="7-cgt.html#SP1_3">&#167;1.3</a>, <a href="7-cgt.html#SP1_4_1">&#167;1.4.1</a>, <a href="7-cgt.html#SP1_4_2">&#167;1.4.2</a>, <a href="7-cgt.html#SP1_4_3">&#167;1.4.3</a>, <a href="7-cgt.html#SP1_5">&#167;1.5</a>, <a href="7-cgt.html#SP1_6">&#167;1.6</a><br/>Kind GPRs - <a href="7-kg.html#SP4">&#167;4</a>, <a href="7-kg.html#SP4_3">&#167;4.3</a>, <a href="7-kg.html#SP5_1_1_2">&#167;5.1.1.2</a><br/>Noun Filter Tokens - <a href="7-nft.html#SP3_1">&#167;3.1</a>, <a href="7-nft.html#SP3_2">&#167;3.2</a><br/>Parse Name Properties - <a href="7-pnp.html#SP4">&#167;4</a>, <a href="7-pnp.html#SP4_3_1">&#167;4.3.1</a>, <a href="7-pnp.html#SP4_5">&#167;4.5</a>, <a href="7-pnp.html#SP5">&#167;5</a>, <a href="7-pnp.html#SP6_2">&#167;6.2</a>, <a href="7-pnp.html#SP6_3">&#167;6.3</a>, <a href="7-pnp.html#SP6_4">&#167;6.4</a>, <a href="7-pnp.html#SP6_5">&#167;6.5</a>, <a href="7-pnp.html#SP6_6">&#167;6.6</a>, <a href="7-pnp.html#SP8">&#167;8</a>, <a href="7-pnp.html#SP9">&#167;9</a>, <a href="7-pnp.html#SP10">&#167;10</a>, <a href="7-pnp.html#SP10_1">&#167;10.1</a>, <a href="7-pnp.html#SP11">&#167;11</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_symbol</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>&#167;8. Either/or property testing. </b>This compiles code for the test <span class="extract"><span class="extract-syntax">N has prn</span></span>, that is, compiles a condition
which is true if the value of <span class="extract"><span class="extract-syntax">prn</span></span> for <span class="extract"><span class="extract-syntax">N</span></span> is <span class="extract"><span class="extract-syntax">true</span></span>, and correspondingly
false for <span class="extract"><span class="extract-syntax">false</span></span>.
</p>
<p class="commentary">The preferred way to do this is to use the pair of functions <span class="extract"><span class="extract-syntax">GetEitherOrProperty</span></span>
or <span class="extract"><span class="extract-syntax">SetEitherOrProperty</span></span>, defined in <a href="../BasicInformKit/index.html" class="internal">BasicInformKit</a>, because that way
suitable runtime problems are generated for mistaken accesses. But if we
want the fastest possible access and know that it will be valid, we can use
the following.
</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">EmitCode::test_if_iname_has_property</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">EmitCode::test_if_iname_has_property</span></span>:<br/>Parse Name Properties - <a href="7-pnp.html#SP8">&#167;8</a>, <a href="7-pnp.html#SP10">&#167;10</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP8" class="function-link"><span class="function-syntax">EmitCode::test_if_symbol_has_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">InterNames::to_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">), </span><span class="identifier-syntax">prn</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">EmitCode::test_if_symbol_has_property</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">EmitCode::test_if_symbol_has_property</span></span>:<br/>Showme Command - <a href="2-sc.html#SP6_2">&#167;6.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-prp.html#SP7" class="function-link"><span class="function-syntax">RTProperties::recommended_as_attribute</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-prp.html#SP4" class="function-link"><span class="function-syntax">RTProperties::stored_in_negation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NOT_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">HAS_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="5-prp.html#SP2" class="function-link"><span class="function-syntax">RTProperties::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">EitherOrProperties::get_negation</span><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">)));</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">HAS_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="5-prp.html#SP2" class="function-link"><span class="function-syntax">RTProperties::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> } </span><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><a href="5-prp.html#SP4" class="function-link"><span class="function-syntax">RTProperties::stored_in_negation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">EQ_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PROPERTYVALUE_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="5-prp.html#SP2" class="function-link"><span class="function-syntax">RTProperties::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">EitherOrProperties::get_negation</span><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">)));</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_false</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">EQ_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PROPERTYVALUE_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="5-prp.html#SP2" class="function-link"><span class="function-syntax">RTProperties::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_true</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>&#167;9. Casts. </b>These are value conversions from one kind to another. In some simple cases,
this can be achieved with an Inter <span class="extract"><span class="extract-syntax">cast</span></span>:
</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">EmitCode::cast</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">EmitCode::cast</span></span>:<br/>Kind Constructors - <a href="5-kc.html#SP10_8_4_1">&#167;10.8.4.1</a>, <a href="5-kc.html#SP10_8_4_2">&#167;10.8.4.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::cast</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="identifier-syntax">T</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>&#167;10. </b>This allows more complex cases, though:
</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">EmitCode::cast_possible</span><button class="popup" onclick="togglePopup('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">Usage of <span class="code-font"><span class="function-syntax">EmitCode::cast_possible</span></span>:<br/><a href="2-ec.html#SP11">&#167;11</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">F</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Kinds::weaken</span><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">T</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Kinds::weaken</span><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</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">T</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">F</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">T</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">construct</span><span class="plain-syntax"> != </span><span class="identifier-syntax">F</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">construct</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::Behaviour::definite</span><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">)) &amp;&amp; (</span><span class="identifier-syntax">Kinds::Behaviour::definite</span><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">)) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">T</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">construct</span><span class="plain-syntax"> != </span><span class="identifier-syntax">CON_property</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">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>&#167;11. </b>Casts are in many cases implicit, so that nothing need be done, and the
followimg simply returns <span class="extract"><span class="extract-syntax">TRUE</span></span> to indicate success. But in a few cases, a
function call must be inserted, with a name like <span class="extract"><span class="extract-syntax">SNIPPET_TY_to_TEXT_TY</span></span>;
in such cases, this function must exist in the kits somewhere.
</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">EmitCode::casting_call</span><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">down</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-ec.html#SP10" class="function-link"><span class="function-syntax">EmitCode::cast_possible</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="identifier-syntax">T</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">Kinds::Behaviour::get_identifier</span><span class="plain-syntax">(</span><span class="identifier-syntax">T</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">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">Kinds::FloatingPoint::uses_floating_point</span><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">)) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::FloatingPoint::uses_floating_point</span><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">))) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">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="identifier-syntax">TEMPORARY_TEXT</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">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="string-syntax">"%S_to_%S"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Kinds::Behaviour::get_identifier</span><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Kinds::Behaviour::get_identifier</span><span class="plain-syntax">(</span><span class="identifier-syntax">T</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><span class="identifier-syntax">Produce::find_by_name</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">N</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">N</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::call</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> *</span><span class="identifier-syntax">down</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::Behaviour::uses_block_values</span><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">)) </span><span class="identifier-syntax">Frames::emit_new_local_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">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>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>&#167;12. In reference context. </b>And these produce a <span class="extract"><span class="extract-syntax">ref</span></span>:
</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">EmitCode::ref_iname</span><button class="popup" onclick="togglePopup('usagePopup19')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup19">Usage of <span class="code-font"><span class="function-syntax">EmitCode::ref_iname</span></span>:<br/>Responses - <a href="4-rsp.html#SP7_1">&#167;7.1</a><br/>Group Together - <a href="4-gt.html#SP3">&#167;3</a><br/>Looping Over Scope - <a href="4-los.html#SP3">&#167;3</a><br/>Adjectives - <a href="5-adj.html#SP9">&#167;9</a><br/>Conjugations - <a href="5-cnj.html#SP8">&#167;8</a><br/>Rules - <a href="5-rls.html#SP15_1">&#167;15.1</a>, <a href="5-rls.html#SP17_3">&#167;17.3</a><br/>Rulebooks - <a href="5-rlb.html#SP7_4_1_3">&#167;7.4.1.3</a><br/>Literal Patterns - <a href="5-lp.html#SP4_2_1">&#167;4.2.1</a>, <a href="5-lp.html#SP4_2_1_1">&#167;4.2.1.1</a>, <a href="5-lp.html#SP4_2_1_3_1">&#167;4.2.1.3.1</a>, <a href="5-lp.html#SP4_2_1_3_2">&#167;4.2.1.3.2</a>, <a href="5-lp.html#SP4_2_1_2_2">&#167;4.2.1.2.2</a><br/>Command Grammars - <a href="7-cg.html#SP10">&#167;10</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP6_5">&#167;6.5</a>, <a href="7-cgl.html#SP6_6">&#167;6.6</a>, <a href="7-cgl.html#SP6_8">&#167;6.8</a>, <a href="7-cgl.html#SP7">&#167;7</a>, <a href="7-cgl.html#SP9">&#167;9</a>, <a href="7-cgl.html#SP14_3">&#167;14.3</a>, <a href="7-cgl.html#SP14_5">&#167;14.5</a><br/>Command Grammar Tokens - <a href="7-cgt.html#SP1_2_4">&#167;1.2.4</a>, <a href="7-cgt.html#SP1_2_5">&#167;1.2.5</a>, <a href="7-cgt.html#SP1_2_8">&#167;1.2.8</a>, <a href="7-cgt.html#SP1_2_9">&#167;1.2.9</a>, <a href="7-cgt.html#SP1_2_10_1_1_1">&#167;1.2.10.1.1.1</a><br/>Kind GPRs - <a href="7-kg.html#SP4_3">&#167;4.3</a>, <a href="7-kg.html#SP5_1_1_1">&#167;5.1.1.1</a><br/>Noun Filter Tokens - <a href="7-nft.html#SP3_1">&#167;3.1</a>, <a href="7-nft.html#SP3_2">&#167;3.2</a><br/>Parse Name Properties - <a href="7-pnp.html#SP4_3_1">&#167;4.3.1</a>, <a href="7-pnp.html#SP4_5">&#167;4.5</a>, <a href="7-pnp.html#SP5">&#167;5</a>, <a href="7-pnp.html#SP6_5">&#167;6.5</a>, <a href="7-pnp.html#SP8">&#167;8</a>, <a href="7-pnp.html#SP9">&#167;9</a>, <a href="7-pnp.html#SP10">&#167;10</a>, <a href="7-pnp.html#SP10_1">&#167;10.1</a>, <a href="7-pnp.html#SP11">&#167;11</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::ref_iname</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">EmitCode::ref_symbol</span><button class="popup" onclick="togglePopup('usagePopup20')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup20">Usage of <span class="code-font"><span class="function-syntax">EmitCode::ref_symbol</span></span>:<br/>Shared Variables - <a href="2-sv.html#SP1_1">&#167;1.1</a>, <a href="2-sv.html#SP1_2">&#167;1.2</a><br/>Showme Command - <a href="2-sc.html#SP4_2">&#167;4.2</a>, <a href="2-sc.html#SP6_2_1">&#167;6.2.1</a><br/>Responses - <a href="4-rsp.html#SP7_1">&#167;7.1</a><br/>Adjectives - <a href="5-adj.html#SP8">&#167;8</a><br/>Conjugations - <a href="5-cnj.html#SP12_1">&#167;12.1</a><br/>Door Instances - <a href="5-di.html#SP3">&#167;3</a>, <a href="5-di.html#SP5">&#167;5</a><br/>Scene Instances - <a href="5-si.html#SP4_2">&#167;4.2</a><br/>Rulebooks - <a href="5-rlb.html#SP7_4_1_1">&#167;7.4.1.1</a>, <a href="5-rlb.html#SP7_4_1_3">&#167;7.4.1.3</a><br/>Literal Patterns - <a href="5-lp.html#SP4_1_1_3">&#167;4.1.1.3</a>, <a href="5-lp.html#SP4_2_1">&#167;4.2.1</a>, <a href="5-lp.html#SP4_2_1_2">&#167;4.2.1.2</a>, <a href="5-lp.html#SP4_2_1_3">&#167;4.2.1.3</a>, <a href="5-lp.html#SP4_2_1_3_1">&#167;4.2.1.3.1</a>, <a href="5-lp.html#SP4_2_1_3_1_1">&#167;4.2.1.3.1.1</a>, <a href="5-lp.html#SP4_2_1_3_2">&#167;4.2.1.3.2</a>, <a href="5-lp.html#SP4_2_1_2_1">&#167;4.2.1.2.1</a>, <a href="5-lp.html#SP4_2_1_2_2">&#167;4.2.1.2.2</a><br/>Command Grammars - <a href="7-cg.html#SP8">&#167;8</a>, <a href="7-cg.html#SP10">&#167;10</a>, <a href="7-cg.html#SP11">&#167;11</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP6_5">&#167;6.5</a>, <a href="7-cgl.html#SP6_6">&#167;6.6</a>, <a href="7-cgl.html#SP14_3">&#167;14.3</a><br/>Command Grammar Tokens - <a href="7-cgt.html#SP1_2">&#167;1.2</a>, <a href="7-cgt.html#SP1_2_4">&#167;1.2.4</a>, <a href="7-cgt.html#SP1_2_5">&#167;1.2.5</a>, <a href="7-cgt.html#SP1_2_8">&#167;1.2.8</a>, <a href="7-cgt.html#SP1_2_9">&#167;1.2.9</a>, <a href="7-cgt.html#SP1_2_10_1_1">&#167;1.2.10.1.1</a>, <a href="7-cgt.html#SP1_2_10_2_1">&#167;1.2.10.2.1</a>, <a href="7-cgt.html#SP1_2_10_2_2">&#167;1.2.10.2.2</a>, <a href="7-cgt.html#SP1_2_10_1_1_1">&#167;1.2.10.1.1.1</a>, <a href="7-cgt.html#SP1_3">&#167;1.3</a>, <a href="7-cgt.html#SP1_4_1">&#167;1.4.1</a>, <a href="7-cgt.html#SP1_4_2">&#167;1.4.2</a>, <a href="7-cgt.html#SP1_4_3">&#167;1.4.3</a>, <a href="7-cgt.html#SP1_5">&#167;1.5</a>, <a href="7-cgt.html#SP1_6">&#167;1.6</a><br/>Kind GPRs - <a href="7-kg.html#SP4">&#167;4</a>, <a href="7-kg.html#SP4_1">&#167;4.1</a><br/>Noun Filter Tokens - <a href="7-nft.html#SP3_1">&#167;3.1</a>, <a href="7-nft.html#SP3_2">&#167;3.2</a>, <a href="7-nft.html#SP3_3">&#167;3.3</a><br/>Parse Name Properties - <a href="7-pnp.html#SP4">&#167;4</a>, <a href="7-pnp.html#SP4_3">&#167;4.3</a>, <a href="7-pnp.html#SP4_3_1">&#167;4.3.1</a>, <a href="7-pnp.html#SP4_4">&#167;4.4</a>, <a href="7-pnp.html#SP5">&#167;5</a>, <a href="7-pnp.html#SP6">&#167;6</a>, <a href="7-pnp.html#SP6_2">&#167;6.2</a>, <a href="7-pnp.html#SP6_4">&#167;6.4</a>, <a href="7-pnp.html#SP8">&#167;8</a>, <a href="7-pnp.html#SP10">&#167;10</a>, <a href="7-pnp.html#SP10_2">&#167;10.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::ref_symbol</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>&#167;13. Invocations. </b>These three produce <span class="extract"><span class="extract-syntax">inv</span></span> opcodes:
</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">EmitCode::inv</span><button class="popup" onclick="togglePopup('usagePopup21')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup21">Usage of <span class="code-font"><span class="function-syntax">EmitCode::inv</span></span>:<br/><a href="2-ec.html#SP8">&#167;8</a><br/>Shared Variables - <a href="2-sv.html#SP1">&#167;1</a>, <a href="2-sv.html#SP1_1">&#167;1.1</a>, <a href="2-sv.html#SP1_2">&#167;1.2</a><br/>Showme Command - <a href="2-sc.html#SP2">&#167;2</a>, <a href="2-sc.html#SP3">&#167;3</a>, <a href="2-sc.html#SP4">&#167;4</a>, <a href="2-sc.html#SP4_2">&#167;4.2</a>, <a href="2-sc.html#SP6_1">&#167;6.1</a>, <a href="2-sc.html#SP6_1_1">&#167;6.1.1</a>, <a href="2-sc.html#SP6_1_1_1">&#167;6.1.1.1</a>, <a href="2-sc.html#SP6_2">&#167;6.2</a>, <a href="2-sc.html#SP6_2_1">&#167;6.2.1</a><br/>Short Names - <a href="2-sn.html#SP4">&#167;4</a>, <a href="2-sn.html#SP4_1">&#167;4.1</a>, <a href="2-sn.html#SP4_2">&#167;4.2</a><br/>Text Substitutions - <a href="4-ts.html#SP7_2">&#167;7.2</a><br/>Responses - <a href="4-rsp.html#SP7_1">&#167;7.1</a><br/>Box Quotations - <a href="4-bq.html#SP2">&#167;2</a><br/>Group Together - <a href="4-gt.html#SP3">&#167;3</a><br/>Looping Over Scope - <a href="4-los.html#SP3">&#167;3</a><br/>Adjectives - <a href="5-adj.html#SP6_1_2">&#167;6.1.2</a>, <a href="5-adj.html#SP8">&#167;8</a>, <a href="5-adj.html#SP9">&#167;9</a>, <a href="5-adj.html#SP14">&#167;14</a>, <a href="5-adj.html#SP15">&#167;15</a><br/>Chronology - <a href="5-chr.html#SP4_1">&#167;4.1</a>, <a href="5-chr.html#SP7_2">&#167;7.2</a>, <a href="5-chr.html#SP8">&#167;8</a>, <a href="5-chr.html#SP9">&#167;9</a><br/>Conjugations - <a href="5-cnj.html#SP7">&#167;7</a>, <a href="5-cnj.html#SP8">&#167;8</a>, <a href="5-cnj.html#SP12_1">&#167;12.1</a>, <a href="5-cnj.html#SP7_2">&#167;7.2</a>, <a href="5-cnj.html#SP7_2_1">&#167;7.2.1</a>, <a href="5-cnj.html#SP7_2_2">&#167;7.2.2</a>, <a href="5-cnj.html#SP13">&#167;13</a><br/>Instances - <a href="5-ins.html#SP4">&#167;4</a><br/>Backdrop Instances - <a href="5-bi.html#SP2_1">&#167;2.1</a><br/>Door Instances - <a href="5-di.html#SP3">&#167;3</a>, <a href="5-di.html#SP5">&#167;5</a><br/>Region Instances - <a href="5-ri.html#SP2">&#167;2</a><br/>Scene Instances - <a href="5-si.html#SP3_1">&#167;3.1</a>, <a href="5-si.html#SP4">&#167;4</a>, <a href="5-si.html#SP4_2">&#167;4.2</a>, <a href="5-si.html#SP6_1">&#167;6.1</a>, <a href="5-si.html#SP6_3">&#167;6.3</a>, <a href="5-si.html#SP6_4">&#167;6.4</a>, <a href="5-si.html#SP6_5">&#167;6.5</a>, <a href="5-si.html#SP7">&#167;7</a>, <a href="5-si.html#SP7_1">&#167;7.1</a>, <a href="5-si.html#SP7_2">&#167;7.2</a>, <a href="5-si.html#SP7_2_1">&#167;7.2.1</a>, <a href="5-si.html#SP8">&#167;8</a><br/>Rules - <a href="5-rls.html#SP12_4">&#167;12.4</a>, <a href="5-rls.html#SP14">&#167;14</a>, <a href="5-rls.html#SP14_2">&#167;14.2</a>, <a href="5-rls.html#SP15">&#167;15</a>, <a href="5-rls.html#SP17_1">&#167;17.1</a>, <a href="5-rls.html#SP15_1">&#167;15.1</a>, <a href="5-rls.html#SP17_3">&#167;17.3</a>, <a href="5-rls.html#SP17_4">&#167;17.4</a>, <a href="5-rls.html#SP15_2">&#167;15.2</a>, <a href="5-rls.html#SP15_2_1">&#167;15.2.1</a>, <a href="5-rls.html#SP17_2_1">&#167;17.2.1</a><br/>Rulebooks - <a href="5-rlb.html#SP7_4_1_1">&#167;7.4.1.1</a>, <a href="5-rlb.html#SP7_4_1_2">&#167;7.4.1.2</a>, <a href="5-rlb.html#SP7_4_1_3">&#167;7.4.1.3</a>, <a href="5-rlb.html#SP7_4_1_5">&#167;7.4.1.5</a>, <a href="5-rlb.html#SP7_4_1_3_1">&#167;7.4.1.3.1</a>, <a href="5-rlb.html#SP15">&#167;15</a><br/>Variables - <a href="5-vrb.html#SP8">&#167;8</a>, <a href="5-vrb.html#SP14_1">&#167;14.1</a><br/>Relations - <a href="5-rlt.html#SP7_2">&#167;7.2</a>, <a href="5-rlt.html#SP7_4">&#167;7.4</a>, <a href="5-rlt.html#SP7_4_4">&#167;7.4.4</a>, <a href="5-rlt.html#SP7_4_5">&#167;7.4.5</a>, <a href="5-rlt.html#SP7_4_6">&#167;7.4.6</a>, <a href="5-rlt.html#SP7_4_7">&#167;7.4.7</a>, <a href="5-rlt.html#SP7_4_8">&#167;7.4.8</a>, <a href="5-rlt.html#SP7_4_9">&#167;7.4.9</a>, <a href="5-rlt.html#SP7_4_10">&#167;7.4.10</a>, <a href="5-rlt.html#SP7_4_11">&#167;7.4.11</a>, <a href="5-rlt.html#SP7_4_12">&#167;7.4.12</a>, <a href="5-rlt.html#SP7_4_9_1">&#167;7.4.9.1</a>, <a href="5-rlt.html#SP7_4_10_1">&#167;7.4.10.1</a>, <a href="5-rlt.html#SP7_4_12_1">&#167;7.4.12.1</a>, <a href="5-rlt.html#SP20_1">&#167;20.1</a>, <a href="5-rlt.html#SP20_2">&#167;20.2</a>, <a href="5-rlt.html#SP20_3">&#167;20.3</a>, <a href="5-rlt.html#SP20_4">&#167;20.4</a>, <a href="5-rlt.html#SP20_5">&#167;20.5</a>, <a href="5-rlt.html#SP21">&#167;21</a>, <a href="5-rlt.html#SP22">&#167;22</a><br/>Literal Patterns - <a href="5-lp.html#SP4_1_1">&#167;4.1.1</a>, <a href="5-lp.html#SP4_1_1_1">&#167;4.1.1.1</a>, <a href="5-lp.html#SP4_1_1_2">&#167;4.1.1.2</a>, <a href="5-lp.html#SP4_1_1_3">&#167;4.1.1.3</a>, <a href="5-lp.html#SP4_1_1_4">&#167;4.1.1.4</a>, <a href="5-lp.html#SP4_2">&#167;4.2</a>, <a href="5-lp.html#SP4_2_1">&#167;4.2.1</a>, <a href="5-lp.html#SP4_2_1_1">&#167;4.2.1.1</a>, <a href="5-lp.html#SP4_2_1_2">&#167;4.2.1.2</a>, <a href="5-lp.html#SP4_2_1_3">&#167;4.2.1.3</a>, <a href="5-lp.html#SP4_2_1_3_1">&#167;4.2.1.3.1</a>, <a href="5-lp.html#SP4_2_1_3_1_1">&#167;4.2.1.3.1.1</a>, <a href="5-lp.html#SP4_2_1_3_2">&#167;4.2.1.3.2</a>, <a href="5-lp.html#SP4_2_1_2_1">&#167;4.2.1.2.1</a>, <a href="5-lp.html#SP4_2_1_2_2">&#167;4.2.1.2.2</a>, <a href="5-lp.html#SP5">&#167;5</a>, <a href="5-lp.html#SP5_2">&#167;5.2</a><br/>Kind Constructors - <a href="5-kc.html#SP10">&#167;10</a>, <a href="5-kc.html#SP10_8_1">&#167;10.8.1</a>, <a href="5-kc.html#SP10_8_2">&#167;10.8.2</a>, <a href="5-kc.html#SP10_8_3">&#167;10.8.3</a>, <a href="5-kc.html#SP10_8_4_1">&#167;10.8.4.1</a>, <a href="5-kc.html#SP10_8_4_2">&#167;10.8.4.2</a>, <a href="5-kc.html#SP10_8_5">&#167;10.8.5</a>, <a href="5-kc.html#SP10_8_5_1">&#167;10.8.5.1</a><br/>Kind IDs - <a href="5-ki.html#SP10">&#167;10</a><br/>Actions - <a href="5-act2.html#SP8_5">&#167;8.5</a>, <a href="5-act2.html#SP8_6">&#167;8.6</a>, <a href="5-act2.html#SP8_6_1">&#167;8.6.1</a>, <a href="5-act2.html#SP9">&#167;9</a><br/>Named Action Patterns - <a href="5-nap.html#SP3">&#167;3</a><br/>Command Grammars - <a href="7-cg.html#SP8">&#167;8</a>, <a href="7-cg.html#SP10">&#167;10</a>, <a href="7-cg.html#SP11">&#167;11</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP6_2">&#167;6.2</a>, <a href="7-cgl.html#SP6_5">&#167;6.5</a>, <a href="7-cgl.html#SP6_6">&#167;6.6</a>, <a href="7-cgl.html#SP6_8">&#167;6.8</a>, <a href="7-cgl.html#SP7">&#167;7</a>, <a href="7-cgl.html#SP9">&#167;9</a>, <a href="7-cgl.html#SP10">&#167;10</a>, <a href="7-cgl.html#SP11">&#167;11</a>, <a href="7-cgl.html#SP13">&#167;13</a>, <a href="7-cgl.html#SP14_3">&#167;14.3</a>, <a href="7-cgl.html#SP14_5">&#167;14.5</a>, <a href="7-cgl.html#SP14_5_1">&#167;14.5.1</a><br/>Command Grammar Tokens - <a href="7-cgt.html#SP1_1">&#167;1.1</a>, <a href="7-cgt.html#SP1_1_1_1">&#167;1.1.1.1</a>, <a href="7-cgt.html#SP1_2">&#167;1.2</a>, <a href="7-cgt.html#SP1_2_1">&#167;1.2.1</a>, <a href="7-cgt.html#SP1_2_2">&#167;1.2.2</a>, <a href="7-cgt.html#SP1_2_3">&#167;1.2.3</a>, <a href="7-cgt.html#SP1_2_4">&#167;1.2.4</a>, <a href="7-cgt.html#SP1_2_5">&#167;1.2.5</a>, <a href="7-cgt.html#SP1_2_6">&#167;1.2.6</a>, <a href="7-cgt.html#SP1_2_7">&#167;1.2.7</a>, <a href="7-cgt.html#SP1_2_8">&#167;1.2.8</a>, <a href="7-cgt.html#SP1_2_9">&#167;1.2.9</a>, <a href="7-cgt.html#SP1_2_10_1_1">&#167;1.2.10.1.1</a>, <a href="7-cgt.html#SP1_2_10_2_1">&#167;1.2.10.2.1</a>, <a href="7-cgt.html#SP1_2_10_2_2">&#167;1.2.10.2.2</a>, <a href="7-cgt.html#SP1_2_10_1_1_1">&#167;1.2.10.1.1.1</a>, <a href="7-cgt.html#SP1_3">&#167;1.3</a>, <a href="7-cgt.html#SP1_4_1">&#167;1.4.1</a>, <a href="7-cgt.html#SP1_4_2">&#167;1.4.2</a>, <a href="7-cgt.html#SP1_4_3">&#167;1.4.3</a>, <a href="7-cgt.html#SP1_5">&#167;1.5</a>, <a href="7-cgt.html#SP1_6">&#167;1.6</a><br/>Kind GPRs - <a href="7-kg.html#SP1">&#167;1</a>, <a href="7-kg.html#SP2">&#167;2</a>, <a href="7-kg.html#SP3">&#167;3</a>, <a href="7-kg.html#SP4">&#167;4</a>, <a href="7-kg.html#SP4_1">&#167;4.1</a>, <a href="7-kg.html#SP4_3">&#167;4.3</a>, <a href="7-kg.html#SP4_4">&#167;4.4</a>, <a href="7-kg.html#SP5_1_1_1">&#167;5.1.1.1</a>, <a href="7-kg.html#SP5_1_1_2">&#167;5.1.1.2</a><br/>Noun Filter Tokens - <a href="7-nft.html#SP3_1">&#167;3.1</a>, <a href="7-nft.html#SP3_2">&#167;3.2</a>, <a href="7-nft.html#SP3_3">&#167;3.3</a><br/>Parse Name Properties - <a href="7-pnp.html#SP4">&#167;4</a>, <a href="7-pnp.html#SP4_1">&#167;4.1</a>, <a href="7-pnp.html#SP4_2">&#167;4.2</a>, <a href="7-pnp.html#SP4_3">&#167;4.3</a>, <a href="7-pnp.html#SP4_3_1">&#167;4.3.1</a>, <a href="7-pnp.html#SP4_4">&#167;4.4</a>, <a href="7-pnp.html#SP4_5">&#167;4.5</a>, <a href="7-pnp.html#SP5">&#167;5</a>, <a href="7-pnp.html#SP6">&#167;6</a>, <a href="7-pnp.html#SP6_1">&#167;6.1</a>, <a href="7-pnp.html#SP6_2">&#167;6.2</a>, <a href="7-pnp.html#SP6_3">&#167;6.3</a>, <a href="7-pnp.html#SP6_4">&#167;6.4</a>, <a href="7-pnp.html#SP6_5">&#167;6.5</a>, <a href="7-pnp.html#SP6_6">&#167;6.6</a>, <a href="7-pnp.html#SP8">&#167;8</a>, <a href="7-pnp.html#SP8_1">&#167;8.1</a>, <a href="7-pnp.html#SP9">&#167;9</a>, <a href="7-pnp.html#SP10">&#167;10</a>, <a href="7-pnp.html#SP10_1">&#167;10.1</a>, <a href="7-pnp.html#SP10_2">&#167;10.2</a>, <a href="7-pnp.html#SP11">&#167;11</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">bip</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">bip</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">EmitCode::call</span><button class="popup" onclick="togglePopup('usagePopup22')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup22">Usage of <span class="code-font"><span class="function-syntax">EmitCode::call</span></span>:<br/><a href="2-ec.html#SP11">&#167;11</a><br/>Shared Variables - <a href="2-sv.html#SP1_2">&#167;1.2</a><br/>The Heap - <a href="2-th.html#SP5">&#167;5</a><br/>Showme Command - <a href="2-sc.html#SP6_1">&#167;6.1</a>, <a href="2-sc.html#SP6_1_1">&#167;6.1.1</a>, <a href="2-sc.html#SP6_1_1_1">&#167;6.1.1.1</a>, <a href="2-sc.html#SP6_2">&#167;6.2</a><br/>Short Names - <a href="2-sn.html#SP4_1">&#167;4.1</a><br/>Text Substitutions - <a href="4-ts.html#SP2_1">&#167;2.1</a><br/>Responses - <a href="4-rsp.html#SP6">&#167;6</a>, <a href="4-rsp.html#SP7_1">&#167;7.1</a><br/>Adjectives - <a href="5-adj.html#SP8">&#167;8</a>, <a href="5-adj.html#SP9">&#167;9</a><br/>Chronology - <a href="5-chr.html#SP3_4">&#167;3.4</a>, <a href="5-chr.html#SP5">&#167;5</a><br/>Conjugations - <a href="5-cnj.html#SP8">&#167;8</a>, <a href="5-cnj.html#SP12_1">&#167;12.1</a><br/>Backdrop Instances - <a href="5-bi.html#SP2_1">&#167;2.1</a><br/>Region Instances - <a href="5-ri.html#SP2">&#167;2</a><br/>Scene Instances - <a href="5-si.html#SP6_1">&#167;6.1</a>, <a href="5-si.html#SP6_2">&#167;6.2</a>, <a href="5-si.html#SP8">&#167;8</a><br/>Rules - <a href="5-rls.html#SP12_4">&#167;12.4</a>, <a href="5-rls.html#SP14_2">&#167;14.2</a>, <a href="5-rls.html#SP15">&#167;15</a>, <a href="5-rls.html#SP15_2_1">&#167;15.2.1</a>, <a href="5-rls.html#SP17_2_1">&#167;17.2.1</a><br/>Rulebooks - <a href="5-rlb.html#SP7_4_1_3_1">&#167;7.4.1.3.1</a>, <a href="5-rlb.html#SP15">&#167;15</a><br/>Variables - <a href="5-vrb.html#SP8">&#167;8</a><br/>Relations - <a href="5-rlt.html#SP7_1">&#167;7.1</a>, <a href="5-rlt.html#SP7_2">&#167;7.2</a>, <a href="5-rlt.html#SP7_4_1">&#167;7.4.1</a>, <a href="5-rlt.html#SP7_4_5_1">&#167;7.4.5.1</a>, <a href="5-rlt.html#SP7_4_6">&#167;7.4.6</a>, <a href="5-rlt.html#SP7_4_10">&#167;7.4.10</a>, <a href="5-rlt.html#SP7_4_11">&#167;7.4.11</a>, <a href="5-rlt.html#SP7_4_12">&#167;7.4.12</a>, <a href="5-rlt.html#SP7_4_9_1">&#167;7.4.9.1</a>, <a href="5-rlt.html#SP7_4_10_1">&#167;7.4.10.1</a>, <a href="5-rlt.html#SP7_4_12_1">&#167;7.4.12.1</a>, <a href="5-rlt.html#SP20_4">&#167;20.4</a>, <a href="5-rlt.html#SP20_5">&#167;20.5</a><br/>Literal Patterns - <a href="5-lp.html#SP4_2_1">&#167;4.2.1</a>, <a href="5-lp.html#SP4_2_1_3_1">&#167;4.2.1.3.1</a>, <a href="5-lp.html#SP4_2_1_3_1_1">&#167;4.2.1.3.1.1</a>, <a href="5-lp.html#SP4_2_1_3_2">&#167;4.2.1.3.2</a>, <a href="5-lp.html#SP4_2_1_2_1">&#167;4.2.1.2.1</a>, <a href="5-lp.html#SP5_2">&#167;5.2</a><br/>Kind Constructors - <a href="5-kc.html#SP10">&#167;10</a>, <a href="5-kc.html#SP10_8">&#167;10.8</a><br/>Actions - <a href="5-act2.html#SP8_5">&#167;8.5</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP9">&#167;9</a>, <a href="7-cgl.html#SP10">&#167;10</a><br/>Command Grammar Tokens - <a href="7-cgt.html#SP1_1">&#167;1.1</a>, <a href="7-cgt.html#SP1_2">&#167;1.2</a>, <a href="7-cgt.html#SP1_2_4">&#167;1.2.4</a>, <a href="7-cgt.html#SP1_2_5">&#167;1.2.5</a>, <a href="7-cgt.html#SP1_2_8">&#167;1.2.8</a>, <a href="7-cgt.html#SP1_2_9">&#167;1.2.9</a>, <a href="7-cgt.html#SP1_2_10_1_1_1">&#167;1.2.10.1.1.1</a>, <a href="7-cgt.html#SP1_3">&#167;1.3</a>, <a href="7-cgt.html#SP1_4_3">&#167;1.4.3</a>, <a href="7-cgt.html#SP1_5">&#167;1.5</a><br/>Kind GPRs - <a href="7-kg.html#SP4">&#167;4</a>, <a href="7-kg.html#SP5_1_1_1">&#167;5.1.1.1</a><br/>Noun Filter Tokens - <a href="7-nft.html#SP3_1">&#167;3.1</a>, <a href="7-nft.html#SP3_2">&#167;3.2</a>, <a href="7-nft.html#SP4">&#167;4</a><br/>Parse Name Properties - <a href="7-pnp.html#SP4_3_1">&#167;4.3.1</a>, <a href="7-pnp.html#SP6_2">&#167;6.2</a>, <a href="7-pnp.html#SP6_6">&#167;6.6</a>, <a href="7-pnp.html#SP8">&#167;8</a>, <a href="7-pnp.html#SP10">&#167;10</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">fn_iname</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_call_iname</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">fn_iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">EmitCode::call_symbol</span><button class="popup" onclick="togglePopup('usagePopup23')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup23">Usage of <span class="code-font"><span class="function-syntax">EmitCode::call_symbol</span></span>:<br/>Command Grammar Tokens - <a href="7-cgt.html#SP1_2_8">&#167;1.2.8</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_call</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>&#167;14. </b>These conveniences functions produce an invocation and argument all in one,
so they generate several opcodes. Here we return <span class="extract"><span class="extract-syntax">true</span></span> or <span class="extract"><span class="extract-syntax">false</span></span> from the
current function:
</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">EmitCode::rtrue</span><button class="popup" onclick="togglePopup('usagePopup24')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup24">Usage of <span class="code-font"><span class="function-syntax">EmitCode::rtrue</span></span>:<br/>Short Names - <a href="2-sn.html#SP4">&#167;4</a><br/>Text Substitutions - <a href="4-ts.html#SP7_2">&#167;7.2</a>, <a href="4-ts.html#SP7_3">&#167;7.3</a><br/>Adjectives - <a href="5-adj.html#SP15">&#167;15</a><br/>Chronology - <a href="5-chr.html#SP8">&#167;8</a><br/>Conjugations - <a href="5-cnj.html#SP7">&#167;7</a><br/>Backdrop Instances - <a href="5-bi.html#SP2_1">&#167;2.1</a><br/>Region Instances - <a href="5-ri.html#SP2">&#167;2</a><br/>Scene Instances - <a href="5-si.html#SP4_2">&#167;4.2</a><br/>Rulebooks - <a href="5-rlb.html#SP15">&#167;15</a><br/>Relations - <a href="5-rlt.html#SP7_4_2">&#167;7.4.2</a>, <a href="5-rlt.html#SP7_4_3">&#167;7.4.3</a>, <a href="5-rlt.html#SP7_4_4">&#167;7.4.4</a>, <a href="5-rlt.html#SP7_4_7">&#167;7.4.7</a>, <a href="5-rlt.html#SP7_4_9_1">&#167;7.4.9.1</a>, <a href="5-rlt.html#SP20_3">&#167;20.3</a>, <a href="5-rlt.html#SP20_4">&#167;20.4</a>, <a href="5-rlt.html#SP20_5">&#167;20.5</a><br/>Literal Patterns - <a href="5-lp.html#SP4_1">&#167;4.1</a>, <a href="5-lp.html#SP4_1_1_4">&#167;4.1.1.4</a>, <a href="5-lp.html#SP5">&#167;5</a>, <a href="5-lp.html#SP5_2">&#167;5.2</a><br/>Named Action Patterns - <a href="5-nap.html#SP3">&#167;3</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP9">&#167;9</a><br/>Noun Filter Tokens - <a href="7-nft.html#SP3_2">&#167;3.2</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="identifier-syntax">Produce::rtrue</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">EmitCode::rfalse</span><button class="popup" onclick="togglePopup('usagePopup25')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup25">Usage of <span class="code-font"><span class="function-syntax">EmitCode::rfalse</span></span>:<br/>Group Together - <a href="4-gt.html#SP3">&#167;3</a><br/>Adjectives - <a href="5-adj.html#SP6_1">&#167;6.1</a>, <a href="5-adj.html#SP15">&#167;15</a><br/>Chronology - <a href="5-chr.html#SP8">&#167;8</a><br/>Conjugations - <a href="5-cnj.html#SP7">&#167;7</a><br/>Equations - <a href="5-eqt.html#SP1">&#167;1</a><br/>Backdrop Instances - <a href="5-bi.html#SP2_1">&#167;2.1</a>, <a href="5-bi.html#SP2_2">&#167;2.2</a><br/>Region Instances - <a href="5-ri.html#SP2">&#167;2</a><br/>Scene Instances - <a href="5-si.html#SP3">&#167;3</a><br/>Rulebooks - <a href="5-rlb.html#SP15">&#167;15</a><br/>Relations - <a href="5-rlt.html#SP7_4">&#167;7.4</a>, <a href="5-rlt.html#SP7_4_2">&#167;7.4.2</a>, <a href="5-rlt.html#SP7_4_3">&#167;7.4.3</a>, <a href="5-rlt.html#SP7_4_4">&#167;7.4.4</a>, <a href="5-rlt.html#SP7_4_9_1">&#167;7.4.9.1</a>, <a href="5-rlt.html#SP20_3">&#167;20.3</a>, <a href="5-rlt.html#SP22">&#167;22</a><br/>Named Action Patterns - <a href="5-nap.html#SP3">&#167;3</a><br/>Noun Filter Tokens - <a href="7-nft.html#SP3_2">&#167;3.2</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="identifier-syntax">Produce::rfalse</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>&#167;15. </b>And here we pull or pull a global variable to or from the Inter call stack:
</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">EmitCode::push</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>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::push</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">EmitCode::pull</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>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::pull</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP16" class="paragraph-anchor"></a><b>&#167;16. Labels. </b>Labels can be referred to before they are defined, but must be reserved in
advance:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">EmitCode::reserve_label</span><button class="popup" onclick="togglePopup('usagePopup26')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup26">Usage of <span class="code-font"><span class="function-syntax">EmitCode::reserve_label</span></span>:<br/>General Parsing Routines - <a href="2-gpr.html#SP4">&#167;4</a><br/>Literal Patterns - <a href="5-lp.html#SP4_2">&#167;4.2</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP14_3">&#167;14.3</a>, <a href="7-cgl.html#SP14_5_1">&#167;14.5.1</a><br/>Command Grammar Tokens - <a href="7-cgt.html#SP1_2_4">&#167;1.2.4</a>, <a href="7-cgt.html#SP1_2_5">&#167;1.2.5</a>, <a href="7-cgt.html#SP1_2_10">&#167;1.2.10</a><br/>Kind GPRs - <a href="7-kg.html#SP5_1_1_1">&#167;5.1.1.1</a><br/>Parse Name Properties - <a href="7-pnp.html#SP10">&#167;10</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">identifier</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">Produce::reserve_label</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">identifier</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">EmitCode::place_label</span><button class="popup" onclick="togglePopup('usagePopup27')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup27">Usage of <span class="code-font"><span class="function-syntax">EmitCode::place_label</span></span>:<br/>Literal Patterns - <a href="5-lp.html#SP4_2">&#167;4.2</a>, <a href="5-lp.html#SP4_2_1">&#167;4.2.1</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP6_5">&#167;6.5</a>, <a href="7-cgl.html#SP6_6">&#167;6.6</a>, <a href="7-cgl.html#SP6_8">&#167;6.8</a>, <a href="7-cgl.html#SP14_3">&#167;14.3</a>, <a href="7-cgl.html#SP14_5">&#167;14.5</a><br/>Command Grammar Tokens - <a href="7-cgt.html#SP1_2_4">&#167;1.2.4</a>, <a href="7-cgt.html#SP1_2_5">&#167;1.2.5</a>, <a href="7-cgt.html#SP1_2_10_1_1_1">&#167;1.2.10.1.1.1</a><br/>Kind GPRs - <a href="7-kg.html#SP5_1_1_1">&#167;5.1.1.1</a><br/>Parse Name Properties - <a href="7-pnp.html#SP5">&#167;5</a>, <a href="7-pnp.html#SP10">&#167;10</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lab_s</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::place_label</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">lab_s</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">EmitCode::lab</span><button class="popup" onclick="togglePopup('usagePopup28')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup28">Usage of <span class="code-font"><span class="function-syntax">EmitCode::lab</span></span>:<br/>Literal Patterns - <a href="5-lp.html#SP4_2_1">&#167;4.2.1</a>, <a href="5-lp.html#SP4_2_1_1">&#167;4.2.1.1</a>, <a href="5-lp.html#SP4_2_1_2">&#167;4.2.1.2</a>, <a href="5-lp.html#SP4_2_1_3">&#167;4.2.1.3</a>, <a href="5-lp.html#SP4_2_1_3_1">&#167;4.2.1.3.1</a>, <a href="5-lp.html#SP4_2_1_3_2">&#167;4.2.1.3.2</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP10">&#167;10</a>, <a href="7-cgl.html#SP14_5_1">&#167;14.5.1</a><br/>Command Grammar Tokens - <a href="7-cgt.html#SP1_1_1_1">&#167;1.1.1.1</a>, <a href="7-cgt.html#SP1_2_4">&#167;1.2.4</a>, <a href="7-cgt.html#SP1_2_5">&#167;1.2.5</a>, <a href="7-cgt.html#SP1_2_10_1_1_1">&#167;1.2.10.1.1.1</a><br/>Kind GPRs - <a href="7-kg.html#SP5_1_1_1">&#167;5.1.1.1</a><br/>Parse Name Properties - <a href="7-pnp.html#SP10_2">&#167;10.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::lab</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">L</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-emt.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-hrr.html">hrr</a></li><li class="progresssection"><a href="2-ni.html">ni</a></li><li class="progresssection"><a href="2-cu.html">cu</a></li><li class="progresssection"><a href="2-emt.html">emt</a></li><li class="progresscurrent">ec</li><li class="progresssection"><a href="2-ea.html">ea</a></li><li class="progresssection"><a href="2-int.html">int</a></li><li class="progresssection"><a href="2-sv.html">sv</a></li><li class="progresssection"><a href="2-th.html">th</a></li><li class="progresssection"><a href="2-dv.html">dv</a></li><li class="progresssection"><a href="2-es.html">es</a></li><li class="progresssection"><a href="2-ic.html">ic</a></li><li class="progresssection"><a href="2-kd.html">kd</a></li><li class="progresssection"><a href="2-sc.html">sc</a></li><li class="progresssection"><a href="2-hnae.html">hnae</a></li><li class="progresssection"><a href="2-sn.html">sn</a></li><li class="progresssection"><a href="2-gpr.html">gpr</a></li><li class="progresschapter"><a href="3-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresschapter"><a href="7-cg.html">7</a></li><li class="progressnext"><a href="2-ea.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>
</body>
</html>