mirror of
https://github.com/ganelson/inform.git
synced 2024-07-16 22:14:23 +03:00
343 lines
128 KiB
HTML
343 lines
128 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="../index.html">home</a></li>
|
|
</ul><h2>Compiler</h2><ul>
|
|
<li><a href="../structure.html">structure</a></li>
|
|
<li><a href="../inbuildn.html">inbuild</a></li>
|
|
<li><a href="../inform7n.html">inform7</a></li>
|
|
<li><a href="../intern.html">inter</a></li>
|
|
<li><a href="../services.html">services</a></li>
|
|
<li><a href="../secrets.html">secrets</a></li>
|
|
</ul><h2>Other Tools</h2><ul>
|
|
<li><a href="../inblorbn.html">inblorb</a></li>
|
|
<li><a href="../indocn.html">indoc</a></li>
|
|
<li><a href="../inform6.html">inform6</a></li>
|
|
<li><a href="../inpolicyn.html">inpolicy</a></li>
|
|
<li><a href="../inrtpsn.html">inrtps</a></li>
|
|
</ul><h2>Resources</h2><ul>
|
|
<li><a href="../extensions.html">extensions</a></li>
|
|
<li><a href="../kits.html">kits</a></li>
|
|
</ul><h2>Repository</h2><ul>
|
|
<li><a href="https://github.com/ganelson/inform"><img src="../docs-assets/github.png" height=18> github</a></li>
|
|
</ul><h2>Related Projects</h2><ul>
|
|
<li><a href="../../../inweb/index.html">inweb</a></li>
|
|
<li><a href="../../../intest/index.html">intest</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="../inform7n.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">§1. Introduction</a></li><li><a href="2-ec.html#SP2">§2. Where bytecode comes out</a></li><li><a href="2-ec.html#SP5">§5. Structural</a></li><li><a href="2-ec.html#SP6">§6. Comments</a></li><li><a href="2-ec.html#SP7">§7. In value context</a></li><li><a href="2-ec.html#SP8">§8. Either/or property testing</a></li><li><a href="2-ec.html#SP9">§9. Casts</a></li><li><a href="2-ec.html#SP12">§12. In reference context</a></li><li><a href="2-ec.html#SP13">§13. Invocations</a></li><li><a href="2-ec.html#SP16">§16. Labels</a></li></ul><hr class="tocbar">
|
|
|
|
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§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>§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">§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>§3. </b>These should always be used in ways guaranteed to match:
|
|
</p>
|
|
|
|
<ul class="items"><li>● <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>● <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">§8</a><br/>Shared Variables - <a href="2-sv.html#SP1">§1</a>, <a href="2-sv.html#SP1_1">§1.1</a>, <a href="2-sv.html#SP1_2">§1.2</a><br/>The Heap - <a href="2-th.html#SP5">§5</a><br/>Showme Command - <a href="2-sc.html#SP2">§2</a>, <a href="2-sc.html#SP3">§3</a>, <a href="2-sc.html#SP4">§4</a>, <a href="2-sc.html#SP4_2">§4.2</a>, <a href="2-sc.html#SP6_1">§6.1</a>, <a href="2-sc.html#SP6_1_1">§6.1.1</a>, <a href="2-sc.html#SP6_1_1_1">§6.1.1.1</a>, <a href="2-sc.html#SP6_2">§6.2</a>, <a href="2-sc.html#SP6_2_1">§6.2.1</a><br/>Short Names - <a href="2-sn.html#SP4">§4</a>, <a href="2-sn.html#SP4_1">§4.1</a>, <a href="2-sn.html#SP4_2">§4.2</a><br/>Text Substitutions - <a href="4-ts.html#SP2_1">§2.1</a>, <a href="4-ts.html#SP7_2">§7.2</a><br/>Responses - <a href="4-rsp.html#SP4">§4</a>, <a href="4-rsp.html#SP6">§6</a>, <a href="4-rsp.html#SP7_1">§7.1</a><br/>Box Quotations - <a href="4-bq.html#SP2">§2</a><br/>Group Together - <a href="4-gt.html#SP3">§3</a><br/>Looping Over Scope - <a href="4-los.html#SP3">§3</a><br/>Adjectives - <a href="5-adj.html#SP6_1_2">§6.1.2</a>, <a href="5-adj.html#SP8">§8</a>, <a href="5-adj.html#SP9">§9</a>, <a href="5-adj.html#SP14">§14</a>, <a href="5-adj.html#SP15">§15</a><br/>Chronology - <a href="5-chr.html#SP3_4">§3.4</a>, <a href="5-chr.html#SP4_1">§4.1</a>, <a href="5-chr.html#SP5">§5</a>, <a href="5-chr.html#SP7_2">§7.2</a>, <a href="5-chr.html#SP8">§8</a><br/>Conjugations - <a href="5-cnj.html#SP7">§7</a>, <a href="5-cnj.html#SP8">§8</a>, <a href="5-cnj.html#SP12_1">§12.1</a>, <a href="5-cnj.html#SP7_2">§7.2</a>, <a href="5-cnj.html#SP7_2_1">§7.2.1</a>, <a href="5-cnj.html#SP7_2_2">§7.2.2</a>, <a href="5-cnj.html#SP13">§13</a><br/>Instances - <a href="5-ins.html#SP5">§5</a><br/>Backdrop Instances - <a href="5-bi.html#SP2_1">§2.1</a><br/>Door Instances - <a href="5-di.html#SP3">§3</a>, <a href="5-di.html#SP5">§5</a><br/>Region Instances - <a href="5-ri.html#SP2">§2</a><br/>Scene Instances - <a href="5-si.html#SP3_1">§3.1</a>, <a href="5-si.html#SP4">§4</a>, <a href="5-si.html#SP4_2">§4.2</a>, <a href="5-si.html#SP4_3">§4.3</a>, <a href="5-si.html#SP6_1">§6.1</a>, <a href="5-si.html#SP6_2">§6.2</a>, <a href="5-si.html#SP6_3">§6.3</a>, <a href="5-si.html#SP6_4">§6.4</a>, <a href="5-si.html#SP6_5">§6.5</a>, <a href="5-si.html#SP7">§7</a>, <a href="5-si.html#SP7_1">§7.1</a>, <a href="5-si.html#SP7_2">§7.2</a>, <a href="5-si.html#SP7_2_1">§7.2.1</a>, <a href="5-si.html#SP8">§8</a><br/>Dialogue Beat Instances - <a href="5-dbi.html#SP2_6_1">§2.6.1</a>, <a href="5-dbi.html#SP2_6_1_1">§2.6.1.1</a>, <a href="5-dbi.html#SP2_6_2_1">§2.6.2.1</a>, <a href="5-dbi.html#SP2_6_3">§2.6.3</a>, <a href="5-dbi.html#SP2_7_1">§2.7.1</a><br/>Dialogue - <a href="5-dli.html#SP3_10_1">§3.10.1</a>, <a href="5-dli.html#SP3_11">§3.11</a>, <a href="5-dli.html#SP3_12">§3.12</a>, <a href="5-dli.html#SP3_13">§3.13</a>, <a href="5-dli.html#SP3_14">§3.14</a>, <a href="5-dli.html#SP3_14_3">§3.14.3</a><br/>Dialogue Choice Instances - <a href="5-dci.html#SP3_5_1">§3.5.1</a>, <a href="5-dci.html#SP3_6">§3.6</a><br/>Rules - <a href="5-rls.html#SP12_4">§12.4</a>, <a href="5-rls.html#SP14">§14</a>, <a href="5-rls.html#SP14_2">§14.2</a>, <a href="5-rls.html#SP15">§15</a>, <a href="5-rls.html#SP15_1">§15.1</a>, <a href="5-rls.html#SP17_3">§17.3</a>, <a href="5-rls.html#SP17_4">§17.4</a>, <a href="5-rls.html#SP15_2_1">§15.2.1</a>, <a href="5-rls.html#SP17_2_1">§17.2.1</a><br/>Rulebooks - <a href="5-rlb.html#SP8_4_1_1">§8.4.1.1</a>, <a href="5-rlb.html#SP8_4_1_2">§8.4.1.2</a>, <a href="5-rlb.html#SP8_4_1_3">§8.4.1.3</a>, <a href="5-rlb.html#SP8_4_1_4">§8.4.1.4</a>, <a href="5-rlb.html#SP8_4_1_5">§8.4.1.5</a>, <a href="5-rlb.html#SP8_4_1_3_1">§8.4.1.3.1</a>, <a href="5-rlb.html#SP16">§16</a><br/>Variables - <a href="5-vrb.html#SP8">§8</a>, <a href="5-vrb.html#SP14_1">§14.1</a><br/>Relations - <a href="5-rlt.html#SP6_1">§6.1</a>, <a href="5-rlt.html#SP6_2">§6.2</a>, <a href="5-rlt.html#SP6_4">§6.4</a>, <a href="5-rlt.html#SP6_4_1">§6.4.1</a>, <a href="5-rlt.html#SP6_4_4">§6.4.4</a>, <a href="5-rlt.html#SP6_4_5">§6.4.5</a>, <a href="5-rlt.html#SP6_4_5_1">§6.4.5.1</a>, <a href="5-rlt.html#SP6_4_6">§6.4.6</a>, <a href="5-rlt.html#SP6_4_7">§6.4.7</a>, <a href="5-rlt.html#SP6_4_8">§6.4.8</a>, <a href="5-rlt.html#SP6_4_9">§6.4.9</a>, <a href="5-rlt.html#SP6_4_10">§6.4.10</a>, <a href="5-rlt.html#SP6_4_11">§6.4.11</a>, <a href="5-rlt.html#SP6_4_12">§6.4.12</a>, <a href="5-rlt.html#SP6_4_9_1">§6.4.9.1</a>, <a href="5-rlt.html#SP6_4_10_1">§6.4.10.1</a>, <a href="5-rlt.html#SP6_4_12_1">§6.4.12.1</a>, <a href="5-rlt.html#SP19_1">§19.1</a>, <a href="5-rlt.html#SP19_2">§19.2</a>, <a href="5-rlt.html#SP19_3">§19.3</a>, <a href="5-rlt.html#SP19_4">§19.4</a>, <a href="5-rlt.html#SP19_5">§19.5</a>, <a href="5-rlt.html#SP20">§20</a>, <a href="5-rlt.html#SP21">§21</a><br/>Literal Patterns - <a href="5-lp.html#SP4_1_1">§4.1.1</a>, <a href="5-lp.html#SP4_1_1_1">§4.1.1.1</a>, <a href="5-lp.html#SP4_1_1_2">§4.1.1.2</a>, <a href="5-lp.html#SP4_1_1_3">§4.1.1.3</a>, <a href="5-lp.html#SP4_1_1_4">§4.1.1.4</a>, <a href="5-lp.html#SP4_2">§4.2</a>, <a href="5-lp.html#SP4_2_1">§4.2.1</a>, <a href="5-lp.html#SP4_2_1_1">§4.2.1.1</a>, <a href="5-lp.html#SP4_2_1_2">§4.2.1.2</a>, <a href="5-lp.html#SP4_2_1_3">§4.2.1.3</a>, <a href="5-lp.html#SP4_2_1_3_1">§4.2.1.3.1</a>, <a href="5-lp.html#SP4_2_1_3_1_1">§4.2.1.3.1.1</a>, <a href="5-lp.html#SP4_2_1_3_2">§4.2.1.3.2</a>, <a href="5-lp.html#SP4_2_1_2_1">§4.2.1.2.1</a>, <a href="5-lp.html#SP4_2_1_2_2">§4.2.1.2.2</a>, <a href="5-lp.html#SP5">§5</a>, <a href="5-lp.html#SP5_2">§5.2</a><br/>Kind Constructors - <a href="5-kc.html#SP10">§10</a>, <a href="5-kc.html#SP10_8">§10.8</a>, <a href="5-kc.html#SP10_8_1">§10.8.1</a>, <a href="5-kc.html#SP10_8_2">§10.8.2</a>, <a href="5-kc.html#SP10_8_3">§10.8.3</a>, <a href="5-kc.html#SP10_8_4_1">§10.8.4.1</a>, <a href="5-kc.html#SP10_8_4_2">§10.8.4.2</a>, <a href="5-kc.html#SP10_8_5">§10.8.5</a>, <a href="5-kc.html#SP10_8_5_1">§10.8.5.1</a><br/>Kind IDs - <a href="5-ki.html#SP10">§10</a><br/>Actions - <a href="5-act2.html#SP8_5">§8.5</a>, <a href="5-act2.html#SP8_6">§8.6</a>, <a href="5-act2.html#SP8_6_1">§8.6.1</a>, <a href="5-act2.html#SP9">§9</a><br/>Named Action Patterns - <a href="5-nap.html#SP3">§3</a><br/>Command Grammars - <a href="7-cg.html#SP10">§10</a>, <a href="7-cg.html#SP12">§12</a>, <a href="7-cg.html#SP13">§13</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP6_2">§6.2</a>, <a href="7-cgl.html#SP6_5">§6.5</a>, <a href="7-cgl.html#SP6_6">§6.6</a>, <a href="7-cgl.html#SP6_8">§6.8</a>, <a href="7-cgl.html#SP7">§7</a>, <a href="7-cgl.html#SP9">§9</a>, <a href="7-cgl.html#SP10">§10</a>, <a href="7-cgl.html#SP11">§11</a>, <a href="7-cgl.html#SP13">§13</a>, <a href="7-cgl.html#SP14_3">§14.3</a>, <a href="7-cgl.html#SP14_5">§14.5</a>, <a href="7-cgl.html#SP14_5_1">§14.5.1</a><br/>Command Grammar Tokens - <a href="7-cgt.html#SP1_1">§1.1</a>, <a href="7-cgt.html#SP1_1_1">§1.1.1</a>, <a href="7-cgt.html#SP1_1_1_1">§1.1.1.1</a>, <a href="7-cgt.html#SP1_2">§1.2</a>, <a href="7-cgt.html#SP1_2_1">§1.2.1</a>, <a href="7-cgt.html#SP1_2_2">§1.2.2</a>, <a href="7-cgt.html#SP1_2_3">§1.2.3</a>, <a href="7-cgt.html#SP1_2_4">§1.2.4</a>, <a href="7-cgt.html#SP1_2_5">§1.2.5</a>, <a href="7-cgt.html#SP1_2_6">§1.2.6</a>, <a href="7-cgt.html#SP1_2_7">§1.2.7</a>, <a href="7-cgt.html#SP1_2_8">§1.2.8</a>, <a href="7-cgt.html#SP1_2_9">§1.2.9</a>, <a href="7-cgt.html#SP1_2_10_1_1">§1.2.10.1.1</a>, <a href="7-cgt.html#SP1_2_10_2_1">§1.2.10.2.1</a>, <a href="7-cgt.html#SP1_2_10_2_2">§1.2.10.2.2</a>, <a href="7-cgt.html#SP1_2_10_1_1_1">§1.2.10.1.1.1</a>, <a href="7-cgt.html#SP1_3">§1.3</a>, <a href="7-cgt.html#SP1_4_1">§1.4.1</a>, <a href="7-cgt.html#SP1_4_2">§1.4.2</a>, <a href="7-cgt.html#SP1_4_3">§1.4.3</a>, <a href="7-cgt.html#SP1_5">§1.5</a>, <a href="7-cgt.html#SP1_6">§1.6</a><br/>Kind GPRs - <a href="7-kg.html#SP1_1">§1.1</a>, <a href="7-kg.html#SP1_2">§1.2</a>, <a href="7-kg.html#SP4">§4</a>, <a href="7-kg.html#SP4_1">§4.1</a>, <a href="7-kg.html#SP4_3">§4.3</a>, <a href="7-kg.html#SP4_4">§4.4</a>, <a href="7-kg.html#SP5_1_1_1">§5.1.1.1</a>, <a href="7-kg.html#SP5_1_1_2">§5.1.1.2</a>, <a href="7-kg.html#SP5_1_1_3">§5.1.1.3</a><br/>Noun Filter Tokens - <a href="7-nft.html#SP3_1">§3.1</a>, <a href="7-nft.html#SP3_2">§3.2</a>, <a href="7-nft.html#SP3_3">§3.3</a>, <a href="7-nft.html#SP4">§4</a><br/>Parse Name Properties - <a href="7-pnp.html#SP4">§4</a>, <a href="7-pnp.html#SP4_1">§4.1</a>, <a href="7-pnp.html#SP4_2">§4.2</a>, <a href="7-pnp.html#SP4_3">§4.3</a>, <a href="7-pnp.html#SP4_3_1">§4.3.1</a>, <a href="7-pnp.html#SP4_4">§4.4</a>, <a href="7-pnp.html#SP4_5">§4.5</a>, <a href="7-pnp.html#SP5">§5</a>, <a href="7-pnp.html#SP6">§6</a>, <a href="7-pnp.html#SP6_2">§6.2</a>, <a href="7-pnp.html#SP6_3">§6.3</a>, <a href="7-pnp.html#SP6_4">§6.4</a>, <a href="7-pnp.html#SP6_5">§6.5</a>, <a href="7-pnp.html#SP6_6">§6.6</a>, <a href="7-pnp.html#SP7_1">§7.1</a>, <a href="7-pnp.html#SP8">§8</a>, <a href="7-pnp.html#SP8_1">§8.1</a>, <a href="7-pnp.html#SP9">§9</a>, <a href="7-pnp.html#SP10">§10</a>, <a href="7-pnp.html#SP10_1">§10.1</a>, <a href="7-pnp.html#SP10_2">§10.2</a>, <a href="7-pnp.html#SP11">§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">§8</a>, <a href="2-ec.html#SP11">§11</a><br/>Shared Variables - <a href="2-sv.html#SP1">§1</a>, <a href="2-sv.html#SP1_1">§1.1</a>, <a href="2-sv.html#SP1_2">§1.2</a><br/>The Heap - <a href="2-th.html#SP5">§5</a><br/>Showme Command - <a href="2-sc.html#SP2">§2</a>, <a href="2-sc.html#SP3">§3</a>, <a href="2-sc.html#SP4">§4</a>, <a href="2-sc.html#SP4_2">§4.2</a>, <a href="2-sc.html#SP6_1">§6.1</a>, <a href="2-sc.html#SP6_1_1">§6.1.1</a>, <a href="2-sc.html#SP6_1_1_1">§6.1.1.1</a>, <a href="2-sc.html#SP6_2">§6.2</a>, <a href="2-sc.html#SP6_2_1">§6.2.1</a><br/>Short Names - <a href="2-sn.html#SP4">§4</a>, <a href="2-sn.html#SP4_1">§4.1</a>, <a href="2-sn.html#SP4_2">§4.2</a><br/>Text Substitutions - <a href="4-ts.html#SP2_1">§2.1</a>, <a href="4-ts.html#SP7_2">§7.2</a><br/>Responses - <a href="4-rsp.html#SP6">§6</a>, <a href="4-rsp.html#SP7_1">§7.1</a><br/>Box Quotations - <a href="4-bq.html#SP2">§2</a><br/>Group Together - <a href="4-gt.html#SP3">§3</a><br/>Looping Over Scope - <a href="4-los.html#SP3">§3</a><br/>Adjectives - <a href="5-adj.html#SP6_1_2">§6.1.2</a>, <a href="5-adj.html#SP8">§8</a>, <a href="5-adj.html#SP9">§9</a>, <a href="5-adj.html#SP14">§14</a>, <a href="5-adj.html#SP15">§15</a><br/>Chronology - <a href="5-chr.html#SP3_4">§3.4</a>, <a href="5-chr.html#SP4_1">§4.1</a>, <a href="5-chr.html#SP5">§5</a>, <a href="5-chr.html#SP7_2">§7.2</a>, <a href="5-chr.html#SP8">§8</a><br/>Conjugations - <a href="5-cnj.html#SP7">§7</a>, <a href="5-cnj.html#SP8">§8</a>, <a href="5-cnj.html#SP12_1">§12.1</a>, <a href="5-cnj.html#SP7_2">§7.2</a>, <a href="5-cnj.html#SP7_2_1">§7.2.1</a>, <a href="5-cnj.html#SP7_2_2">§7.2.2</a>, <a href="5-cnj.html#SP13">§13</a><br/>Instances - <a href="5-ins.html#SP5">§5</a><br/>Backdrop Instances - <a href="5-bi.html#SP2_1">§2.1</a><br/>Door Instances - <a href="5-di.html#SP3">§3</a>, <a href="5-di.html#SP5">§5</a><br/>Region Instances - <a href="5-ri.html#SP2">§2</a><br/>Scene Instances - <a href="5-si.html#SP3_1">§3.1</a>, <a href="5-si.html#SP4">§4</a>, <a href="5-si.html#SP4_2">§4.2</a>, <a href="5-si.html#SP4_3">§4.3</a>, <a href="5-si.html#SP6_1">§6.1</a>, <a href="5-si.html#SP6_2">§6.2</a>, <a href="5-si.html#SP6_3">§6.3</a>, <a href="5-si.html#SP6_4">§6.4</a>, <a href="5-si.html#SP6_5">§6.5</a>, <a href="5-si.html#SP7">§7</a>, <a href="5-si.html#SP7_1">§7.1</a>, <a href="5-si.html#SP7_2">§7.2</a>, <a href="5-si.html#SP7_2_1">§7.2.1</a>, <a href="5-si.html#SP8">§8</a><br/>Dialogue Beat Instances - <a href="5-dbi.html#SP2_6_1">§2.6.1</a>, <a href="5-dbi.html#SP2_6_1_1">§2.6.1.1</a>, <a href="5-dbi.html#SP2_6_2_1">§2.6.2.1</a>, <a href="5-dbi.html#SP2_6_3">§2.6.3</a>, <a href="5-dbi.html#SP2_7_1">§2.7.1</a><br/>Dialogue - <a href="5-dli.html#SP3_10_1">§3.10.1</a>, <a href="5-dli.html#SP3_11">§3.11</a>, <a href="5-dli.html#SP3_12">§3.12</a>, <a href="5-dli.html#SP3_13">§3.13</a>, <a href="5-dli.html#SP3_14">§3.14</a>, <a href="5-dli.html#SP3_14_3">§3.14.3</a><br/>Dialogue Choice Instances - <a href="5-dci.html#SP3_5_1">§3.5.1</a>, <a href="5-dci.html#SP3_6">§3.6</a><br/>Rules - <a href="5-rls.html#SP12_4">§12.4</a>, <a href="5-rls.html#SP14">§14</a>, <a href="5-rls.html#SP14_2">§14.2</a>, <a href="5-rls.html#SP15">§15</a>, <a href="5-rls.html#SP17_1">§17.1</a>, <a href="5-rls.html#SP15_1">§15.1</a>, <a href="5-rls.html#SP17_3">§17.3</a>, <a href="5-rls.html#SP17_4">§17.4</a>, <a href="5-rls.html#SP15_2">§15.2</a>, <a href="5-rls.html#SP15_2_1">§15.2.1</a>, <a href="5-rls.html#SP17_2_1">§17.2.1</a><br/>Rulebooks - <a href="5-rlb.html#SP8_4_1_1">§8.4.1.1</a>, <a href="5-rlb.html#SP8_4_1_2">§8.4.1.2</a>, <a href="5-rlb.html#SP8_4_1_3">§8.4.1.3</a>, <a href="5-rlb.html#SP8_4_1_4">§8.4.1.4</a>, <a href="5-rlb.html#SP8_4_1_5">§8.4.1.5</a>, <a href="5-rlb.html#SP8_4_1_3_1">§8.4.1.3.1</a>, <a href="5-rlb.html#SP16">§16</a><br/>Variables - <a href="5-vrb.html#SP8">§8</a>, <a href="5-vrb.html#SP14_1">§14.1</a><br/>Relations - <a href="5-rlt.html#SP6_1">§6.1</a>, <a href="5-rlt.html#SP6_2">§6.2</a>, <a href="5-rlt.html#SP6_4">§6.4</a>, <a href="5-rlt.html#SP6_4_1">§6.4.1</a>, <a href="5-rlt.html#SP6_4_4">§6.4.4</a>, <a href="5-rlt.html#SP6_4_5">§6.4.5</a>, <a href="5-rlt.html#SP6_4_5_1">§6.4.5.1</a>, <a href="5-rlt.html#SP6_4_6">§6.4.6</a>, <a href="5-rlt.html#SP6_4_7">§6.4.7</a>, <a href="5-rlt.html#SP6_4_8">§6.4.8</a>, <a href="5-rlt.html#SP6_4_9">§6.4.9</a>, <a href="5-rlt.html#SP6_4_10">§6.4.10</a>, <a href="5-rlt.html#SP6_4_11">§6.4.11</a>, <a href="5-rlt.html#SP6_4_12">§6.4.12</a>, <a href="5-rlt.html#SP6_4_9_1">§6.4.9.1</a>, <a href="5-rlt.html#SP6_4_10_1">§6.4.10.1</a>, <a href="5-rlt.html#SP6_4_12_1">§6.4.12.1</a>, <a href="5-rlt.html#SP19_1">§19.1</a>, <a href="5-rlt.html#SP19_2">§19.2</a>, <a href="5-rlt.html#SP19_3">§19.3</a>, <a href="5-rlt.html#SP19_4">§19.4</a>, <a href="5-rlt.html#SP19_5">§19.5</a>, <a href="5-rlt.html#SP20">§20</a>, <a href="5-rlt.html#SP21">§21</a><br/>Literal Patterns - <a href="5-lp.html#SP4_1_1">§4.1.1</a>, <a href="5-lp.html#SP4_1_1_1">§4.1.1.1</a>, <a href="5-lp.html#SP4_1_1_2">§4.1.1.2</a>, <a href="5-lp.html#SP4_1_1_3">§4.1.1.3</a>, <a href="5-lp.html#SP4_1_1_4">§4.1.1.4</a>, <a href="5-lp.html#SP4_2">§4.2</a>, <a href="5-lp.html#SP4_2_1">§4.2.1</a>, <a href="5-lp.html#SP4_2_1_1">§4.2.1.1</a>, <a href="5-lp.html#SP4_2_1_2">§4.2.1.2</a>, <a href="5-lp.html#SP4_2_1_3">§4.2.1.3</a>, <a href="5-lp.html#SP4_2_1_3_1">§4.2.1.3.1</a>, <a href="5-lp.html#SP4_2_1_3_1_1">§4.2.1.3.1.1</a>, <a href="5-lp.html#SP4_2_1_3_2">§4.2.1.3.2</a>, <a href="5-lp.html#SP4_2_1_2_1">§4.2.1.2.1</a>, <a href="5-lp.html#SP4_2_1_2_2">§4.2.1.2.2</a>, <a href="5-lp.html#SP5">§5</a>, <a href="5-lp.html#SP5_2">§5.2</a><br/>Kind Constructors - <a href="5-kc.html#SP10">§10</a>, <a href="5-kc.html#SP10_8">§10.8</a>, <a href="5-kc.html#SP10_8_1">§10.8.1</a>, <a href="5-kc.html#SP10_8_2">§10.8.2</a>, <a href="5-kc.html#SP10_8_3">§10.8.3</a>, <a href="5-kc.html#SP10_8_4_1">§10.8.4.1</a>, <a href="5-kc.html#SP10_8_4_2">§10.8.4.2</a>, <a href="5-kc.html#SP10_8_5">§10.8.5</a>, <a href="5-kc.html#SP10_8_5_1">§10.8.5.1</a><br/>Kind IDs - <a href="5-ki.html#SP10">§10</a><br/>Actions - <a href="5-act2.html#SP8_5">§8.5</a>, <a href="5-act2.html#SP8_6">§8.6</a>, <a href="5-act2.html#SP8_6_1">§8.6.1</a>, <a href="5-act2.html#SP9">§9</a><br/>Named Action Patterns - <a href="5-nap.html#SP3">§3</a><br/>Command Grammars - <a href="7-cg.html#SP10">§10</a>, <a href="7-cg.html#SP12">§12</a>, <a href="7-cg.html#SP13">§13</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP6_2">§6.2</a>, <a href="7-cgl.html#SP6_5">§6.5</a>, <a href="7-cgl.html#SP6_6">§6.6</a>, <a href="7-cgl.html#SP6_8">§6.8</a>, <a href="7-cgl.html#SP7">§7</a>, <a href="7-cgl.html#SP9">§9</a>, <a href="7-cgl.html#SP10">§10</a>, <a href="7-cgl.html#SP11">§11</a>, <a href="7-cgl.html#SP13">§13</a>, <a href="7-cgl.html#SP14_3">§14.3</a>, <a href="7-cgl.html#SP14_5">§14.5</a>, <a href="7-cgl.html#SP14_5_1">§14.5.1</a><br/>Command Grammar Tokens - <a href="7-cgt.html#SP1_1">§1.1</a>, <a href="7-cgt.html#SP1_1_1">§1.1.1</a>, <a href="7-cgt.html#SP1_1_1_1">§1.1.1.1</a>, <a href="7-cgt.html#SP1_2">§1.2</a>, <a href="7-cgt.html#SP1_2_1">§1.2.1</a>, <a href="7-cgt.html#SP1_2_2">§1.2.2</a>, <a href="7-cgt.html#SP1_2_3">§1.2.3</a>, <a href="7-cgt.html#SP1_2_4">§1.2.4</a>, <a href="7-cgt.html#SP1_2_5">§1.2.5</a>, <a href="7-cgt.html#SP1_2_6">§1.2.6</a>, <a href="7-cgt.html#SP1_2_7">§1.2.7</a>, <a href="7-cgt.html#SP1_2_8">§1.2.8</a>, <a href="7-cgt.html#SP1_2_9">§1.2.9</a>, <a href="7-cgt.html#SP1_2_10_1_1">§1.2.10.1.1</a>, <a href="7-cgt.html#SP1_2_10_2_1">§1.2.10.2.1</a>, <a href="7-cgt.html#SP1_2_10_2_2">§1.2.10.2.2</a>, <a href="7-cgt.html#SP1_2_10_1_1_1">§1.2.10.1.1.1</a>, <a href="7-cgt.html#SP1_3">§1.3</a>, <a href="7-cgt.html#SP1_4_1">§1.4.1</a>, <a href="7-cgt.html#SP1_4_2">§1.4.2</a>, <a href="7-cgt.html#SP1_4_3">§1.4.3</a>, <a href="7-cgt.html#SP1_5">§1.5</a>, <a href="7-cgt.html#SP1_6">§1.6</a><br/>Kind GPRs - <a href="7-kg.html#SP1_1">§1.1</a>, <a href="7-kg.html#SP1_2">§1.2</a>, <a href="7-kg.html#SP4">§4</a>, <a href="7-kg.html#SP4_1">§4.1</a>, <a href="7-kg.html#SP4_3">§4.3</a>, <a href="7-kg.html#SP4_4">§4.4</a>, <a href="7-kg.html#SP5_1_1_1">§5.1.1.1</a>, <a href="7-kg.html#SP5_1_1_2">§5.1.1.2</a><br/>Noun Filter Tokens - <a href="7-nft.html#SP3_1">§3.1</a>, <a href="7-nft.html#SP3_2">§3.2</a>, <a href="7-nft.html#SP3_3">§3.3</a>, <a href="7-nft.html#SP4">§4</a><br/>Parse Name Properties - <a href="7-pnp.html#SP4">§4</a>, <a href="7-pnp.html#SP4_1">§4.1</a>, <a href="7-pnp.html#SP4_2">§4.2</a>, <a href="7-pnp.html#SP4_3">§4.3</a>, <a href="7-pnp.html#SP4_3_1">§4.3.1</a>, <a href="7-pnp.html#SP4_4">§4.4</a>, <a href="7-pnp.html#SP4_5">§4.5</a>, <a href="7-pnp.html#SP5">§5</a>, <a href="7-pnp.html#SP6">§6</a>, <a href="7-pnp.html#SP6_2">§6.2</a>, <a href="7-pnp.html#SP6_3">§6.3</a>, <a href="7-pnp.html#SP6_4">§6.4</a>, <a href="7-pnp.html#SP6_5">§6.5</a>, <a href="7-pnp.html#SP6_6">§6.6</a>, <a href="7-pnp.html#SP8">§8</a>, <a href="7-pnp.html#SP8_1">§8.1</a>, <a href="7-pnp.html#SP9">§9</a>, <a href="7-pnp.html#SP10">§10</a>, <a href="7-pnp.html#SP10_1">§10.1</a>, <a href="7-pnp.html#SP10_2">§10.2</a>, <a href="7-pnp.html#SP11">§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>§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">§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>§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">§1</a><br/>Showme Command - <a href="2-sc.html#SP2">§2</a>, <a href="2-sc.html#SP3">§3</a>, <a href="2-sc.html#SP4">§4</a>, <a href="2-sc.html#SP4_2">§4.2</a>, <a href="2-sc.html#SP6_1">§6.1</a>, <a href="2-sc.html#SP6_1_1">§6.1.1</a>, <a href="2-sc.html#SP6_2">§6.2</a>, <a href="2-sc.html#SP6_2_1">§6.2.1</a><br/>Short Names - <a href="2-sn.html#SP4_1">§4.1</a><br/>Text Substitutions - <a href="4-ts.html#SP7_2">§7.2</a><br/>Responses - <a href="4-rsp.html#SP7_1">§7.1</a><br/>Box Quotations - <a href="4-bq.html#SP2">§2</a><br/>Group Together - <a href="4-gt.html#SP3">§3</a><br/>Looping Over Scope - <a href="4-los.html#SP3">§3</a><br/>Adjectives - <a href="5-adj.html#SP6_1_2">§6.1.2</a>, <a href="5-adj.html#SP8">§8</a>, <a href="5-adj.html#SP15">§15</a><br/>Chronology - <a href="5-chr.html#SP8">§8</a><br/>Conjugations - <a href="5-cnj.html#SP7">§7</a>, <a href="5-cnj.html#SP12_1">§12.1</a>, <a href="5-cnj.html#SP7_2">§7.2</a>, <a href="5-cnj.html#SP7_2_1">§7.2.1</a>, <a href="5-cnj.html#SP7_2_2">§7.2.2</a>, <a href="5-cnj.html#SP13">§13</a><br/>Backdrop Instances - <a href="5-bi.html#SP2_1">§2.1</a><br/>Door Instances - <a href="5-di.html#SP3">§3</a>, <a href="5-di.html#SP5">§5</a><br/>Region Instances - <a href="5-ri.html#SP2">§2</a><br/>Scene Instances - <a href="5-si.html#SP3_1">§3.1</a>, <a href="5-si.html#SP4">§4</a>, <a href="5-si.html#SP4_2">§4.2</a>, <a href="5-si.html#SP4_3">§4.3</a>, <a href="5-si.html#SP6_1">§6.1</a>, <a href="5-si.html#SP6_4">§6.4</a>, <a href="5-si.html#SP6_5">§6.5</a>, <a href="5-si.html#SP7">§7</a>, <a href="5-si.html#SP7_2">§7.2</a>, <a href="5-si.html#SP7_2_1">§7.2.1</a><br/>Dialogue Beat Instances - <a href="5-dbi.html#SP2_6_1">§2.6.1</a>, <a href="5-dbi.html#SP2_6_1_1">§2.6.1.1</a>, <a href="5-dbi.html#SP2_6_2_1">§2.6.2.1</a>, <a href="5-dbi.html#SP2_6_3">§2.6.3</a>, <a href="5-dbi.html#SP2_7_1">§2.7.1</a><br/>Dialogue - <a href="5-dli.html#SP3_10_1">§3.10.1</a>, <a href="5-dli.html#SP3_11">§3.11</a>, <a href="5-dli.html#SP3_12">§3.12</a>, <a href="5-dli.html#SP3_13">§3.13</a>, <a href="5-dli.html#SP3_14">§3.14</a>, <a href="5-dli.html#SP3_14_3">§3.14.3</a><br/>Dialogue Choice Instances - <a href="5-dci.html#SP3_5_1">§3.5.1</a>, <a href="5-dci.html#SP3_6">§3.6</a><br/>Rules - <a href="5-rls.html#SP14">§14</a>, <a href="5-rls.html#SP15">§15</a>, <a href="5-rls.html#SP17_1">§17.1</a>, <a href="5-rls.html#SP15_1">§15.1</a>, <a href="5-rls.html#SP17_3">§17.3</a>, <a href="5-rls.html#SP17_4">§17.4</a>, <a href="5-rls.html#SP15_2">§15.2</a>, <a href="5-rls.html#SP17_2_1">§17.2.1</a><br/>Rulebooks - <a href="5-rlb.html#SP8_4_1_2">§8.4.1.2</a>, <a href="5-rlb.html#SP8_4_1_3">§8.4.1.3</a>, <a href="5-rlb.html#SP8_4_1_4">§8.4.1.4</a>, <a href="5-rlb.html#SP8_4_1_3_1">§8.4.1.3.1</a>, <a href="5-rlb.html#SP16">§16</a><br/>Relations - <a href="5-rlt.html#SP6_4">§6.4</a>, <a href="5-rlt.html#SP6_4_4">§6.4.4</a>, <a href="5-rlt.html#SP6_4_9">§6.4.9</a>, <a href="5-rlt.html#SP6_4_12">§6.4.12</a>, <a href="5-rlt.html#SP6_4_9_1">§6.4.9.1</a>, <a href="5-rlt.html#SP6_4_10_1">§6.4.10.1</a>, <a href="5-rlt.html#SP6_4_12_1">§6.4.12.1</a>, <a href="5-rlt.html#SP19_1">§19.1</a>, <a href="5-rlt.html#SP19_2">§19.2</a>, <a href="5-rlt.html#SP19_3">§19.3</a>, <a href="5-rlt.html#SP19_4">§19.4</a>, <a href="5-rlt.html#SP19_5">§19.5</a>, <a href="5-rlt.html#SP21">§21</a><br/>Literal Patterns - <a href="5-lp.html#SP4_1_1_3">§4.1.1.3</a>, <a href="5-lp.html#SP4_1_1_4">§4.1.1.4</a>, <a href="5-lp.html#SP4_2_1">§4.2.1</a>, <a href="5-lp.html#SP4_2_1_1">§4.2.1.1</a>, <a href="5-lp.html#SP4_2_1_2">§4.2.1.2</a>, <a href="5-lp.html#SP4_2_1_3">§4.2.1.3</a>, <a href="5-lp.html#SP4_2_1_3_1">§4.2.1.3.1</a>, <a href="5-lp.html#SP4_2_1_3_1_1">§4.2.1.3.1.1</a>, <a href="5-lp.html#SP4_2_1_3_2">§4.2.1.3.2</a>, <a href="5-lp.html#SP4_2_1_2_1">§4.2.1.2.1</a>, <a href="5-lp.html#SP4_2_1_2_2">§4.2.1.2.2</a>, <a href="5-lp.html#SP5">§5</a>, <a href="5-lp.html#SP5_2">§5.2</a><br/>Kind Constructors - <a href="5-kc.html#SP10_8_3">§10.8.3</a>, <a href="5-kc.html#SP10_8_5">§10.8.5</a><br/>Actions - <a href="5-act2.html#SP8_6">§8.6</a><br/>Named Action Patterns - <a href="5-nap.html#SP3">§3</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP6_2">§6.2</a>, <a href="7-cgl.html#SP6_6">§6.6</a>, <a href="7-cgl.html#SP7">§7</a>, <a href="7-cgl.html#SP9">§9</a>, <a href="7-cgl.html#SP10">§10</a>, <a href="7-cgl.html#SP11">§11</a><br/>Command Grammar Tokens - <a href="7-cgt.html#SP1_1_1">§1.1.1</a>, <a href="7-cgt.html#SP1_2_4">§1.2.4</a>, <a href="7-cgt.html#SP1_2_5">§1.2.5</a>, <a href="7-cgt.html#SP1_2_10_1_1">§1.2.10.1.1</a>, <a href="7-cgt.html#SP1_2_10_2_1">§1.2.10.2.1</a>, <a href="7-cgt.html#SP1_2_10_2_2">§1.2.10.2.2</a>, <a href="7-cgt.html#SP1_2_10_1_1_1">§1.2.10.1.1.1</a>, <a href="7-cgt.html#SP1_5">§1.5</a><br/>Kind GPRs - <a href="7-kg.html#SP4">§4</a>, <a href="7-kg.html#SP5_1_1_1">§5.1.1.1</a>, <a href="7-kg.html#SP5_1_1_2">§5.1.1.2</a><br/>Noun Filter Tokens - <a href="7-nft.html#SP3_1">§3.1</a>, <a href="7-nft.html#SP3_2">§3.2</a><br/>Parse Name Properties - <a href="7-pnp.html#SP4">§4</a>, <a href="7-pnp.html#SP4_1">§4.1</a>, <a href="7-pnp.html#SP4_2">§4.2</a>, <a href="7-pnp.html#SP4_3">§4.3</a>, <a href="7-pnp.html#SP4_3_1">§4.3.1</a>, <a href="7-pnp.html#SP6_2">§6.2</a>, <a href="7-pnp.html#SP6_3">§6.3</a>, <a href="7-pnp.html#SP6_4">§6.4</a>, <a href="7-pnp.html#SP6_6">§6.6</a>, <a href="7-pnp.html#SP8">§8</a>, <a href="7-pnp.html#SP10">§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><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::reference</span></span>:<br/>Shared Variables - <a href="2-sv.html#SP1_1">§1.1</a><br/>Box Quotations - <a href="4-bq.html#SP2">§2</a><br/>Scene Instances - <a href="5-si.html#SP6_1">§6.1</a>, <a href="5-si.html#SP6_3">§6.3</a><br/>Rulebooks - <a href="5-rlb.html#SP8_4_1_3">§8.4.1.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
|
<span class="plain-syntax"> </span><span class="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>§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('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">EmitCode::comment</span></span>:<br/>Adjectives - <a href="5-adj.html#SP6_1">§6.1</a><br/>Conjugations - <a href="5-cnj.html#SP12_1">§12.1</a><br/>Rulebooks - <a href="5-rlb.html#SP9">§9</a>, <a href="5-rlb.html#SP10">§10</a><br/>Literal Patterns - <a href="5-lp.html#SP5">§5</a>, <a href="5-lp.html#SP6">§6</a><br/>Kind Constructors - <a href="5-kc.html#SP10_8_1">§10.8.1</a><br/>Parse Name Properties - <a href="7-pnp.html#SP8">§8</a>, <a href="7-pnp.html#SP10">§10</a>, <a href="7-pnp.html#SP11">§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">Produce::guard</span><span class="plain-syntax">(</span><span class="identifier-syntax">CommentInstruction::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="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">,</span>
|
|
<span class="plain-syntax"> (</span><span class="identifier-syntax">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="plain-syntax">}</span>
|
|
</pre>
|
|
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§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('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">EmitCode::val_number</span></span>:<br/>Shared Variables - <a href="2-sv.html#SP1">§1</a><br/>The Heap - <a href="2-th.html#SP5">§5</a><br/>Showme Command - <a href="2-sc.html#SP4_2">§4.2</a>, <a href="2-sc.html#SP6_1_1">§6.1.1</a>, <a href="2-sc.html#SP6_2">§6.2</a>, <a href="2-sc.html#SP6_2_1">§6.2.1</a><br/>Short Names - <a href="2-sn.html#SP4_1">§4.1</a><br/>Responses - <a href="4-rsp.html#SP7_1">§7.1</a><br/>Box Quotations - <a href="4-bq.html#SP2">§2</a><br/>Group Together - <a href="4-gt.html#SP3">§3</a><br/>Adjectives - <a href="5-adj.html#SP8">§8</a>, <a href="5-adj.html#SP9">§9</a><br/>Chronology - <a href="5-chr.html#SP3_4">§3.4</a>, <a href="5-chr.html#SP5">§5</a>, <a href="5-chr.html#SP7_2">§7.2</a><br/>Conjugations - <a href="5-cnj.html#SP7">§7</a>, <a href="5-cnj.html#SP8">§8</a>, <a href="5-cnj.html#SP7_2">§7.2</a>, <a href="5-cnj.html#SP7_2_1">§7.2.1</a>, <a href="5-cnj.html#SP7_2_2">§7.2.2</a>, <a href="5-cnj.html#SP13">§13</a><br/>Scene Instances - <a href="5-si.html#SP3_1">§3.1</a>, <a href="5-si.html#SP4">§4</a>, <a href="5-si.html#SP4_2">§4.2</a>, <a href="5-si.html#SP4_3">§4.3</a>, <a href="5-si.html#SP6_1">§6.1</a>, <a href="5-si.html#SP6_2">§6.2</a>, <a href="5-si.html#SP6_3">§6.3</a>, <a href="5-si.html#SP6_5">§6.5</a>, <a href="5-si.html#SP7">§7</a>, <a href="5-si.html#SP7_1">§7.1</a>, <a href="5-si.html#SP7_2">§7.2</a>, <a href="5-si.html#SP7_2_1">§7.2.1</a>, <a href="5-si.html#SP8">§8</a><br/>Dialogue Beat Instances - <a href="5-dbi.html#SP2_6_1">§2.6.1</a>, <a href="5-dbi.html#SP2_7_1">§2.7.1</a><br/>Dialogue - <a href="5-dli.html#SP3_14">§3.14</a>, <a href="5-dli.html#SP3_14_3">§3.14.3</a><br/>Rules - <a href="5-rls.html#SP14_1">§14.1</a>, <a href="5-rls.html#SP14_2">§14.2</a>, <a href="5-rls.html#SP15">§15</a>, <a href="5-rls.html#SP15_2_1">§15.2.1</a>, <a href="5-rls.html#SP17_2_1">§17.2.1</a><br/>Rulebooks - <a href="5-rlb.html#SP8_4_1_3">§8.4.1.3</a>, <a href="5-rlb.html#SP8_4_1_5">§8.4.1.5</a>, <a href="5-rlb.html#SP16">§16</a><br/>Variables - <a href="5-vrb.html#SP8">§8</a><br/>Relations - <a href="5-rlt.html#SP6_4_1">§6.4.1</a>, <a href="5-rlt.html#SP6_4_8">§6.4.8</a>, <a href="5-rlt.html#SP6_4_10">§6.4.10</a>, <a href="5-rlt.html#SP6_4_11">§6.4.11</a>, <a href="5-rlt.html#SP6_4_12">§6.4.12</a>, <a href="5-rlt.html#SP6_4_12_1">§6.4.12.1</a><br/>Literal Patterns - <a href="5-lp.html#SP4_1_1_3">§4.1.1.3</a>, <a href="5-lp.html#SP4_1_1_4">§4.1.1.4</a>, <a href="5-lp.html#SP4_2_1">§4.2.1</a>, <a href="5-lp.html#SP4_2_1_2">§4.2.1.2</a>, <a href="5-lp.html#SP4_2_1_3">§4.2.1.3</a>, <a href="5-lp.html#SP4_2_1_3_1">§4.2.1.3.1</a>, <a href="5-lp.html#SP4_2_1_3_1_1">§4.2.1.3.1.1</a>, <a href="5-lp.html#SP4_2_1_3_2">§4.2.1.3.2</a>, <a href="5-lp.html#SP4_2_1_2_1">§4.2.1.2.1</a>, <a href="5-lp.html#SP5">§5</a>, <a href="5-lp.html#SP5_2">§5.2</a><br/>Kind Constructors - <a href="5-kc.html#SP10_8_4_1">§10.8.4.1</a>, <a href="5-kc.html#SP10_8_4_2">§10.8.4.2</a>, <a href="5-kc.html#SP10_8_5">§10.8.5</a>, <a href="5-kc.html#SP10_8_5_1">§10.8.5.1</a><br/>Actions - <a href="5-act2.html#SP8_6">§8.6</a>, <a href="5-act2.html#SP9">§9</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP6_6">§6.6</a>, <a href="7-cgl.html#SP7">§7</a>, <a href="7-cgl.html#SP9">§9</a><br/>Command Grammar Tokens - <a href="7-cgt.html#SP1_2_4">§1.2.4</a>, <a href="7-cgt.html#SP1_2_5">§1.2.5</a>, <a href="7-cgt.html#SP1_2_10_1_1_1">§1.2.10.1.1.1</a><br/>Noun Filter Tokens - <a href="7-nft.html#SP3_2">§3.2</a><br/>Parse Name Properties - <a href="7-pnp.html#SP4">§4</a>, <a href="7-pnp.html#SP4_1">§4.1</a>, <a href="7-pnp.html#SP4_2">§4.2</a>, <a href="7-pnp.html#SP4_3">§4.3</a>, <a href="7-pnp.html#SP4_3_1">§4.3.1</a>, <a href="7-pnp.html#SP6_2">§6.2</a>, <a href="7-pnp.html#SP6_3">§6.3</a>, <a href="7-pnp.html#SP6_6">§6.6</a>, <a href="7-pnp.html#SP8">§8</a>, <a href="7-pnp.html#SP8_1">§8.1</a>, <a href="7-pnp.html#SP9">§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">InterValuePairs::number</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('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">EmitCode::val_true</span></span>:<br/>Responses - <a href="4-rsp.html#SP7_1">§7.1</a><br/>Scene Instances - <a href="5-si.html#SP8">§8</a><br/>Dialogue - <a href="5-dli.html#SP3_14_3">§3.14.3</a><br/>Rules - <a href="5-rls.html#SP14_1">§14.1</a><br/>Relations - <a href="5-rlt.html#SP6_2">§6.2</a>, <a href="5-rlt.html#SP6_4_6">§6.4.6</a>, <a href="5-rlt.html#SP6_4_7">§6.4.7</a>, <a href="5-rlt.html#SP6_4_8">§6.4.8</a>, <a href="5-rlt.html#SP6_4_12_1">§6.4.12.1</a><br/>Literal Patterns - <a href="5-lp.html#SP4_2_1_3_1">§4.2.1.3.1</a>, <a href="5-lp.html#SP4_2_1_3_2">§4.2.1.3.2</a>, <a href="5-lp.html#SP4_2_1_2_1">§4.2.1.2.1</a><br/>Command Grammar Tokens - <a href="7-cgt.html#SP1_2_4">§1.2.4</a>, <a href="7-cgt.html#SP1_2_5">§1.2.5</a>, <a href="7-cgt.html#SP1_2_8">§1.2.8</a>, <a href="7-cgt.html#SP1_2_9">§1.2.9</a>, <a href="7-cgt.html#SP1_2_10_1_1_1">§1.2.10.1.1.1</a><br/>Noun Filter Tokens - <a href="7-nft.html#SP3_2">§3.2</a><br/>Parse Name Properties - <a href="7-pnp.html#SP4_3_1">§4.3.1</a>, <a href="7-pnp.html#SP5">§5</a>, <a href="7-pnp.html#SP10">§10</a>, <a href="7-pnp.html#SP10_2">§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">InterValuePairs::number</span><span class="plain-syntax">(1));</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('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">EmitCode::val_false</span></span>:<br/>Responses - <a href="4-rsp.html#SP7_1">§7.1</a><br/>Looping Over Scope - <a href="4-los.html#SP3">§3</a><br/>Rules - <a href="5-rls.html#SP15_2">§15.2</a><br/>Relations - <a href="5-rlt.html#SP6_4_4">§6.4.4</a>, <a href="5-rlt.html#SP6_4_7">§6.4.7</a>, <a href="5-rlt.html#SP6_4_8">§6.4.8</a>, <a href="5-rlt.html#SP6_4_12_1">§6.4.12.1</a><br/>Literal Patterns - <a href="5-lp.html#SP4_2_1">§4.2.1</a>, <a href="5-lp.html#SP4_2_1_3_1">§4.2.1.3.1</a>, <a href="5-lp.html#SP4_2_1_3_2">§4.2.1.3.2</a>, <a href="5-lp.html#SP4_2_1_2_1">§4.2.1.2.1</a>, <a href="5-lp.html#SP4_2_1_2_2">§4.2.1.2.2</a><br/>Kind Constructors - <a href="5-kc.html#SP10">§10</a><br/>Command Grammar Tokens - <a href="7-cgt.html#SP1_2_10_1_1">§1.2.10.1.1</a>, <a href="7-cgt.html#SP1_2_10_2_1">§1.2.10.2.1</a>, <a href="7-cgt.html#SP1_2_10_2_2">§1.2.10.2.2</a><br/>Noun Filter Tokens - <a href="7-nft.html#SP3_2">§3.2</a><br/>Parse Name Properties - <a href="7-pnp.html#SP4_3">§4.3</a>, <a href="7-pnp.html#SP10">§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">InterValuePairs::number</span><span class="plain-syntax">(0));</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('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">EmitCode::val_iname</span></span>:<br/><a href="2-ec.html#SP8">§8</a><br/>Shared Variables - <a href="2-sv.html#SP1_1">§1.1</a>, <a href="2-sv.html#SP1_2">§1.2</a><br/>Showme Command - <a href="2-sc.html#SP6_1">§6.1</a>, <a href="2-sc.html#SP6_1_1">§6.1.1</a>, <a href="2-sc.html#SP6_1_1_1">§6.1.1.1</a>, <a href="2-sc.html#SP6_2">§6.2</a><br/>Short Names - <a href="2-sn.html#SP4_1">§4.1</a><br/>Text Substitutions - <a href="4-ts.html#SP2_1">§2.1</a>, <a href="4-ts.html#SP7_2">§7.2</a><br/>Responses - <a href="4-rsp.html#SP4">§4</a>, <a href="4-rsp.html#SP6">§6</a>, <a href="4-rsp.html#SP7_1">§7.1</a><br/>Box Quotations - <a href="4-bq.html#SP2">§2</a><br/>Group Together - <a href="4-gt.html#SP3">§3</a><br/>Adjectives - <a href="5-adj.html#SP8">§8</a>, <a href="5-adj.html#SP9">§9</a><br/>Chronology - <a href="5-chr.html#SP3_4">§3.4</a>, <a href="5-chr.html#SP5">§5</a>, <a href="5-chr.html#SP7_2">§7.2</a><br/>Conjugations - <a href="5-cnj.html#SP7">§7</a>, <a href="5-cnj.html#SP8">§8</a>, <a href="5-cnj.html#SP12_1">§12.1</a><br/>Instances - <a href="5-ins.html#SP5">§5</a><br/>Backdrop Instances - <a href="5-bi.html#SP2_1">§2.1</a><br/>Door Instances - <a href="5-di.html#SP3">§3</a>, <a href="5-di.html#SP5">§5</a><br/>Region Instances - <a href="5-ri.html#SP2">§2</a><br/>Scene Instances - <a href="5-si.html#SP3_1">§3.1</a>, <a href="5-si.html#SP4">§4</a>, <a href="5-si.html#SP4_3">§4.3</a>, <a href="5-si.html#SP6_1">§6.1</a>, <a href="5-si.html#SP6_2">§6.2</a>, <a href="5-si.html#SP6_3">§6.3</a>, <a href="5-si.html#SP6_4">§6.4</a>, <a href="5-si.html#SP6_5">§6.5</a>, <a href="5-si.html#SP7">§7</a>, <a href="5-si.html#SP7_1">§7.1</a>, <a href="5-si.html#SP7_2">§7.2</a>, <a href="5-si.html#SP7_2_1">§7.2.1</a>, <a href="5-si.html#SP8">§8</a><br/>Dialogue Beat Instances - <a href="5-dbi.html#SP2_6_1_1">§2.6.1.1</a>, <a href="5-dbi.html#SP2_7_1">§2.7.1</a><br/>Dialogue - <a href="5-dli.html#SP3_11">§3.11</a>, <a href="5-dli.html#SP3_12">§3.12</a>, <a href="5-dli.html#SP3_13">§3.13</a>, <a href="5-dli.html#SP3_14_3">§3.14.3</a><br/>Rules - <a href="5-rls.html#SP15">§15</a>, <a href="5-rls.html#SP15_1">§15.1</a>, <a href="5-rls.html#SP17_3">§17.3</a>, <a href="5-rls.html#SP17_4">§17.4</a>, <a href="5-rls.html#SP15_2_1">§15.2.1</a>, <a href="5-rls.html#SP17_2_1">§17.2.1</a><br/>Rulebooks - <a href="5-rlb.html#SP8_4_1_1">§8.4.1.1</a>, <a href="5-rlb.html#SP8_4_1_2">§8.4.1.2</a>, <a href="5-rlb.html#SP8_4_1_3">§8.4.1.3</a>, <a href="5-rlb.html#SP8_4_1_3_1">§8.4.1.3.1</a>, <a href="5-rlb.html#SP16">§16</a><br/>Variables - <a href="5-vrb.html#SP8">§8</a>, <a href="5-vrb.html#SP14_1">§14.1</a><br/>Relations - <a href="5-rlt.html#SP6_1">§6.1</a>, <a href="5-rlt.html#SP6_2">§6.2</a>, <a href="5-rlt.html#SP6_4">§6.4</a>, <a href="5-rlt.html#SP6_4_1">§6.4.1</a>, <a href="5-rlt.html#SP6_4_5">§6.4.5</a>, <a href="5-rlt.html#SP6_4_5_1">§6.4.5.1</a>, <a href="5-rlt.html#SP6_4_6">§6.4.6</a>, <a href="5-rlt.html#SP6_4_7">§6.4.7</a>, <a href="5-rlt.html#SP6_4_8">§6.4.8</a>, <a href="5-rlt.html#SP6_4_9">§6.4.9</a>, <a href="5-rlt.html#SP6_4_12">§6.4.12</a>, <a href="5-rlt.html#SP6_4_9_1">§6.4.9.1</a>, <a href="5-rlt.html#SP6_4_10_1">§6.4.10.1</a>, <a href="5-rlt.html#SP6_4_12_1">§6.4.12.1</a>, <a href="5-rlt.html#SP19_1">§19.1</a>, <a href="5-rlt.html#SP19_2">§19.2</a>, <a href="5-rlt.html#SP19_3">§19.3</a>, <a href="5-rlt.html#SP19_4">§19.4</a>, <a href="5-rlt.html#SP19_5">§19.5</a>, <a href="5-rlt.html#SP21">§21</a><br/>Literal Patterns - <a href="5-lp.html#SP4_2">§4.2</a>, <a href="5-lp.html#SP4_2_1">§4.2.1</a>, <a href="5-lp.html#SP4_2_1_3_1">§4.2.1.3.1</a>, <a href="5-lp.html#SP4_2_1_3_2">§4.2.1.3.2</a>, <a href="5-lp.html#SP4_2_1_2_1">§4.2.1.2.1</a><br/>Kind Constructors - <a href="5-kc.html#SP10_8_3">§10.8.3</a>, <a href="5-kc.html#SP10_8_5">§10.8.5</a>, <a href="5-kc.html#SP10_8_5_1">§10.8.5.1</a><br/>Kind IDs - <a href="5-ki.html#SP2">§2</a>, <a href="5-ki.html#SP6">§6</a>, <a href="5-ki.html#SP10">§10</a><br/>Actions - <a href="5-act2.html#SP8_5">§8.5</a>, <a href="5-act2.html#SP9">§9</a><br/>Command Grammars - <a href="7-cg.html#SP10">§10</a>, <a href="7-cg.html#SP12">§12</a>, <a href="7-cg.html#SP13">§13</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP6_5">§6.5</a>, <a href="7-cgl.html#SP6_6">§6.6</a>, <a href="7-cgl.html#SP6_8">§6.8</a>, <a href="7-cgl.html#SP7">§7</a>, <a href="7-cgl.html#SP9">§9</a>, <a href="7-cgl.html#SP10">§10</a>, <a href="7-cgl.html#SP11">§11</a>, <a href="7-cgl.html#SP13">§13</a>, <a href="7-cgl.html#SP14_3">§14.3</a><br/>Command Grammar Tokens - <a href="7-cgt.html#SP1_2">§1.2</a>, <a href="7-cgt.html#SP1_2_1">§1.2.1</a>, <a href="7-cgt.html#SP1_2_2">§1.2.2</a>, <a href="7-cgt.html#SP1_2_3">§1.2.3</a>, <a href="7-cgt.html#SP1_2_4">§1.2.4</a>, <a href="7-cgt.html#SP1_2_5">§1.2.5</a>, <a href="7-cgt.html#SP1_2_6">§1.2.6</a>, <a href="7-cgt.html#SP1_2_7">§1.2.7</a>, <a href="7-cgt.html#SP1_2_8">§1.2.8</a>, <a href="7-cgt.html#SP1_2_9">§1.2.9</a>, <a href="7-cgt.html#SP1_2_10_1_1">§1.2.10.1.1</a>, <a href="7-cgt.html#SP1_2_10_2_1">§1.2.10.2.1</a>, <a href="7-cgt.html#SP1_2_10_2_2">§1.2.10.2.2</a>, <a href="7-cgt.html#SP1_2_10_1_1_1">§1.2.10.1.1.1</a>, <a href="7-cgt.html#SP1_3">§1.3</a>, <a href="7-cgt.html#SP1_4_1">§1.4.1</a>, <a href="7-cgt.html#SP1_4_2">§1.4.2</a>, <a href="7-cgt.html#SP1_4_3">§1.4.3</a>, <a href="7-cgt.html#SP1_5">§1.5</a>, <a href="7-cgt.html#SP1_6">§1.6</a><br/>Kind GPRs - <a href="7-kg.html#SP1_1">§1.1</a>, <a href="7-kg.html#SP1_2">§1.2</a>, <a href="7-kg.html#SP4">§4</a>, <a href="7-kg.html#SP4_1">§4.1</a>, <a href="7-kg.html#SP4_4">§4.4</a>, <a href="7-kg.html#SP5_1_1_1">§5.1.1.1</a>, <a href="7-kg.html#SP5_1_1_2">§5.1.1.2</a><br/>Noun Filter Tokens - <a href="7-nft.html#SP3_1">§3.1</a>, <a href="7-nft.html#SP3_2">§3.2</a>, <a href="7-nft.html#SP3_3">§3.3</a>, <a href="7-nft.html#SP4">§4</a><br/>Parse Name Properties - <a href="7-pnp.html#SP4_1">§4.1</a>, <a href="7-pnp.html#SP4_2">§4.2</a>, <a href="7-pnp.html#SP4_3">§4.3</a>, <a href="7-pnp.html#SP4_3_1">§4.3.1</a>, <a href="7-pnp.html#SP4_4">§4.4</a>, <a href="7-pnp.html#SP5">§5</a>, <a href="7-pnp.html#SP6_2">§6.2</a>, <a href="7-pnp.html#SP6_3">§6.3</a>, <a href="7-pnp.html#SP8">§8</a>, <a href="7-pnp.html#SP10">§10</a>, <a href="7-pnp.html#SP10_2">§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('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">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">§4.2</a>, <a href="2-sc.html#SP6_1_1">§6.1.1</a>, <a href="2-sc.html#SP6_2">§6.2</a>, <a href="2-sc.html#SP6_2_1">§6.2.1</a><br/>Short Names - <a href="2-sn.html#SP4">§4</a>, <a href="2-sn.html#SP4_2">§4.2</a><br/>Text Substitutions - <a href="4-ts.html#SP7_2">§7.2</a><br/>Box Quotations - <a href="4-bq.html#SP2">§2</a><br/>Adjectives - <a href="5-adj.html#SP8">§8</a><br/>Conjugations - <a href="5-cnj.html#SP12_1">§12.1</a>, <a href="5-cnj.html#SP13">§13</a><br/>Scene Instances - <a href="5-si.html#SP6_4">§6.4</a>, <a href="5-si.html#SP7_1">§7.1</a>, <a href="5-si.html#SP7_2_1">§7.2.1</a><br/>Rulebooks - <a href="5-rlb.html#SP16">§16</a><br/>Relations - <a href="5-rlt.html#SP6_2">§6.2</a><br/>Literal Patterns - <a href="5-lp.html#SP4_1_1">§4.1.1</a>, <a href="5-lp.html#SP4_1_1_1">§4.1.1.1</a>, <a href="5-lp.html#SP4_1_1_2">§4.1.1.2</a>, <a href="5-lp.html#SP4_1_1_3">§4.1.1.3</a>, <a href="5-lp.html#SP4_2_1">§4.2.1</a><br/>Kind Constructors - <a href="5-kc.html#SP10_8_3">§10.8.3</a><br/>Actions - <a href="5-act2.html#SP8_6">§8.6</a>, <a href="5-act2.html#SP8_6_1">§8.6.1</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP9">§9</a><br/>Parse Name Properties - <a href="7-pnp.html#SP4_1">§4.1</a>, <a href="7-pnp.html#SP6_3">§6.3</a>, <a href="7-pnp.html#SP8">§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('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">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">§4.2.1.1</a><br/>Command Grammar Tokens - <a href="7-cgt.html#SP1_1">§1.1</a><br/>Kind GPRs - <a href="7-kg.html#SP5_1_1_1">§5.1.1.1</a><br/>Parse Name Properties - <a href="7-pnp.html#SP10">§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('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">EmitCode::val_nothing</span></span>:<br/>Adjectives - <a href="5-adj.html#SP8">§8</a><br/>Relations - <a href="5-rlt.html#SP19_1">§19.1</a>, <a href="5-rlt.html#SP19_2">§19.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('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">EmitCode::val_symbol</span></span>:<br/><a href="2-ec.html#SP8">§8</a><br/>Shared Variables - <a href="2-sv.html#SP1">§1</a>, <a href="2-sv.html#SP1_1">§1.1</a>, <a href="2-sv.html#SP1_2">§1.2</a><br/>Showme Command - <a href="2-sc.html#SP2">§2</a>, <a href="2-sc.html#SP3">§3</a>, <a href="2-sc.html#SP4_2">§4.2</a>, <a href="2-sc.html#SP6_1">§6.1</a>, <a href="2-sc.html#SP6_1_1">§6.1.1</a>, <a href="2-sc.html#SP6_1_1_1">§6.1.1.1</a><br/>Responses - <a href="4-rsp.html#SP7_1">§7.1</a><br/>Looping Over Scope - <a href="4-los.html#SP3">§3</a><br/>Adjectives - <a href="5-adj.html#SP8">§8</a><br/>Conjugations - <a href="5-cnj.html#SP7">§7</a>, <a href="5-cnj.html#SP12_1">§12.1</a>, <a href="5-cnj.html#SP7_2_1">§7.2.1</a>, <a href="5-cnj.html#SP7_2_2">§7.2.2</a>, <a href="5-cnj.html#SP13">§13</a><br/>Instances - <a href="5-ins.html#SP5">§5</a><br/>Door Instances - <a href="5-di.html#SP3">§3</a>, <a href="5-di.html#SP5">§5</a><br/>Dialogue Beat Instances - <a href="5-dbi.html#SP2_6_1">§2.6.1</a>, <a href="5-dbi.html#SP2_6_1_1">§2.6.1.1</a>, <a href="5-dbi.html#SP2_7_1">§2.7.1</a><br/>Dialogue - <a href="5-dli.html#SP3_11">§3.11</a>, <a href="5-dli.html#SP3_12">§3.12</a>, <a href="5-dli.html#SP3_13">§3.13</a>, <a href="5-dli.html#SP3_14">§3.14</a><br/>Rulebooks - <a href="5-rlb.html#SP8_4_1_3">§8.4.1.3</a>, <a href="5-rlb.html#SP8_4_1_3_1">§8.4.1.3.1</a>, <a href="5-rlb.html#SP16">§16</a><br/>Relations - <a href="5-rlt.html#SP6_4">§6.4</a>, <a href="5-rlt.html#SP6_4_1">§6.4.1</a>, <a href="5-rlt.html#SP6_4_4">§6.4.4</a>, <a href="5-rlt.html#SP6_4_5">§6.4.5</a>, <a href="5-rlt.html#SP6_4_5_1">§6.4.5.1</a>, <a href="5-rlt.html#SP6_4_6">§6.4.6</a>, <a href="5-rlt.html#SP6_4_7">§6.4.7</a>, <a href="5-rlt.html#SP6_4_8">§6.4.8</a>, <a href="5-rlt.html#SP6_4_9">§6.4.9</a>, <a href="5-rlt.html#SP6_4_10">§6.4.10</a>, <a href="5-rlt.html#SP6_4_11">§6.4.11</a>, <a href="5-rlt.html#SP6_4_12">§6.4.12</a>, <a href="5-rlt.html#SP6_4_9_1">§6.4.9.1</a>, <a href="5-rlt.html#SP6_4_10_1">§6.4.10.1</a>, <a href="5-rlt.html#SP6_4_12_1">§6.4.12.1</a>, <a href="5-rlt.html#SP19_1">§19.1</a>, <a href="5-rlt.html#SP19_2">§19.2</a>, <a href="5-rlt.html#SP19_3">§19.3</a>, <a href="5-rlt.html#SP19_4">§19.4</a>, <a href="5-rlt.html#SP19_5">§19.5</a>, <a href="5-rlt.html#SP21">§21</a><br/>Literal Patterns - <a href="5-lp.html#SP4_1_1_3">§4.1.1.3</a>, <a href="5-lp.html#SP4_1_1_4">§4.1.1.4</a>, <a href="5-lp.html#SP4_2_1">§4.2.1</a>, <a href="5-lp.html#SP4_2_1_1">§4.2.1.1</a>, <a href="5-lp.html#SP4_2_1_2">§4.2.1.2</a>, <a href="5-lp.html#SP4_2_1_3">§4.2.1.3</a>, <a href="5-lp.html#SP4_2_1_3_1">§4.2.1.3.1</a>, <a href="5-lp.html#SP4_2_1_3_1_1">§4.2.1.3.1.1</a>, <a href="5-lp.html#SP4_2_1_3_2">§4.2.1.3.2</a>, <a href="5-lp.html#SP4_2_1_2_1">§4.2.1.2.1</a>, <a href="5-lp.html#SP4_2_1_2_2">§4.2.1.2.2</a>, <a href="5-lp.html#SP5">§5</a>, <a href="5-lp.html#SP5_2">§5.2</a><br/>Kind Constructors - <a href="5-kc.html#SP10">§10</a>, <a href="5-kc.html#SP10_8">§10.8</a>, <a href="5-kc.html#SP10_8_1">§10.8.1</a>, <a href="5-kc.html#SP10_8_2">§10.8.2</a>, <a href="5-kc.html#SP10_8_3">§10.8.3</a>, <a href="5-kc.html#SP10_8_4_1">§10.8.4.1</a>, <a href="5-kc.html#SP10_8_4_2">§10.8.4.2</a>, <a href="5-kc.html#SP10_8_5">§10.8.5</a>, <a href="5-kc.html#SP10_8_5_1">§10.8.5.1</a><br/>Kind IDs - <a href="5-ki.html#SP10">§10</a><br/>Actions - <a href="5-act2.html#SP8_6">§8.6</a>, <a href="5-act2.html#SP9">§9</a><br/>Command Grammars - <a href="7-cg.html#SP12">§12</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP6_2">§6.2</a>, <a href="7-cgl.html#SP6_5">§6.5</a>, <a href="7-cgl.html#SP6_6">§6.6</a>, <a href="7-cgl.html#SP6_8">§6.8</a>, <a href="7-cgl.html#SP14_3">§14.3</a>, <a href="7-cgl.html#SP14_5">§14.5</a><br/>Command Grammar Tokens - <a href="7-cgt.html#SP1_2_4">§1.2.4</a>, <a href="7-cgt.html#SP1_2_5">§1.2.5</a>, <a href="7-cgt.html#SP1_2_8">§1.2.8</a>, <a href="7-cgt.html#SP1_2_9">§1.2.9</a>, <a href="7-cgt.html#SP1_2_10_2_1">§1.2.10.2.1</a>, <a href="7-cgt.html#SP1_2_10_2_2">§1.2.10.2.2</a>, <a href="7-cgt.html#SP1_2_10_1_1_1">§1.2.10.1.1.1</a>, <a href="7-cgt.html#SP1_3">§1.3</a>, <a href="7-cgt.html#SP1_4_1">§1.4.1</a>, <a href="7-cgt.html#SP1_4_2">§1.4.2</a>, <a href="7-cgt.html#SP1_4_3">§1.4.3</a>, <a href="7-cgt.html#SP1_5">§1.5</a>, <a href="7-cgt.html#SP1_6">§1.6</a><br/>Kind GPRs - <a href="7-kg.html#SP4">§4</a>, <a href="7-kg.html#SP4_3">§4.3</a>, <a href="7-kg.html#SP5_1_1_2">§5.1.1.2</a><br/>Noun Filter Tokens - <a href="7-nft.html#SP3_1">§3.1</a>, <a href="7-nft.html#SP3_2">§3.2</a><br/>Parse Name Properties - <a href="7-pnp.html#SP4">§4</a>, <a href="7-pnp.html#SP4_3_1">§4.3.1</a>, <a href="7-pnp.html#SP4_5">§4.5</a>, <a href="7-pnp.html#SP5">§5</a>, <a href="7-pnp.html#SP6_2">§6.2</a>, <a href="7-pnp.html#SP6_3">§6.3</a>, <a href="7-pnp.html#SP6_4">§6.4</a>, <a href="7-pnp.html#SP6_5">§6.5</a>, <a href="7-pnp.html#SP6_6">§6.6</a>, <a href="7-pnp.html#SP8">§8</a>, <a href="7-pnp.html#SP9">§9</a>, <a href="7-pnp.html#SP10">§10</a>, <a href="7-pnp.html#SP10_1">§10.1</a>, <a href="7-pnp.html#SP11">§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>§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>
|
|
|
|
<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('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">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">§8</a>, <a href="7-pnp.html#SP10">§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('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">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">§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#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">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_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="5-ki.html#SP1" class="function-link"><span class="function-syntax">RTKindIDs::weak_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_object</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_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">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_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="5-ki.html#SP1" class="function-link"><span class="function-syntax">RTKindIDs::weak_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_object</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_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>
|
|
</pre>
|
|
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§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('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">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">§10.8.4.1</a>, <a href="5-kc.html#SP10_8_4_2">§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>§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('usagePopup19')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup19">Usage of <span class="code-font"><span class="function-syntax">EmitCode::cast_possible</span></span>:<br/><a href="2-ec.html#SP11">§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">) && (</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="identifier-syntax">construct</span><span class="plain-syntax"> != </span><span class="identifier-syntax">F</span><span class="plain-syntax">-></span><span class="identifier-syntax">construct</span><span class="plain-syntax">) &&</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">)) && (</span><span class="identifier-syntax">Kinds::Behaviour::definite</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::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">) &&</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">) &&</span>
|
|
<span class="plain-syntax"> (</span><span class="identifier-syntax">T</span><span class="plain-syntax">-></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>§11. </b>Casts are in many cases implicit, so that nothing need be done, and the
|
|
following 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">)) &&</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">HierarchyLocations::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>§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('usagePopup20')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup20">Usage of <span class="code-font"><span class="function-syntax">EmitCode::ref_iname</span></span>:<br/>Responses - <a href="4-rsp.html#SP7_1">§7.1</a><br/>Group Together - <a href="4-gt.html#SP3">§3</a><br/>Looping Over Scope - <a href="4-los.html#SP3">§3</a><br/>Adjectives - <a href="5-adj.html#SP9">§9</a><br/>Conjugations - <a href="5-cnj.html#SP8">§8</a><br/>Rules - <a href="5-rls.html#SP15_1">§15.1</a>, <a href="5-rls.html#SP17_3">§17.3</a><br/>Rulebooks - <a href="5-rlb.html#SP8_4_1_3">§8.4.1.3</a><br/>Literal Patterns - <a href="5-lp.html#SP4_2_1">§4.2.1</a>, <a href="5-lp.html#SP4_2_1_1">§4.2.1.1</a>, <a href="5-lp.html#SP4_2_1_3_1">§4.2.1.3.1</a>, <a href="5-lp.html#SP4_2_1_3_2">§4.2.1.3.2</a>, <a href="5-lp.html#SP4_2_1_2_2">§4.2.1.2.2</a><br/>Command Grammars - <a href="7-cg.html#SP12">§12</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP6_5">§6.5</a>, <a href="7-cgl.html#SP6_6">§6.6</a>, <a href="7-cgl.html#SP6_8">§6.8</a>, <a href="7-cgl.html#SP7">§7</a>, <a href="7-cgl.html#SP9">§9</a>, <a href="7-cgl.html#SP14_3">§14.3</a>, <a href="7-cgl.html#SP14_5">§14.5</a><br/>Command Grammar Tokens - <a href="7-cgt.html#SP1_2_4">§1.2.4</a>, <a href="7-cgt.html#SP1_2_5">§1.2.5</a>, <a href="7-cgt.html#SP1_2_8">§1.2.8</a>, <a href="7-cgt.html#SP1_2_9">§1.2.9</a>, <a href="7-cgt.html#SP1_2_10_1_1_1">§1.2.10.1.1.1</a><br/>Kind GPRs - <a href="7-kg.html#SP4_3">§4.3</a>, <a href="7-kg.html#SP5_1_1_1">§5.1.1.1</a><br/>Noun Filter Tokens - <a href="7-nft.html#SP3_1">§3.1</a>, <a href="7-nft.html#SP3_2">§3.2</a><br/>Parse Name Properties - <a href="7-pnp.html#SP4_3_1">§4.3.1</a>, <a href="7-pnp.html#SP4_5">§4.5</a>, <a href="7-pnp.html#SP5">§5</a>, <a href="7-pnp.html#SP6_5">§6.5</a>, <a href="7-pnp.html#SP8">§8</a>, <a href="7-pnp.html#SP9">§9</a>, <a href="7-pnp.html#SP10">§10</a>, <a href="7-pnp.html#SP10_1">§10.1</a>, <a href="7-pnp.html#SP11">§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('usagePopup21')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup21">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">§1.1</a>, <a href="2-sv.html#SP1_2">§1.2</a><br/>Showme Command - <a href="2-sc.html#SP4_2">§4.2</a>, <a href="2-sc.html#SP6_2_1">§6.2.1</a><br/>Responses - <a href="4-rsp.html#SP7_1">§7.1</a><br/>Adjectives - <a href="5-adj.html#SP8">§8</a><br/>Conjugations - <a href="5-cnj.html#SP12_1">§12.1</a><br/>Door Instances - <a href="5-di.html#SP3">§3</a>, <a href="5-di.html#SP5">§5</a><br/>Scene Instances - <a href="5-si.html#SP4_2">§4.2</a>, <a href="5-si.html#SP4_3">§4.3</a><br/>Dialogue Beat Instances - <a href="5-dbi.html#SP2_7_1">§2.7.1</a><br/>Rulebooks - <a href="5-rlb.html#SP8_4_1_1">§8.4.1.1</a>, <a href="5-rlb.html#SP8_4_1_3">§8.4.1.3</a><br/>Literal Patterns - <a href="5-lp.html#SP4_1_1_3">§4.1.1.3</a>, <a href="5-lp.html#SP4_2_1">§4.2.1</a>, <a href="5-lp.html#SP4_2_1_2">§4.2.1.2</a>, <a href="5-lp.html#SP4_2_1_3">§4.2.1.3</a>, <a href="5-lp.html#SP4_2_1_3_1">§4.2.1.3.1</a>, <a href="5-lp.html#SP4_2_1_3_1_1">§4.2.1.3.1.1</a>, <a href="5-lp.html#SP4_2_1_3_2">§4.2.1.3.2</a>, <a href="5-lp.html#SP4_2_1_2_1">§4.2.1.2.1</a>, <a href="5-lp.html#SP4_2_1_2_2">§4.2.1.2.2</a><br/>Command Grammars - <a href="7-cg.html#SP10">§10</a>, <a href="7-cg.html#SP12">§12</a>, <a href="7-cg.html#SP13">§13</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP6_5">§6.5</a>, <a href="7-cgl.html#SP6_6">§6.6</a>, <a href="7-cgl.html#SP14_3">§14.3</a><br/>Command Grammar Tokens - <a href="7-cgt.html#SP1_2">§1.2</a>, <a href="7-cgt.html#SP1_2_4">§1.2.4</a>, <a href="7-cgt.html#SP1_2_5">§1.2.5</a>, <a href="7-cgt.html#SP1_2_8">§1.2.8</a>, <a href="7-cgt.html#SP1_2_9">§1.2.9</a>, <a href="7-cgt.html#SP1_2_10_1_1">§1.2.10.1.1</a>, <a href="7-cgt.html#SP1_2_10_2_1">§1.2.10.2.1</a>, <a href="7-cgt.html#SP1_2_10_2_2">§1.2.10.2.2</a>, <a href="7-cgt.html#SP1_2_10_1_1_1">§1.2.10.1.1.1</a>, <a href="7-cgt.html#SP1_3">§1.3</a>, <a href="7-cgt.html#SP1_4_1">§1.4.1</a>, <a href="7-cgt.html#SP1_4_2">§1.4.2</a>, <a href="7-cgt.html#SP1_4_3">§1.4.3</a>, <a href="7-cgt.html#SP1_5">§1.5</a>, <a href="7-cgt.html#SP1_6">§1.6</a><br/>Kind GPRs - <a href="7-kg.html#SP1_1">§1.1</a>, <a href="7-kg.html#SP4">§4</a>, <a href="7-kg.html#SP4_1">§4.1</a><br/>Noun Filter Tokens - <a href="7-nft.html#SP3_1">§3.1</a>, <a href="7-nft.html#SP3_2">§3.2</a>, <a href="7-nft.html#SP3_3">§3.3</a><br/>Parse Name Properties - <a href="7-pnp.html#SP4">§4</a>, <a href="7-pnp.html#SP4_3">§4.3</a>, <a href="7-pnp.html#SP4_3_1">§4.3.1</a>, <a href="7-pnp.html#SP4_4">§4.4</a>, <a href="7-pnp.html#SP5">§5</a>, <a href="7-pnp.html#SP6">§6</a>, <a href="7-pnp.html#SP6_2">§6.2</a>, <a href="7-pnp.html#SP6_4">§6.4</a>, <a href="7-pnp.html#SP8">§8</a>, <a href="7-pnp.html#SP10">§10</a>, <a href="7-pnp.html#SP10_2">§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>§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('usagePopup22')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup22">Usage of <span class="code-font"><span class="function-syntax">EmitCode::inv</span></span>:<br/><a href="2-ec.html#SP8">§8</a><br/>Shared Variables - <a href="2-sv.html#SP1">§1</a>, <a href="2-sv.html#SP1_1">§1.1</a>, <a href="2-sv.html#SP1_2">§1.2</a><br/>Showme Command - <a href="2-sc.html#SP2">§2</a>, <a href="2-sc.html#SP3">§3</a>, <a href="2-sc.html#SP4">§4</a>, <a href="2-sc.html#SP4_2">§4.2</a>, <a href="2-sc.html#SP6_1">§6.1</a>, <a href="2-sc.html#SP6_1_1">§6.1.1</a>, <a href="2-sc.html#SP6_1_1_1">§6.1.1.1</a>, <a href="2-sc.html#SP6_2">§6.2</a>, <a href="2-sc.html#SP6_2_1">§6.2.1</a><br/>Short Names - <a href="2-sn.html#SP4">§4</a>, <a href="2-sn.html#SP4_1">§4.1</a>, <a href="2-sn.html#SP4_2">§4.2</a><br/>Text Substitutions - <a href="4-ts.html#SP7_2">§7.2</a><br/>Responses - <a href="4-rsp.html#SP7_1">§7.1</a><br/>Box Quotations - <a href="4-bq.html#SP2">§2</a><br/>Group Together - <a href="4-gt.html#SP3">§3</a><br/>Looping Over Scope - <a href="4-los.html#SP3">§3</a><br/>Adjectives - <a href="5-adj.html#SP6_1_2">§6.1.2</a>, <a href="5-adj.html#SP8">§8</a>, <a href="5-adj.html#SP9">§9</a>, <a href="5-adj.html#SP14">§14</a>, <a href="5-adj.html#SP15">§15</a><br/>Chronology - <a href="5-chr.html#SP4_1">§4.1</a>, <a href="5-chr.html#SP7_2">§7.2</a>, <a href="5-chr.html#SP8">§8</a>, <a href="5-chr.html#SP9">§9</a><br/>Conjugations - <a href="5-cnj.html#SP7">§7</a>, <a href="5-cnj.html#SP8">§8</a>, <a href="5-cnj.html#SP12_1">§12.1</a>, <a href="5-cnj.html#SP7_2">§7.2</a>, <a href="5-cnj.html#SP7_2_1">§7.2.1</a>, <a href="5-cnj.html#SP7_2_2">§7.2.2</a>, <a href="5-cnj.html#SP13">§13</a><br/>Instances - <a href="5-ins.html#SP5">§5</a><br/>Backdrop Instances - <a href="5-bi.html#SP2_1">§2.1</a><br/>Door Instances - <a href="5-di.html#SP3">§3</a>, <a href="5-di.html#SP5">§5</a><br/>Region Instances - <a href="5-ri.html#SP2">§2</a><br/>Scene Instances - <a href="5-si.html#SP3_1">§3.1</a>, <a href="5-si.html#SP4">§4</a>, <a href="5-si.html#SP4_2">§4.2</a>, <a href="5-si.html#SP4_3">§4.3</a>, <a href="5-si.html#SP6_1">§6.1</a>, <a href="5-si.html#SP6_3">§6.3</a>, <a href="5-si.html#SP6_4">§6.4</a>, <a href="5-si.html#SP6_5">§6.5</a>, <a href="5-si.html#SP7">§7</a>, <a href="5-si.html#SP7_1">§7.1</a>, <a href="5-si.html#SP7_2">§7.2</a>, <a href="5-si.html#SP7_2_1">§7.2.1</a>, <a href="5-si.html#SP8">§8</a><br/>Dialogue Beat Instances - <a href="5-dbi.html#SP2_6_1">§2.6.1</a>, <a href="5-dbi.html#SP2_6_1_1">§2.6.1.1</a>, <a href="5-dbi.html#SP2_6_2_1">§2.6.2.1</a>, <a href="5-dbi.html#SP2_6_3">§2.6.3</a>, <a href="5-dbi.html#SP2_7_1">§2.7.1</a><br/>Dialogue - <a href="5-dli.html#SP3_10_1">§3.10.1</a>, <a href="5-dli.html#SP3_11">§3.11</a>, <a href="5-dli.html#SP3_12">§3.12</a>, <a href="5-dli.html#SP3_14">§3.14</a>, <a href="5-dli.html#SP3_14_3">§3.14.3</a><br/>Dialogue Choice Instances - <a href="5-dci.html#SP3_5_1">§3.5.1</a>, <a href="5-dci.html#SP3_6">§3.6</a><br/>Rules - <a href="5-rls.html#SP12_4">§12.4</a>, <a href="5-rls.html#SP14">§14</a>, <a href="5-rls.html#SP14_2">§14.2</a>, <a href="5-rls.html#SP15">§15</a>, <a href="5-rls.html#SP17_1">§17.1</a>, <a href="5-rls.html#SP15_1">§15.1</a>, <a href="5-rls.html#SP17_3">§17.3</a>, <a href="5-rls.html#SP17_4">§17.4</a>, <a href="5-rls.html#SP15_2">§15.2</a>, <a href="5-rls.html#SP15_2_1">§15.2.1</a>, <a href="5-rls.html#SP17_2_1">§17.2.1</a><br/>Rulebooks - <a href="5-rlb.html#SP8_4_1_1">§8.4.1.1</a>, <a href="5-rlb.html#SP8_4_1_2">§8.4.1.2</a>, <a href="5-rlb.html#SP8_4_1_3">§8.4.1.3</a>, <a href="5-rlb.html#SP8_4_1_5">§8.4.1.5</a>, <a href="5-rlb.html#SP8_4_1_3_1">§8.4.1.3.1</a>, <a href="5-rlb.html#SP16">§16</a><br/>Variables - <a href="5-vrb.html#SP8">§8</a>, <a href="5-vrb.html#SP14_1">§14.1</a><br/>Relations - <a href="5-rlt.html#SP6_2">§6.2</a>, <a href="5-rlt.html#SP6_4">§6.4</a>, <a href="5-rlt.html#SP6_4_4">§6.4.4</a>, <a href="5-rlt.html#SP6_4_5">§6.4.5</a>, <a href="5-rlt.html#SP6_4_6">§6.4.6</a>, <a href="5-rlt.html#SP6_4_7">§6.4.7</a>, <a href="5-rlt.html#SP6_4_8">§6.4.8</a>, <a href="5-rlt.html#SP6_4_9">§6.4.9</a>, <a href="5-rlt.html#SP6_4_10">§6.4.10</a>, <a href="5-rlt.html#SP6_4_11">§6.4.11</a>, <a href="5-rlt.html#SP6_4_12">§6.4.12</a>, <a href="5-rlt.html#SP6_4_9_1">§6.4.9.1</a>, <a href="5-rlt.html#SP6_4_10_1">§6.4.10.1</a>, <a href="5-rlt.html#SP6_4_12_1">§6.4.12.1</a>, <a href="5-rlt.html#SP19_1">§19.1</a>, <a href="5-rlt.html#SP19_2">§19.2</a>, <a href="5-rlt.html#SP19_3">§19.3</a>, <a href="5-rlt.html#SP19_4">§19.4</a>, <a href="5-rlt.html#SP19_5">§19.5</a>, <a href="5-rlt.html#SP20">§20</a>, <a href="5-rlt.html#SP21">§21</a><br/>Literal Patterns - <a href="5-lp.html#SP4_1_1">§4.1.1</a>, <a href="5-lp.html#SP4_1_1_1">§4.1.1.1</a>, <a href="5-lp.html#SP4_1_1_2">§4.1.1.2</a>, <a href="5-lp.html#SP4_1_1_3">§4.1.1.3</a>, <a href="5-lp.html#SP4_1_1_4">§4.1.1.4</a>, <a href="5-lp.html#SP4_2">§4.2</a>, <a href="5-lp.html#SP4_2_1">§4.2.1</a>, <a href="5-lp.html#SP4_2_1_1">§4.2.1.1</a>, <a href="5-lp.html#SP4_2_1_2">§4.2.1.2</a>, <a href="5-lp.html#SP4_2_1_3">§4.2.1.3</a>, <a href="5-lp.html#SP4_2_1_3_1">§4.2.1.3.1</a>, <a href="5-lp.html#SP4_2_1_3_1_1">§4.2.1.3.1.1</a>, <a href="5-lp.html#SP4_2_1_3_2">§4.2.1.3.2</a>, <a href="5-lp.html#SP4_2_1_2_1">§4.2.1.2.1</a>, <a href="5-lp.html#SP4_2_1_2_2">§4.2.1.2.2</a>, <a href="5-lp.html#SP5">§5</a>, <a href="5-lp.html#SP5_2">§5.2</a><br/>Kind Constructors - <a href="5-kc.html#SP10">§10</a>, <a href="5-kc.html#SP10_8_1">§10.8.1</a>, <a href="5-kc.html#SP10_8_2">§10.8.2</a>, <a href="5-kc.html#SP10_8_3">§10.8.3</a>, <a href="5-kc.html#SP10_8_4_1">§10.8.4.1</a>, <a href="5-kc.html#SP10_8_4_2">§10.8.4.2</a>, <a href="5-kc.html#SP10_8_5">§10.8.5</a>, <a href="5-kc.html#SP10_8_5_1">§10.8.5.1</a><br/>Kind IDs - <a href="5-ki.html#SP10">§10</a><br/>Actions - <a href="5-act2.html#SP8_5">§8.5</a>, <a href="5-act2.html#SP8_6">§8.6</a>, <a href="5-act2.html#SP8_6_1">§8.6.1</a>, <a href="5-act2.html#SP9">§9</a><br/>Named Action Patterns - <a href="5-nap.html#SP3">§3</a><br/>Command Grammars - <a href="7-cg.html#SP10">§10</a>, <a href="7-cg.html#SP12">§12</a>, <a href="7-cg.html#SP13">§13</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP6_2">§6.2</a>, <a href="7-cgl.html#SP6_5">§6.5</a>, <a href="7-cgl.html#SP6_6">§6.6</a>, <a href="7-cgl.html#SP6_8">§6.8</a>, <a href="7-cgl.html#SP7">§7</a>, <a href="7-cgl.html#SP9">§9</a>, <a href="7-cgl.html#SP10">§10</a>, <a href="7-cgl.html#SP11">§11</a>, <a href="7-cgl.html#SP13">§13</a>, <a href="7-cgl.html#SP14_3">§14.3</a>, <a href="7-cgl.html#SP14_5">§14.5</a>, <a href="7-cgl.html#SP14_5_1">§14.5.1</a><br/>Command Grammar Tokens - <a href="7-cgt.html#SP1_1">§1.1</a>, <a href="7-cgt.html#SP1_1_1_1">§1.1.1.1</a>, <a href="7-cgt.html#SP1_2">§1.2</a>, <a href="7-cgt.html#SP1_2_1">§1.2.1</a>, <a href="7-cgt.html#SP1_2_2">§1.2.2</a>, <a href="7-cgt.html#SP1_2_3">§1.2.3</a>, <a href="7-cgt.html#SP1_2_4">§1.2.4</a>, <a href="7-cgt.html#SP1_2_5">§1.2.5</a>, <a href="7-cgt.html#SP1_2_6">§1.2.6</a>, <a href="7-cgt.html#SP1_2_7">§1.2.7</a>, <a href="7-cgt.html#SP1_2_8">§1.2.8</a>, <a href="7-cgt.html#SP1_2_9">§1.2.9</a>, <a href="7-cgt.html#SP1_2_10_1_1">§1.2.10.1.1</a>, <a href="7-cgt.html#SP1_2_10_2_1">§1.2.10.2.1</a>, <a href="7-cgt.html#SP1_2_10_2_2">§1.2.10.2.2</a>, <a href="7-cgt.html#SP1_2_10_1_1_1">§1.2.10.1.1.1</a>, <a href="7-cgt.html#SP1_3">§1.3</a>, <a href="7-cgt.html#SP1_4_1">§1.4.1</a>, <a href="7-cgt.html#SP1_4_2">§1.4.2</a>, <a href="7-cgt.html#SP1_4_3">§1.4.3</a>, <a href="7-cgt.html#SP1_5">§1.5</a>, <a href="7-cgt.html#SP1_6">§1.6</a><br/>Kind GPRs - <a href="7-kg.html#SP1_1">§1.1</a>, <a href="7-kg.html#SP1_2">§1.2</a>, <a href="7-kg.html#SP4">§4</a>, <a href="7-kg.html#SP4_1">§4.1</a>, <a href="7-kg.html#SP4_3">§4.3</a>, <a href="7-kg.html#SP4_4">§4.4</a>, <a href="7-kg.html#SP5_1_1_1">§5.1.1.1</a>, <a href="7-kg.html#SP5_1_1_2">§5.1.1.2</a><br/>Noun Filter Tokens - <a href="7-nft.html#SP3_1">§3.1</a>, <a href="7-nft.html#SP3_2">§3.2</a>, <a href="7-nft.html#SP3_3">§3.3</a><br/>Parse Name Properties - <a href="7-pnp.html#SP4">§4</a>, <a href="7-pnp.html#SP4_1">§4.1</a>, <a href="7-pnp.html#SP4_2">§4.2</a>, <a href="7-pnp.html#SP4_3">§4.3</a>, <a href="7-pnp.html#SP4_3_1">§4.3.1</a>, <a href="7-pnp.html#SP4_4">§4.4</a>, <a href="7-pnp.html#SP4_5">§4.5</a>, <a href="7-pnp.html#SP5">§5</a>, <a href="7-pnp.html#SP6">§6</a>, <a href="7-pnp.html#SP6_1">§6.1</a>, <a href="7-pnp.html#SP6_2">§6.2</a>, <a href="7-pnp.html#SP6_3">§6.3</a>, <a href="7-pnp.html#SP6_4">§6.4</a>, <a href="7-pnp.html#SP6_5">§6.5</a>, <a href="7-pnp.html#SP6_6">§6.6</a>, <a href="7-pnp.html#SP8">§8</a>, <a href="7-pnp.html#SP8_1">§8.1</a>, <a href="7-pnp.html#SP9">§9</a>, <a href="7-pnp.html#SP10">§10</a>, <a href="7-pnp.html#SP10_1">§10.1</a>, <a href="7-pnp.html#SP10_2">§10.2</a>, <a href="7-pnp.html#SP11">§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('usagePopup23')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup23">Usage of <span class="code-font"><span class="function-syntax">EmitCode::call</span></span>:<br/><a href="2-ec.html#SP11">§11</a><br/>Shared Variables - <a href="2-sv.html#SP1_2">§1.2</a><br/>The Heap - <a href="2-th.html#SP5">§5</a><br/>Showme Command - <a href="2-sc.html#SP6_1">§6.1</a>, <a href="2-sc.html#SP6_1_1">§6.1.1</a>, <a href="2-sc.html#SP6_1_1_1">§6.1.1.1</a>, <a href="2-sc.html#SP6_2">§6.2</a><br/>Short Names - <a href="2-sn.html#SP4_1">§4.1</a><br/>Text Substitutions - <a href="4-ts.html#SP2_1">§2.1</a><br/>Responses - <a href="4-rsp.html#SP6">§6</a>, <a href="4-rsp.html#SP7_1">§7.1</a><br/>Adjectives - <a href="5-adj.html#SP8">§8</a>, <a href="5-adj.html#SP9">§9</a><br/>Chronology - <a href="5-chr.html#SP3_4">§3.4</a>, <a href="5-chr.html#SP5">§5</a><br/>Conjugations - <a href="5-cnj.html#SP8">§8</a>, <a href="5-cnj.html#SP12_1">§12.1</a><br/>Backdrop Instances - <a href="5-bi.html#SP2_1">§2.1</a><br/>Region Instances - <a href="5-ri.html#SP2">§2</a><br/>Scene Instances - <a href="5-si.html#SP4_3">§4.3</a>, <a href="5-si.html#SP6_1">§6.1</a>, <a href="5-si.html#SP6_2">§6.2</a>, <a href="5-si.html#SP8">§8</a><br/>Dialogue Beat Instances - <a href="5-dbi.html#SP2_7_1">§2.7.1</a><br/>Dialogue - <a href="5-dli.html#SP3_13">§3.13</a>, <a href="5-dli.html#SP3_14_3">§3.14.3</a><br/>Rules - <a href="5-rls.html#SP12_4">§12.4</a>, <a href="5-rls.html#SP14_2">§14.2</a>, <a href="5-rls.html#SP15">§15</a>, <a href="5-rls.html#SP15_2_1">§15.2.1</a>, <a href="5-rls.html#SP17_2_1">§17.2.1</a><br/>Rulebooks - <a href="5-rlb.html#SP8_4_1_3">§8.4.1.3</a>, <a href="5-rlb.html#SP8_4_1_3_1">§8.4.1.3.1</a>, <a href="5-rlb.html#SP16">§16</a><br/>Variables - <a href="5-vrb.html#SP8">§8</a><br/>Relations - <a href="5-rlt.html#SP6_1">§6.1</a>, <a href="5-rlt.html#SP6_2">§6.2</a>, <a href="5-rlt.html#SP6_4_1">§6.4.1</a>, <a href="5-rlt.html#SP6_4_5_1">§6.4.5.1</a>, <a href="5-rlt.html#SP6_4_6">§6.4.6</a>, <a href="5-rlt.html#SP6_4_10">§6.4.10</a>, <a href="5-rlt.html#SP6_4_11">§6.4.11</a>, <a href="5-rlt.html#SP6_4_12">§6.4.12</a>, <a href="5-rlt.html#SP6_4_9_1">§6.4.9.1</a>, <a href="5-rlt.html#SP6_4_10_1">§6.4.10.1</a>, <a href="5-rlt.html#SP6_4_12_1">§6.4.12.1</a>, <a href="5-rlt.html#SP19_4">§19.4</a>, <a href="5-rlt.html#SP19_5">§19.5</a><br/>Literal Patterns - <a href="5-lp.html#SP4_2_1">§4.2.1</a>, <a href="5-lp.html#SP4_2_1_3_1">§4.2.1.3.1</a>, <a href="5-lp.html#SP4_2_1_3_1_1">§4.2.1.3.1.1</a>, <a href="5-lp.html#SP4_2_1_3_2">§4.2.1.3.2</a>, <a href="5-lp.html#SP4_2_1_2_1">§4.2.1.2.1</a>, <a href="5-lp.html#SP5_2">§5.2</a><br/>Kind Constructors - <a href="5-kc.html#SP10">§10</a>, <a href="5-kc.html#SP10_8">§10.8</a><br/>Actions - <a href="5-act2.html#SP8_5">§8.5</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP9">§9</a>, <a href="7-cgl.html#SP10">§10</a><br/>Command Grammar Tokens - <a href="7-cgt.html#SP1_1">§1.1</a>, <a href="7-cgt.html#SP1_2">§1.2</a>, <a href="7-cgt.html#SP1_2_4">§1.2.4</a>, <a href="7-cgt.html#SP1_2_5">§1.2.5</a>, <a href="7-cgt.html#SP1_2_8">§1.2.8</a>, <a href="7-cgt.html#SP1_2_9">§1.2.9</a>, <a href="7-cgt.html#SP1_2_10_1_1_1">§1.2.10.1.1.1</a>, <a href="7-cgt.html#SP1_3">§1.3</a>, <a href="7-cgt.html#SP1_4_3">§1.4.3</a>, <a href="7-cgt.html#SP1_5">§1.5</a><br/>Kind GPRs - <a href="7-kg.html#SP4">§4</a>, <a href="7-kg.html#SP5_1_1_1">§5.1.1.1</a><br/>Noun Filter Tokens - <a href="7-nft.html#SP3_1">§3.1</a>, <a href="7-nft.html#SP3_2">§3.2</a>, <a href="7-nft.html#SP4">§4</a><br/>Parse Name Properties - <a href="7-pnp.html#SP4_3_1">§4.3.1</a>, <a href="7-pnp.html#SP6_2">§6.2</a>, <a href="7-pnp.html#SP6_6">§6.6</a>, <a href="7-pnp.html#SP8">§8</a>, <a href="7-pnp.html#SP10">§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><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_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">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>§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">§4</a><br/>Text Substitutions - <a href="4-ts.html#SP7_2">§7.2</a>, <a href="4-ts.html#SP7_3">§7.3</a><br/>Adjectives - <a href="5-adj.html#SP15">§15</a><br/>Chronology - <a href="5-chr.html#SP8">§8</a><br/>Conjugations - <a href="5-cnj.html#SP7">§7</a><br/>Backdrop Instances - <a href="5-bi.html#SP2_1">§2.1</a><br/>Region Instances - <a href="5-ri.html#SP2">§2</a><br/>Scene Instances - <a href="5-si.html#SP4_2">§4.2</a>, <a href="5-si.html#SP4_3">§4.3</a><br/>Dialogue Beat Instances - <a href="5-dbi.html#SP2_6">§2.6</a>, <a href="5-dbi.html#SP2_7_1">§2.7.1</a><br/>Dialogue - <a href="5-dli.html#SP3_10">§3.10</a>, <a href="5-dli.html#SP3_11">§3.11</a>, <a href="5-dli.html#SP3_12">§3.12</a>, <a href="5-dli.html#SP3_14">§3.14</a><br/>Dialogue Choice Instances - <a href="5-dci.html#SP3_5">§3.5</a>, <a href="5-dci.html#SP3_6">§3.6</a><br/>Rulebooks - <a href="5-rlb.html#SP16">§16</a><br/>Relations - <a href="5-rlt.html#SP6_4_2">§6.4.2</a>, <a href="5-rlt.html#SP6_4_3">§6.4.3</a>, <a href="5-rlt.html#SP6_4_4">§6.4.4</a>, <a href="5-rlt.html#SP6_4_7">§6.4.7</a>, <a href="5-rlt.html#SP6_4_9_1">§6.4.9.1</a>, <a href="5-rlt.html#SP19_3">§19.3</a>, <a href="5-rlt.html#SP19_4">§19.4</a>, <a href="5-rlt.html#SP19_5">§19.5</a><br/>Literal Patterns - <a href="5-lp.html#SP4_1">§4.1</a>, <a href="5-lp.html#SP4_1_1_4">§4.1.1.4</a>, <a href="5-lp.html#SP5">§5</a>, <a href="5-lp.html#SP5_2">§5.2</a><br/>Named Action Patterns - <a href="5-nap.html#SP3">§3</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP9">§9</a><br/>Noun Filter Tokens - <a href="7-nft.html#SP3_2">§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">§3</a><br/>Adjectives - <a href="5-adj.html#SP6_1">§6.1</a>, <a href="5-adj.html#SP15">§15</a><br/>Chronology - <a href="5-chr.html#SP8">§8</a><br/>Conjugations - <a href="5-cnj.html#SP7">§7</a><br/>Equations - <a href="5-eqt.html#SP1">§1</a><br/>Backdrop Instances - <a href="5-bi.html#SP2_1">§2.1</a>, <a href="5-bi.html#SP2_2">§2.2</a><br/>Region Instances - <a href="5-ri.html#SP2">§2</a><br/>Scene Instances - <a href="5-si.html#SP3">§3</a><br/>Dialogue Beat Instances - <a href="5-dbi.html#SP2_6_1_1">§2.6.1.1</a>, <a href="5-dbi.html#SP2_6_2_1">§2.6.2.1</a>, <a href="5-dbi.html#SP2_6_3">§2.6.3</a>, <a href="5-dbi.html#SP2_7">§2.7</a>, <a href="5-dbi.html#SP2_7_1">§2.7.1</a><br/>Dialogue - <a href="5-dli.html#SP3_10_1">§3.10.1</a>, <a href="5-dli.html#SP3_11">§3.11</a>, <a href="5-dli.html#SP3_12">§3.12</a>, <a href="5-dli.html#SP3_14_3">§3.14.3</a><br/>Dialogue Choice Instances - <a href="5-dci.html#SP3_5_1">§3.5.1</a>, <a href="5-dci.html#SP3_6">§3.6</a><br/>Rulebooks - <a href="5-rlb.html#SP16">§16</a><br/>Relations - <a href="5-rlt.html#SP6_4">§6.4</a>, <a href="5-rlt.html#SP6_4_2">§6.4.2</a>, <a href="5-rlt.html#SP6_4_3">§6.4.3</a>, <a href="5-rlt.html#SP6_4_4">§6.4.4</a>, <a href="5-rlt.html#SP6_4_9_1">§6.4.9.1</a>, <a href="5-rlt.html#SP19_3">§19.3</a>, <a href="5-rlt.html#SP21">§21</a><br/>Named Action Patterns - <a href="5-nap.html#SP3">§3</a><br/>Noun Filter Tokens - <a href="7-nft.html#SP3_2">§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>§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>§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">§4</a><br/>Dialogue Beat Instances - <a href="5-dbi.html#SP2_7_1">§2.7.1</a><br/>Literal Patterns - <a href="5-lp.html#SP4_2">§4.2</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP14_3">§14.3</a>, <a href="7-cgl.html#SP14_5_1">§14.5.1</a><br/>Command Grammar Tokens - <a href="7-cgt.html#SP1_2_4">§1.2.4</a>, <a href="7-cgt.html#SP1_2_5">§1.2.5</a>, <a href="7-cgt.html#SP1_2_10">§1.2.10</a><br/>Kind GPRs - <a href="7-kg.html#SP5_1_1_1">§5.1.1.1</a><br/>Parse Name Properties - <a href="7-pnp.html#SP10">§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/>Dialogue Beat Instances - <a href="5-dbi.html#SP2_7_1">§2.7.1</a><br/>Literal Patterns - <a href="5-lp.html#SP4_2">§4.2</a>, <a href="5-lp.html#SP4_2_1">§4.2.1</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP6_5">§6.5</a>, <a href="7-cgl.html#SP6_6">§6.6</a>, <a href="7-cgl.html#SP6_8">§6.8</a>, <a href="7-cgl.html#SP14_3">§14.3</a>, <a href="7-cgl.html#SP14_5">§14.5</a><br/>Command Grammar Tokens - <a href="7-cgt.html#SP1_2_4">§1.2.4</a>, <a href="7-cgt.html#SP1_2_5">§1.2.5</a>, <a href="7-cgt.html#SP1_2_10_1_1_1">§1.2.10.1.1.1</a><br/>Kind GPRs - <a href="7-kg.html#SP5_1_1_1">§5.1.1.1</a><br/>Parse Name Properties - <a href="7-pnp.html#SP5">§5</a>, <a href="7-pnp.html#SP10">§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/>Dialogue Beat Instances - <a href="5-dbi.html#SP2_7_1">§2.7.1</a><br/>Literal Patterns - <a href="5-lp.html#SP4_2_1">§4.2.1</a>, <a href="5-lp.html#SP4_2_1_1">§4.2.1.1</a>, <a href="5-lp.html#SP4_2_1_2">§4.2.1.2</a>, <a href="5-lp.html#SP4_2_1_3">§4.2.1.3</a>, <a href="5-lp.html#SP4_2_1_3_1">§4.2.1.3.1</a>, <a href="5-lp.html#SP4_2_1_3_2">§4.2.1.3.2</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP10">§10</a>, <a href="7-cgl.html#SP14_5_1">§14.5.1</a><br/>Command Grammar Tokens - <a href="7-cgt.html#SP1_1_1_1">§1.1.1.1</a>, <a href="7-cgt.html#SP1_2_4">§1.2.4</a>, <a href="7-cgt.html#SP1_2_5">§1.2.5</a>, <a href="7-cgt.html#SP1_2_10_1_1_1">§1.2.10.1.1.1</a><br/>Kind GPRs - <a href="7-kg.html#SP5_1_1_1">§5.1.1.1</a><br/>Parse Name Properties - <a href="7-pnp.html#SP10_2">§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">❮</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="progresssection"><a href="2-ie.html">ie</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">❯</a></li></ul></div>
|
|
</nav><!--End of weave-->
|
|
|
|
</main>
|
|
</body>
|
|
</html>
|
|
|