1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-06-16 23:30:44 +03:00

The dawn of DialogueKit

This commit is contained in:
Graham Nelson 2022-09-06 23:03:04 +01:00
parent c25d6f41e1
commit 0d6eba5bfd
44 changed files with 460 additions and 87 deletions

View file

@ -1,6 +1,6 @@
# Inform 7
[Version](notes/versioning.md): 10.2.0-beta+6V51 'Krypton' (5 September 2022)
[Version](notes/versioning.md): 10.2.0-beta+6V52 'Krypton' (6 September 2022)
## About Inform
@ -121,6 +121,7 @@ The following webs are the source for kits of Inter code shipped with Inform (at
* EnglishLanguageKit - Support for English as the natural language used - [★ Web](https://ganelson.github.io/inform/EnglishLanguageKit/index.html)
* CommandParserKit - Support for parsing turn-by-turn commands in interactive fiction - [★ Web](https://ganelson.github.io/inform/CommandParserKit/index.html)
* BasicInformExtrasKit - Additional support needed only if the Standard Rules are not used - [★ Web](https://ganelson.github.io/inform/BasicInformExtrasKit/index.html)
* DialogueKit - Additional support for dialogue (under construction) - [★ Web](https://ganelson.github.io/inform/DialogueKit/index.html)
### Extensions shipped with Inform

View file

@ -1,3 +1,3 @@
Prerelease: beta
Build Date: 5 September 2022
Build Number: 6V51
Build Date: 6 September 2022
Build Number: 6V52

View file

@ -63,6 +63,7 @@ web: "EnglishLanguageKit" at "inform7/Internal/Inter/EnglishLanguageKit" in "doc
web: "CommandParserKit" at "inform7/Internal/Inter/CommandParserKit" in "docs/CommandParserKit"
web: "BasicInformKit" at "inform7/Internal/Inter/BasicInformKit" in "docs/BasicInformKit"
web: "BasicInformExtrasKit" at "inform7/Internal/Inter/BasicInformExtrasKit" in "docs/BasicInformExtrasKit"
web: "DialogueKit" at "inform7/Internal/Inter/DialogueKit" in "docs/DialogueKit"
breadcrumbs: "Home: //overview//"
web: "inblorb" at "inblorb" in "docs/inblorb"

View file

@ -31,4 +31,10 @@
<p>A kit of Inter code providing runtime support for interactive fiction
projects with a command parser interface.</p>
</div>
<div class="w3-quarter">
<a href="DialogueKit/index.html"><img src="docs-assets/ifkit.jpg" alt="DialogueKit" style="width:100%"></a>
<h3><a href="DialogueKit/index.html">DialogueKit</a></h3>
<p>A kit of Inter code eventually to provide runtime support for dialogue, an experimental
new feature of Inform which is not yet implemented.</p>
</div>
</div>

View file

@ -0,0 +1,68 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Director Template</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">
<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 'Director Template' generated by Inweb-->
<div class="breadcrumbs">
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../extensions.html">Kits</a></li><li><b>DialogueKit</b></li></ul></div>
<p class="purpose">Run-time support for dialogue.</p>
<ul class="toc"><li><a href="S-drc.html#SP1">&#167;1. Placeholder</a></li></ul><hr class="tocbar">
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. Placeholder. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">[ </span><span class="identifier-syntax">DirectorBegin</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">rfalse</span><span class="plain-syntax">;</span>
<span class="plain-syntax">];</span>
</pre>
<!--End of weave-->
</main>
</body>
</html>

View file

@ -0,0 +1,64 @@
<html>
<head>
<title>DialogueKit</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">
</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">
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../extensions.html">Kits</a></li><li><b>DialogueKit</b></li></ul>
<p class="purpose">Inter-level support for dialogue in Inform projects. This is version 1.</p>
<hr>
<div class="contentspage">
<ul class="chapterlist">
<li>
<p class="chapterentry"><a href="S-drc.html">
<spon class="sectiontitle">Director Template</span></a> -
<span class="sectionpurpose">Run-time support for dialogue.</span></p>
</li>
</ul>
</div>
<hr>
<p class="purpose">Powered by <a href="https://github.com/ganelson/inweb">Inweb</a>.</p>
</main>
</body>
</html>

View file

@ -87,6 +87,7 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">scene_name</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cue_at</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">heading</span><span class="plain-syntax"> *</span><span class="identifier-syntax">under_heading</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">as_instance</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">dialogue_beat</span><span class="plain-syntax"> *</span><span class="identifier-syntax">immediately_after</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">some_time_after</span><span class="plain-syntax">; </span><span class="comment-syntax"> of </span><span class="extract"><span class="extract-syntax">dialogue_beat</span></span>
@ -99,6 +100,7 @@ function togglePopup(material_id) {
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">dialogue_line</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">line_name</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">as_instance</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">line_at</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">speaker_text</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">speech_text</span><span class="plain-syntax">;</span>
@ -176,6 +178,17 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><span class="string-syntax">"which is not allowed. It can be anonymous, but otherwise can only have "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"one name (either as a beat or as a scene, and not both)."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">db</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">beat_name</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::empty</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">faux_name</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">faux_name</span><span class="plain-syntax">, </span><span class="string-syntax">"beat-%d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">db</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax"> + </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Feeds::feed_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">faux_name</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">faux_name</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><a href="8-cu.html#SP1" class="function-link"><span class="function-syntax">Propositions::Abstract::to_create_something</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_dialogue_beat</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Assert::true</span><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">db</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">as_instance</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Instances::latest</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">db</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
@ -326,6 +339,17 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><span class="identifier-syntax">precursor_dialogue_lines</span><span class="plain-syntax">[</span><span class="identifier-syntax">L</span><span class="plain-syntax">] = </span><span class="identifier-syntax">dl</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=</span><span class="identifier-syntax">L</span><span class="plain-syntax">+1; </span><span class="identifier-syntax">i</span><span class="plain-syntax">&lt;</span><span class="constant-syntax">MAX_DIALOGUE_LINE_NESTING</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) </span><span class="identifier-syntax">precursor_dialogue_lines</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</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">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">dl</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">line_name</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::empty</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">faux_name</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">faux_name</span><span class="plain-syntax">, </span><span class="string-syntax">"line-%d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">dl</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax"> + </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Feeds::feed_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">faux_name</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">faux_name</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><a href="8-cu.html#SP1" class="function-link"><span class="function-syntax">Propositions::Abstract::to_create_something</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_dialogue_line</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Assert::true</span><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">dl</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">as_instance</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Instances::latest</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">dl</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>

View file

@ -78,7 +78,7 @@ their existence.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="8-tcp.html#SP4" class="function-link"><span class="function-syntax">CreationPredicates::is_a_const_up</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Terms::new_variable</span><span class="plain-syntax">(0));</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Propositions::Abstract::to_create_something</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">Propositions::Abstract::to_create_something</span></span>:<br/>New Property Requests - <a href="3-npr.html#SP5_11">&#167;5.11</a><br/>The Creator - <a href="4-tc.html#SP4_4_1_1">&#167;4.4.1.1</a>, <a href="4-tc.html#SP4_4_2_1">&#167;4.4.2.1</a>, <a href="4-tc.html#SP4_4_2_2">&#167;4.4.2.2</a>, <a href="4-tc.html#SP4_4_2_3">&#167;4.4.2.3</a>, <a href="4-tc.html#SP7_4_1">&#167;7.4.1</a>, <a href="4-tc.html#SP11">&#167;11</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Propositions::Abstract::to_create_something</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">Propositions::Abstract::to_create_something</span></span>:<br/>New Property Requests - <a href="3-npr.html#SP5_11">&#167;5.11</a><br/>The Creator - <a href="4-tc.html#SP4_4_1_1">&#167;4.4.1.1</a>, <a href="4-tc.html#SP4_4_2_1">&#167;4.4.2.1</a>, <a href="4-tc.html#SP4_4_2_2">&#167;4.4.2.2</a>, <a href="4-tc.html#SP4_4_2_3">&#167;4.4.2.3</a>, <a href="4-tc.html#SP7_4_1">&#167;7.4.1</a>, <a href="4-tc.html#SP11">&#167;11</a><br/>Dialogue - <a href="7-dlg.html#SP3">&#167;3</a>, <a href="7-dlg.html#SP8">&#167;8</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">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Atoms::QUANTIFIER_new</span><span class="plain-syntax">(</span><span class="identifier-syntax">exists_quantifier</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">K</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</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">prop</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Propositions::concatenate</span><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">,</span>

View file

@ -970,6 +970,8 @@ which compilation unit the node belongs.
<span class="definition-keyword">enum</span> <span class="constant-syntax">constant_activity_ANNOT</span><span class="plain-syntax"> </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">activity</span></span><span class="comment-syntax">: for constant values</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">constant_binary_predicate_ANNOT</span><span class="plain-syntax"> </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">binary_predicate</span></span><span class="comment-syntax">: for constant values</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">constant_constant_phrase_ANNOT</span><span class="plain-syntax"> </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">constant_phrase</span></span><span class="comment-syntax">: for constant values</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">constant_dialogue_beat_ANNOT</span><span class="plain-syntax"> </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">dialogue_beat</span></span><span class="comment-syntax">: for constant values</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">constant_dialogue_line_ANNOT</span><span class="plain-syntax"> </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">dialogue_line</span></span><span class="comment-syntax">: for constant values</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">constant_enumeration_ANNOT</span><span class="plain-syntax"> </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">int</span></span><span class="comment-syntax">: which one from an enumerated kind</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">constant_equation_ANNOT</span><span class="plain-syntax"> </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">equation</span></span><span class="comment-syntax">: for constant values</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">constant_instance_ANNOT</span><span class="plain-syntax"> </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">instance</span></span><span class="comment-syntax">: for constant values</span>
@ -1005,6 +1007,8 @@ which compilation unit the node belongs.
<span class="identifier-syntax">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain-syntax">(</span><span class="identifier-syntax">constant_activity</span><span class="plain-syntax">, </span><span class="identifier-syntax">activity</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain-syntax">(</span><span class="identifier-syntax">constant_binary_predicate</span><span class="plain-syntax">, </span><span class="identifier-syntax">binary_predicate</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain-syntax">(</span><span class="identifier-syntax">constant_constant_phrase</span><span class="plain-syntax">, </span><span class="identifier-syntax">constant_phrase</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain-syntax">(</span><span class="identifier-syntax">constant_dialogue_beat</span><span class="plain-syntax">, </span><span class="identifier-syntax">dialogue_beat</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain-syntax">(</span><span class="identifier-syntax">constant_dialogue_line</span><span class="plain-syntax">, </span><span class="identifier-syntax">dialogue_line</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain-syntax">(</span><span class="identifier-syntax">constant_equation</span><span class="plain-syntax">, </span><span class="identifier-syntax">equation</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain-syntax">(</span><span class="identifier-syntax">constant_instance</span><span class="plain-syntax">, </span><span class="identifier-syntax">instance</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain-syntax">(</span><span class="identifier-syntax">constant_local_variable</span><span class="plain-syntax">, </span><span class="identifier-syntax">local_variable</span><span class="plain-syntax">)</span>
@ -1033,6 +1037,8 @@ which compilation unit the node belongs.
<span class="identifier-syntax">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain-syntax">(</span><span class="identifier-syntax">constant_activity</span><span class="plain-syntax">, </span><span class="identifier-syntax">activity</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain-syntax">(</span><span class="identifier-syntax">constant_binary_predicate</span><span class="plain-syntax">, </span><span class="identifier-syntax">binary_predicate</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain-syntax">(</span><span class="identifier-syntax">constant_constant_phrase</span><span class="plain-syntax">, </span><span class="identifier-syntax">constant_phrase</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain-syntax">(</span><span class="identifier-syntax">constant_dialogue_beat</span><span class="plain-syntax">, </span><span class="identifier-syntax">dialogue_beat</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain-syntax">(</span><span class="identifier-syntax">constant_dialogue_line</span><span class="plain-syntax">, </span><span class="identifier-syntax">dialogue_line</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain-syntax">(</span><span class="identifier-syntax">constant_equation</span><span class="plain-syntax">, </span><span class="identifier-syntax">equation</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain-syntax">(</span><span class="identifier-syntax">constant_instance</span><span class="plain-syntax">, </span><span class="identifier-syntax">instance</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain-syntax">(</span><span class="identifier-syntax">constant_local_variable</span><span class="plain-syntax">, </span><span class="identifier-syntax">local_variable</span><span class="plain-syntax">)</span>
@ -1063,6 +1069,10 @@ which compilation unit the node belongs.
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::declare_type</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="constant-syntax">constant_constant_phrase_ANNOT</span><span class="plain-syntax">, </span><a href="1-inaa.html#SP22" class="function-link"><span class="function-syntax">CoreSyntax::write_constant_constant_phrase_ANNOT</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::declare_type</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="constant-syntax">constant_dialogue_beat_ANNOT</span><span class="plain-syntax">, </span><a href="1-inaa.html#SP22" class="function-link"><span class="function-syntax">CoreSyntax::write_constant_dialogue_beat_ANNOT</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::declare_type</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="constant-syntax">constant_dialogue_line_ANNOT</span><span class="plain-syntax">, </span><a href="1-inaa.html#SP22" class="function-link"><span class="function-syntax">CoreSyntax::write_constant_dialogue_line_ANNOT</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::declare_type</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="constant-syntax">constant_equation_ANNOT</span><span class="plain-syntax">, </span><a href="1-inaa.html#SP22" class="function-link"><span class="function-syntax">CoreSyntax::write_constant_equation_ANNOT</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::declare_type</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="constant-syntax">constant_instance_ANNOT</span><span class="plain-syntax">, </span><a href="1-inaa.html#SP22" class="function-link"><span class="function-syntax">CoreSyntax::write_constant_instance_ANNOT</span></a><span class="plain-syntax">);</span>
@ -1141,6 +1151,14 @@ which compilation unit the node belongs.
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"}"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CoreSyntax::write_constant_dialogue_beat_ANNOT</span><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">dialogue_beat</span><span class="plain-syntax"> *</span><span class="identifier-syntax">db</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_constant_dialogue_beat</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">db</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" {beat: %W}"</span><span class="plain-syntax">, </span><span class="identifier-syntax">db</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">beat_name</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CoreSyntax::write_constant_dialogue_line_ANNOT</span><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">dialogue_line</span><span class="plain-syntax"> *</span><span class="identifier-syntax">dl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_constant_dialogue_line</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">dl</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" {line: %W}"</span><span class="plain-syntax">, </span><span class="identifier-syntax">dl</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">line_name</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CoreSyntax::write_constant_equation_ANNOT</span><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">equation</span><span class="plain-syntax"> *</span><span class="identifier-syntax">eqn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_constant_equation</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">eqn</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" {equation: %W}"</span><span class="plain-syntax">, </span><span class="identifier-syntax">eqn</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">equation_text</span><span class="plain-syntax">);</span>
@ -1305,6 +1323,8 @@ which compilation unit the node belongs.
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow</span><span class="plain-syntax">(</span><span class="constant-syntax">CONSTANT_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">constant_activity_ANNOT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow</span><span class="plain-syntax">(</span><span class="constant-syntax">CONSTANT_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">constant_binary_predicate_ANNOT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow</span><span class="plain-syntax">(</span><span class="constant-syntax">CONSTANT_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">constant_constant_phrase_ANNOT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow</span><span class="plain-syntax">(</span><span class="constant-syntax">CONSTANT_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">constant_dialogue_beat_ANNOT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow</span><span class="plain-syntax">(</span><span class="constant-syntax">CONSTANT_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">constant_dialogue_line_ANNOT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow</span><span class="plain-syntax">(</span><span class="constant-syntax">CONSTANT_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">constant_enumeration_ANNOT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow</span><span class="plain-syntax">(</span><span class="constant-syntax">CONSTANT_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">constant_equation_ANNOT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow</span><span class="plain-syntax">(</span><span class="constant-syntax">CONSTANT_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">constant_instance_ANNOT</span><span class="plain-syntax">);</span>

View file

@ -179,6 +179,8 @@ feature in question is inactive, they will remain <span class="extract"><span cl
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K_dialogue_beat</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K_dialogue_line</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K_equation</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K_grammatical_gender</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K_natural_language</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
@ -265,6 +267,8 @@ it is. There is no need for speed here.
<span class="reserved-syntax">kind</span><span class="plain-syntax"> **</span><span class="function-syntax">FamiliarKinds::known_kind</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">FamiliarKinds::known_kind</span></span>:<br/>Kind Constructors - <a href="4-kc2.html#SP9">&#167;9</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sn</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">IDENTIFIERS_CORRESPOND</span><span class="plain-syntax">(</span><span class="string-syntax">"ARITHMETIC_VALUE_TY"</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">K_arithmetic_value</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">IDENTIFIERS_CORRESPOND</span><span class="plain-syntax">(</span><span class="string-syntax">"DIALOGUE_BEAT_TY"</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">K_dialogue_beat</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">IDENTIFIERS_CORRESPOND</span><span class="plain-syntax">(</span><span class="string-syntax">"DIALOGUE_LINE_TY"</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">K_dialogue_line</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">IDENTIFIERS_CORRESPOND</span><span class="plain-syntax">(</span><span class="string-syntax">"ENUMERATED_VALUE_TY"</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">K_enumerated_value</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">IDENTIFIERS_CORRESPOND</span><span class="plain-syntax">(</span><span class="string-syntax">"EQUATION_TY"</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">K_equation</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">IDENTIFIERS_CORRESPOND</span><span class="plain-syntax">(</span><span class="string-syntax">"TEXT_TY"</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">K_text</span><span class="plain-syntax">);</span>

View file

@ -2063,6 +2063,8 @@ and <a href="../pipeline-module/4-tsk.html" class="internal">The Standard Kits (
<span class="definition-keyword">enum</span> <span class="constant-syntax">K_RULEBOOK_OUTCOME_XPACKAGE</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">K_RESPONSE_XPACKAGE</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">K_SCENE_XPACKAGE</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">K_DIALOGUE_BEAT_XPACKAGE</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">K_DIALOGUE_LINE_XPACKAGE</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">CAPSHORTNAME_HL</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">DECIMAL_TOKEN_INNER_HL</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">TIME_TOKEN_INNER_HL</span>
@ -2072,6 +2074,8 @@ and <a href="../pipeline-module/4-tsk.html" class="internal">The Standard Kits (
<span class="definition-keyword">enum</span> <span class="constant-syntax">PRINT_SOUND_NAME_HL</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">PRINT_EXTERNAL_FILE_NAME_HL</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">PRINT_SCENE_HL</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">PRINT_DIALOGUE_BEAT_HL</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">PRINT_DIALOGUE_LINE_HL</span>
</pre>
<p class="commentary firstcommentary"><a id="SP8_1_52" class="paragraph-anchor"></a><b>&#167;8.1.52. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">The rest</span><span class="named-paragraph-number">8.1.52</span></span><span class="comment-syntax"> =</span>
</p>
@ -2112,6 +2116,14 @@ and <a href="../pipeline-module/4-tsk.html" class="internal">The Standard Kits (
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN</span><span class="plain-syntax">(</span><span class="identifier-syntax">LocationRequirements::this_exotic_package</span><span class="plain-syntax">(</span><span class="constant-syntax">K_SCENE_XPACKAGE</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">H_F_T</span><span class="plain-syntax">(</span><span class="constant-syntax">PRINT_SCENE_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"print_fn"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"PrintSceneName"</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="constant-syntax">H_END</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN</span><span class="plain-syntax">(</span><span class="identifier-syntax">LocationRequirements::this_exotic_package</span><span class="plain-syntax">(</span><span class="constant-syntax">K_DIALOGUE_BEAT_XPACKAGE</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">H_F_T</span><span class="plain-syntax">(</span><span class="constant-syntax">PRINT_DIALOGUE_BEAT_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"print_fn"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"PrintDialogueBeatName"</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="constant-syntax">H_END</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN</span><span class="plain-syntax">(</span><span class="identifier-syntax">LocationRequirements::this_exotic_package</span><span class="plain-syntax">(</span><span class="constant-syntax">K_DIALOGUE_LINE_XPACKAGE</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">H_F_T</span><span class="plain-syntax">(</span><span class="constant-syntax">PRINT_DIALOGUE_LINE_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"print_fn"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"PrintDialogueLineName"</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="constant-syntax">H_END</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-hrr.html#SP8_1">&#167;8.1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP8_2_1" class="paragraph-anchor"></a><b>&#167;8.2.1. Architectural symbols. </b>These are built-in constants (and one built-in variable, <span class="extract"><span class="extract-syntax">self</span></span>) which come
@ -2228,6 +2240,8 @@ exotic, but which are locations not easily falling into patterns. Here they are:
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">K_RULEBOOK_OUTCOME_XPACKAGE:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="5-kc.html#SP4" class="function-link"><span class="function-syntax">RTKindConstructors::kind_package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_rulebook_outcome</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">K_RESPONSE_XPACKAGE:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="5-kc.html#SP4" class="function-link"><span class="function-syntax">RTKindConstructors::kind_package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_response</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">K_SCENE_XPACKAGE:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="5-kc.html#SP4" class="function-link"><span class="function-syntax">RTKindConstructors::kind_package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_scene</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">K_DIALOGUE_BEAT_XPACKAGE:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="5-kc.html#SP4" class="function-link"><span class="function-syntax">RTKindConstructors::kind_package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_dialogue_beat</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">K_DIALOGUE_LINE_XPACKAGE:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="5-kc.html#SP4" class="function-link"><span class="function-syntax">RTKindConstructors::kind_package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_dialogue_line</span><span class="plain-syntax">);</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">"unknown exotic package"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>

View file

@ -315,6 +315,16 @@ of the kind which the constructor makes:
<span class="plain-syntax"> </span><a href="2-hrr.html#SP17" class="function-link"><span class="function-syntax">Hierarchy::make_available</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">construct</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">pr_iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">K</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">construct</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">pr_iname</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::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_dialogue_beat</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">K</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">construct</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">pr_iname</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">PRINT_DIALOGUE_BEAT_HL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-hrr.html#SP17" class="function-link"><span class="function-syntax">Hierarchy::make_available</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">construct</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">pr_iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">K</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">construct</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">pr_iname</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::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_dialogue_line</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">K</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">construct</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">pr_iname</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">PRINT_DIALOGUE_LINE_HL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-hrr.html#SP17" class="function-link"><span class="function-syntax">Hierarchy::make_available</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">construct</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">pr_iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">K</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">construct</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">pr_iname</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">external</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>

View file

@ -632,8 +632,11 @@ on <a href="../WorldModelKit/index.html" class="internal">WorldModelKit</a>, thr
<span class="plain-syntax"> </span><span class="reserved-syntax">inform_language</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><span class="identifier-syntax">project</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">language_of_play</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">L</span><span class="plain-syntax">) </span><a href="5-ls.html#SP6" class="function-link"><span class="function-syntax">Languages::add_kit_dependencies_to_project</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="plain-syntax">, </span><span class="identifier-syntax">project</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"no language of play"</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">no_word_from_JSON</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">forcible_basic_mode</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">no_word_from_JSON</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">forcible_basic_mode</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><a href="5-ps2.html#SP18" class="function-link"><span class="function-syntax">Projects::add_kit_dependency</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">project</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"CommandParserKit"</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">project</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">syntax_tree</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">contains_dialogue</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><a href="5-ps2.html#SP18" class="function-link"><span class="function-syntax">Projects::add_kit_dependency</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">project</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"DialogueKit"</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="5-ps2.html#SP20">&#167;20</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP20_2" class="paragraph-anchor"></a><b>&#167;20.2. </b>We perform this first with <span class="extract"><span class="extract-syntax">parity</span></span> being <span class="extract"><span class="extract-syntax">TRUE</span></span>, then <span class="extract"><span class="extract-syntax">FALSE</span></span>.

View file

@ -89,6 +89,7 @@ it includes, will form a single <a href="2-st.html#SP2" class="internal">parse_n
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bud_parent_stack</span><span class="plain-syntax">[</span><span class="constant-syntax">MAX_BUD_STACK_SIZE</span><span class="plain-syntax">];</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">last_sentence</span><span class="plain-syntax">; </span><span class="comment-syntax"> cached position in tree</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">allow_last_sentence_cacheing</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">contains_dialogue</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">trace_sentences</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="constant-syntax">HEADING_TREE_SYNTAX_TYPE</span><span class="plain-syntax"> *</span><span class="identifier-syntax">headings</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
@ -101,6 +102,7 @@ it includes, will form a single <a href="2-st.html#SP2" class="internal">parse_n
<span class="plain-syntax"> </span><span class="identifier-syntax">T</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">last_sentence</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">T</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">allow_last_sentence_cacheing</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">-&gt;</span><span class="element-syntax">trace_sentences</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">-&gt;</span><span class="element-syntax">contains_dialogue</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="2-st.html#SP3" class="function-link"><span class="function-syntax">SyntaxTree::push_bud</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">T</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">root_node</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">NEW_HEADING_TREE_SYNTAX_CALLBACK</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">T</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">headings</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NEW_HEADING_TREE_SYNTAX_CALLBACK</span><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">);</span>
@ -108,7 +110,7 @@ it includes, will form a single <a href="2-st.html#SP2" class="internal">parse_n
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">T</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<ul class="endnotetexts"><li>The structure parse_node_tree is accessed in 2/tv and here.</li></ul>
<ul class="endnotetexts"><li>The structure parse_node_tree is accessed in 2/tv, 3/snt and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. Buds and grafts. </b>"Buds" are positions in the tree to which new sentence subtrees can be grafted:
</p>

View file

@ -942,6 +942,7 @@ order to catch improbable unmatched-bracket errors with tidy error messages.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">T</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">contains_dialogue</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Lexer::word</span><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) == </span><span class="identifier-syntax">OPENBRACKET_V</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">Lexer::word</span><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::last_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) == </span><span class="identifier-syntax">CLOSEBRACKET_V</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-snt.html#SP6_9_9_1" class="named-paragraph-link"><span class="named-paragraph">This is a dialogue cue</span><span class="named-paragraph-number">6.9.9.1</span></a></span><span class="plain-syntax">;</span>

View file

@ -95,6 +95,10 @@ pointers:
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_FROM</span><span class="plain-syntax">(</span><span class="identifier-syntax">binary_predicate</span><span class="plain-syntax">, </span><span class="identifier-syntax">Kinds::base_construction</span><span class="plain-syntax">(</span><span class="identifier-syntax">CON_relation</span><span class="plain-syntax">)) }</span>
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_constant_phrase</span><span class="plain-syntax">(</span><span class="identifier-syntax">constant_phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_FROM</span><span class="plain-syntax">(</span><span class="identifier-syntax">constant_phrase</span><span class="plain-syntax">, </span><span class="identifier-syntax">Kinds::base_construction</span><span class="plain-syntax">(</span><span class="identifier-syntax">CON_phrase</span><span class="plain-syntax">)) }</span>
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_dialogue_beat</span><span class="plain-syntax">(</span><span class="identifier-syntax">dialogue_beat</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_FROM</span><span class="plain-syntax">(</span><span class="identifier-syntax">dialogue_beat</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_dialogue_beat</span><span class="plain-syntax">) }</span>
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_dialogue_line</span><span class="plain-syntax">(</span><span class="identifier-syntax">dialogue_line</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_FROM</span><span class="plain-syntax">(</span><span class="identifier-syntax">dialogue_line</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_dialogue_line</span><span class="plain-syntax">) }</span>
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_equation</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">Rvalues::from_equation</span></span>:<br/>Type Expressions and Values - <a href="4-teav.html#SP11_1">&#167;11.1</a>, <a href="4-teav.html#SP11_3">&#167;11.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">equation</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_FROM</span><span class="plain-syntax">(</span><span class="identifier-syntax">equation</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_equation</span><span class="plain-syntax">) }</span>
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_named_rulebook_outcome</span><span class="plain-syntax">(</span><span class="identifier-syntax">named_rulebook_outcome</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>

View file

@ -523,8 +523,11 @@ on //WorldModelKit//, through the if-this-then-that mechanism.
inform_language *L = project->language_of_play;
if (L) Languages::add_kit_dependencies_to_project(L, project);
else internal_error("no language of play");
if ((no_word_from_JSON) && (forcible_basic_mode == FALSE))
if ((no_word_from_JSON) && (forcible_basic_mode == FALSE)) {
Projects::add_kit_dependency(project, I"CommandParserKit", NULL, NULL, NULL);
if (project->syntax_tree->contains_dialogue)
Projects::add_kit_dependency(project, I"DialogueKit", NULL, NULL, NULL);
}
@ We perform this first with |parity| being |TRUE|, then |FALSE|.

View file

@ -1,10 +1,10 @@
Total memory consumption was 123126K = 120 MB
Total memory consumption was 123143K = 120 MB
---- was used for 2048105 objects, in 364642 frames in 0 x 800K = 0K = 0 MB:
---- was used for 2048354 objects, in 364792 frames in 0 x 800K = 0K = 0 MB:
33.1% inter_tree_node_array 58 x 8192 = 475136 objects, 41813824 bytes
20.6% text_stream_array 4616 x 100 = 461600 objects, 25997312 bytes
19.4% linked_list 43886 objects, 24576160 bytes
20.6% text_stream_array 4617 x 100 = 461700 objects, 26002944 bytes
19.5% linked_list 43933 objects, 24602480 bytes
11.1% inter_symbol_array 132 x 1024 = 135168 objects, 14061696 bytes
10.5% inter_error_stash_array 101 x 1024 = 103424 objects, 13241504 bytes
8.2% parse_node 129721 objects, 10377680 bytes
@ -13,7 +13,7 @@ Total memory consumption was 123126K = 120 MB
2.6% pcalc_prop_array 25 x 1000 = 25000 objects, 3400800 bytes
2.5% inter_name_array 67 x 1000 = 67000 objects, 3218144 bytes
2.0% kind_array 66 x 1000 = 66000 objects, 2642112 bytes
1.7% scan_directory 521 objects, 2150688 bytes
1.7% scan_directory 528 objects, 2179584 bytes
1.6% inter_name_generator_array 51 x 1000 = 51000 objects, 2041632 bytes
1.5% inter_schema_token 13964 objects, 2010816 bytes
1.4% package_request 21143 objects, 1860584 bytes
@ -36,7 +36,7 @@ Total memory consumption was 123126K = 120 MB
0.3% local_variable_array 47 x 100 = 4700 objects, 452704 bytes
0.3% verb_usage 1128 objects, 388032 bytes
0.2% rule 470 objects, 368480 bytes
0.2% dictionary 7585 objects, 364080 bytes
0.2% dictionary 7588 objects, 364224 bytes
0.2% verb_form 386 objects, 348944 bytes
0.2% noun 2385 objects, 286200 bytes
0.2% compilation_subtask 3355 objects, 268400 bytes
@ -44,7 +44,7 @@ Total memory consumption was 123126K = 120 MB
0.2% inference_subject 666 objects, 261072 bytes
0.1% vanilla_function 3684 objects, 235776 bytes
0.1% binary_predicate 322 objects, 170016 bytes
0.1% hierarchy_location 1124 objects, 161856 bytes
0.1% hierarchy_location 1126 objects, 162144 bytes
0.1% linguistic_stock_item 3321 objects, 159408 bytes
0.1% rule_family_data 401 objects, 147568 bytes
0.1% nonterminal 762 objects, 140208 bytes
@ -59,7 +59,7 @@ Total memory consumption was 123126K = 120 MB
---- lexical_cluster 2522 objects, 80704 bytes
---- pcalc_term_array 2 x 1000 = 2000 objects, 80064 bytes
---- kind_variable_declaration 1655 objects, 79440 bytes
---- inter_tree 6 objects, 79344 bytes
---- inter_tree 6 objects, 79440 bytes
---- label_namespace 1472 objects, 70656 bytes
---- rulebook 407 objects, 68376 bytes
---- spatial_data 671 objects, 64416 bytes
@ -99,25 +99,25 @@ Total memory consumption was 123126K = 120 MB
---- action_name 90 objects, 20160 bytes
---- nonlocal_variable 93 objects, 20088 bytes
---- property 146 objects, 19856 bytes
---- filename 490 objects, 19600 bytes
---- timed_rules_rfd_data 401 objects, 19248 bytes
---- filename 476 objects, 19040 bytes
---- method 380 objects, 18240 bytes
---- pcalc_prop_deferral 86 objects, 17888 bytes
---- instance 167 objects, 17368 bytes
---- parse_node_tree 19 objects, 16416 bytes
---- JSON_value 194 objects, 17072 bytes
---- parse_node_tree 19 objects, 16568 bytes
---- build_vertex 136 objects, 16320 bytes
---- understanding_reference_array 2 x 100 = 200 objects, 16064 bytes
---- to_phrase_request 59 objects, 16048 bytes
---- action_name_list_array 1 x 1000 objects, 16032 bytes
---- match_avinue_array 1 x 1000 objects, 16032 bytes
---- JSON_value 182 objects, 16016 bytes
---- build_vertex 129 objects, 15480 bytes
---- action_name_list_array 1 x 1000 objects, 16032 bytes
---- adjective 137 objects, 15344 bytes
---- pathname 375 objects, 15000 bytes
---- pathname 380 objects, 15200 bytes
---- booking_list 407 objects, 13024 bytes
---- adjective_iname_holder 320 objects, 12800 bytes
---- web_bibliographic_datum 174 objects, 11136 bytes
---- uniqueness_count 453 objects, 10872 bytes
---- inter_construct 30 objects, 10320 bytes
---- web_bibliographic_datum 145 objects, 9280 bytes
---- stopwatch_timer 115 objects, 9200 bytes
---- equation_node 68 objects, 7616 bytes
---- understanding_item_array 3 x 100 = 300 objects, 7296 bytes
@ -125,22 +125,22 @@ Total memory consumption was 123126K = 120 MB
---- determiner 22 objects, 7216 bytes
---- verb 108 objects, 6912 bytes
---- hierarchy_attachment_point 77 objects, 6776 bytes
---- inbuild_copy 55 objects, 6600 bytes
---- inbuild_work 102 objects, 6528 bytes
---- text_literal_holder 163 objects, 6520 bytes
---- inbuild_copy 54 objects, 6480 bytes
---- inbuild_work 101 objects, 6464 bytes
---- heading_tree 19 objects, 5320 bytes
---- inbuild_edition 72 objects, 5184 bytes
---- inbuild_edition 73 objects, 5256 bytes
---- explicit_action_array 1 x 100 objects, 4832 bytes
---- value_property_data 84 objects, 4704 bytes
---- parsing_pp_data 96 objects, 4608 bytes
---- section_md 45 objects, 4320 bytes
---- build_script 129 objects, 4128 bytes
---- compatibility_specification 83 objects, 3984 bytes
---- activity 35 objects, 3920 bytes
---- section_md 46 objects, 4416 bytes
---- build_script 136 objects, 4352 bytes
---- compatibility_specification 84 objects, 4032 bytes
---- command_line_switch 49 objects, 3920 bytes
---- parse_node_annotation_type 117 objects, 3744 bytes
---- submodule_request 84 objects, 3360 bytes
---- activity 35 objects, 3920 bytes
---- parse_node_annotation_type 119 objects, 3808 bytes
---- property_setting_bp_data 84 objects, 3360 bytes
---- submodule_request 84 objects, 3360 bytes
---- method_set 104 objects, 3328 bytes
---- kind_constructor_comparison_schema_array 1 x 100 objects, 3232 bytes
---- semver_range 31 objects, 3224 bytes
@ -157,7 +157,7 @@ Total memory consumption was 123126K = 120 MB
---- JSON_type 31 objects, 2232 bytes
---- scene 1 object, 2096 bytes
---- JSON_single_requirement 43 objects, 2064 bytes
---- build_step 24 objects, 1728 bytes
---- build_step 28 objects, 2016 bytes
---- pronoun_usage 42 objects, 1680 bytes
---- table_contribution_array 1 x 100 objects, 1632 bytes
---- inform_pipeline 24 objects, 1536 bytes
@ -175,30 +175,30 @@ Total memory consumption was 123126K = 120 MB
---- runtime_kind_structure 13 objects, 1040 bytes
---- quantifier 16 objects, 1024 bytes
---- submodule_identity 31 objects, 992 bytes
---- named_rulebook_outcome 15 objects, 960 bytes
---- pipeline_stage 20 objects, 960 bytes
---- named_rulebook_outcome 15 objects, 960 bytes
---- control_structure_phrase 12 objects, 864 bytes
---- web_md 6 objects, 864 bytes
---- cached_understanding 21 objects, 840 bytes
---- JSON_pair_requirement 26 objects, 832 bytes
---- phrase_option_array 1 x 100 objects, 824 bytes
---- inbuild_search_result 20 objects, 800 bytes
---- web_md 5 objects, 720 bytes
---- internal_test 15 objects, 720 bytes
---- relation_guard 5 objects, 640 bytes
---- inform_kit 6 objects, 624 bytes
---- implication 13 objects, 624 bytes
---- code_generation 1 object, 576 bytes
---- generated_segment 14 objects, 560 bytes
---- inter_warehouse_room 10 objects, 560 bytes
---- rulebook_outcome 17 objects, 544 bytes
---- chapter_md 6 objects, 528 bytes
---- small_word_set 11 objects, 528 bytes
---- inform_kit 5 objects, 520 bytes
---- inform_language 6 objects, 480 bytes
---- equation 4 objects, 480 bytes
---- inform_language 6 objects, 480 bytes
---- module 6 objects, 480 bytes
---- i6_memory_setting 14 objects, 448 bytes
---- inference_family 11 objects, 440 bytes
---- chapter_md 5 objects, 440 bytes
---- bp_family 13 objects, 416 bytes
---- module 5 objects, 400 bytes
---- inter_annotation_form 10 objects, 400 bytes
---- article_usage 8 objects, 384 bytes
---- source_file 5 objects, 360 bytes
@ -208,13 +208,13 @@ Total memory consumption was 123126K = 120 MB
---- door_dir_notice 5 objects, 320 bytes
---- pronoun 8 objects, 320 bytes
---- grammatical_category 8 objects, 320 bytes
---- tree_inventory 1 object, 312 bytes
---- inter_pipeline 1 object, 312 bytes
---- tree_inventory 1 object, 312 bytes
---- up_family 9 objects, 288 bytes
---- compilation_unit 5 objects, 280 bytes
---- contents_entry 7 objects, 280 bytes
---- explicit_bp_data 5 objects, 280 bytes
---- door_to_notice 5 objects, 280 bytes
---- contents_entry 7 objects, 280 bytes
---- verb_usage_tier 5 objects, 240 bytes
---- inform_project 1 object, 224 bytes
---- adjective_meaning_family 7 objects, 224 bytes
@ -222,19 +222,19 @@ Total memory consumption was 123126K = 120 MB
---- release_instructions 1 object, 208 bytes
---- code_generator 5 objects, 200 bytes
---- build_skill 5 objects, 200 bytes
---- plural_dictionary_entry 4 objects, 192 bytes
---- kit_dependency 4 objects, 192 bytes
---- plural_dictionary_entry 4 objects, 192 bytes
---- inference_subject_family 5 objects, 160 bytes
---- element_activation 5 objects, 160 bytes
---- imperative_defn_family 4 objects, 160 bytes
---- inter_architecture 4 objects, 160 bytes
---- attachment_instruction 4 objects, 160 bytes
---- element_activation 4 objects, 128 bytes
---- inbuild_nest 3 objects, 120 bytes
---- local_block_value 2 objects, 112 bytes
---- inform_kit_ittt 2 objects, 96 bytes
---- compile_task_data 1 object, 80 bytes
---- group_together_function 2 objects, 80 bytes
---- article 2 objects, 80 bytes
---- compile_task_data 1 object, 80 bytes
---- build_methodology 1 object, 56 bytes
---- figures_data 1 object, 56 bytes
---- inter_warehouse 1 object, 56 bytes
@ -247,8 +247,8 @@ Total memory consumption was 123126K = 120 MB
100.0% was used for memory not allocated for objects:
57.5% text stream storage 72579248 bytes in 479038 claims
4.1% dictionary storage 5294080 bytes in 7585 claims
57.5% text stream storage 72595224 bytes in 479193 claims
4.1% dictionary storage 5295616 bytes in 7588 claims
---- sorting 1528 bytes in 159 claims
5.7% source text 7200000 bytes in 3 claims
8.5% source text details 10800000 bytes in 2 claims
@ -265,5 +265,5 @@ Total memory consumption was 123126K = 120 MB
---- code generation workspace for objects 3480 bytes in 19 claims
0.2% emitter array storage 280288 bytes in 1999 claims
-147.-4% was overhead - -185900280 bytes = -181543K = -177 MB
-147.-4% was overhead - -185967744 bytes = -181609K = -177 MB

View file

@ -1,33 +1,33 @@
100.0% in inform7 run
71.2% in compilation to Inter
50.0% in //Sequence::undertake_queued_tasks//
4.9% in //MajorNodes::pre_pass//
3.5% in //MajorNodes::pass_1//
1.9% in //RTPhrasebook::compile_entries//
1.7% in //ImperativeDefinitions::assess_all//
1.3% in //RTKindConstructors::compile//
1.1% in //Sequence::lint_inter//
0.5% in //MajorNodes::pass_2//
0.5% in //Sequence::undertake_queued_tasks//
0.5% in //World::stage_V//
0.3% in //ImperativeDefinitions::compile_first_block//
0.3% in //Sequence::undertake_queued_tasks//
0.1% in //CompletionModule::compile//
0.1% in //InferenceSubjects::emit_all//
0.1% in //RTKindConstructors::compile_permissions//
0.1% in //Task::make_built_in_kind_constructors//
0.1% in //World::stages_II_and_III//
2.7% not specifically accounted for
25.7% in running Inter pipeline
10.0% in step 14/15: generate inform6 -> auto.inf
5.7% in step 5/15: load-binary-kits
5.3% in step 6/15: make-synoptic-module
1.3% in step 9/15: make-identifiers-unique
0.3% in step 12/15: eliminate-redundant-operations
0.3% in step 4/15: compile-splats
0.3% in step 7/15: shorten-wiring
0.3% in step 8/15: detect-indirect-calls
0.1% in step 11/15: eliminate-redundant-labels
70.6% in compilation to Inter
49.4% in //Sequence::undertake_queued_tasks//
4.8% in //MajorNodes::pre_pass//
3.4% in //MajorNodes::pass_1//
2.2% in //RTPhrasebook::compile_entries//
1.8% in //ImperativeDefinitions::assess_all//
1.4% in //RTKindConstructors::compile//
1.0% in //Sequence::lint_inter//
0.6% in //MajorNodes::pass_2//
0.6% in //Sequence::undertake_queued_tasks//
0.6% in //World::stage_V//
0.4% in //ImperativeDefinitions::compile_first_block//
0.4% in //Sequence::undertake_queued_tasks//
0.2% in //CompletionModule::compile//
0.2% in //InferenceSubjects::emit_all//
0.2% in //RTKindConstructors::compile_permissions//
0.2% in //Task::make_built_in_kind_constructors//
0.2% in //World::stages_II_and_III//
2.6% not specifically accounted for
26.0% in running Inter pipeline
10.1% in step 14/15: generate inform6 -> auto.inf
5.9% in step 5/15: load-binary-kits
5.4% in step 6/15: make-synoptic-module
1.4% in step 9/15: make-identifiers-unique
0.4% in step 12/15: eliminate-redundant-operations
0.4% in step 4/15: compile-splats
0.4% in step 7/15: shorten-wiring
0.2% in step 11/15: eliminate-redundant-labels
0.2% in step 8/15: detect-indirect-calls
1.4% not specifically accounted for
2.5% in supervisor
0.4% not specifically accounted for
2.6% in supervisor
0.7% not specifically accounted for

View file

@ -2,7 +2,7 @@
"is": {
"type": "kit",
"title": "BasicInformExtrasKit",
"version": "10.2.0-beta+6V51"
"version": "10.2.0-beta+6V52"
},
"kit-details": {
"has-priority": 1

View file

@ -2,7 +2,7 @@
"is": {
"type": "kit",
"title": "BasicInformKit",
"version": "10.2.0-beta+6V51"
"version": "10.2.0-beta+6V52"
},
"needs": [ {
"unless": {

View file

@ -2,7 +2,7 @@
"is": {
"type": "kit",
"title": "CommandParserKit",
"version": "10.2.0-beta+6V51"
"version": "10.2.0-beta+6V52"
},
"needs": [ {
"need": {

View file

@ -0,0 +1,9 @@
Title: DialogueKit
Author: Graham Nelson
Purpose: Inter-level support for dialogue in Inform projects.
Language: Inform 6
Licence: Artistic License 2.0
Web Syntax Version: 2
Sections
Director

View file

@ -0,0 +1,10 @@
Director Template.
Run-time support for dialogue.
@h Placeholder.
=
[ DirectorBegin;
rfalse;
];

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,33 @@
builtin base DIALOGUE_BEAT_TY {
conforms-to: ENUMERATED_VALUE_TY
singular: dialogue beat
plural: dialogue beats
default-value: 0
loop-domain-schema: for (*1=1: *1<=NUMBER_DIALOGUE_BEATS_CREATED: *1++)
constant-compilation-method: quantitative
printing-routine: PrintDialogueBeatName
! documentation-reference: kind_verb
! index-priority: 6
! index-default-value: verb be
specification-text: A beat of dialogue occurring in a section of dialogue.
}
builtin base DIALOGUE_LINE_TY {
conforms-to: ENUMERATED_VALUE_TY
singular: dialogue line
plural: dialogue lines
default-value: 0
loop-domain-schema: for (*1=1: *1<=NUMBER_DIALOGUE_LINES_CREATED: *1++)
constant-compilation-method: quantitative
printing-routine: PrintDialogueLineName
! documentation-reference: kind_verb
! index-priority: 6
! index-default-value: verb be
specification-text: A line of dialogue occurring in a section of dialogue.
}

View file

@ -0,0 +1,13 @@
{
"is": {
"type": "kit",
"title": "DialogueKit",
"version": "10.2.0-beta+6V51"
},
"activates": [ "dialogue" ],
"kit-details": {
"has-priority": 3,
"defines-Main": false,
"provides-kinds": [ "Dialogue.neptune" ]
}
}

View file

@ -2,7 +2,7 @@
"is": {
"type": "kit",
"title": "EnglishLanguageKit",
"version": "10.2.0-beta+6V51"
"version": "10.2.0-beta+6V52"
},
"needs": [ {
"need": {

View file

@ -2,7 +2,7 @@
"is": {
"type": "kit",
"title": "WorldModelKit",
"version": "10.2.0-beta+6V51"
"version": "10.2.0-beta+6V52"
},
"needs": [ {
"need": {

View file

@ -7,8 +7,4 @@ Problem__ PM_EmptyDialogueClause
>--> The text '.' (source text, line 5) appears to be a bracketed clause to
do with dialogue, but the punctuation looks wrong because it includes an
empty part.
Problem__ PM_EmptyDialogueClause
>--> The text '()' (source text, line 7) appears to be a bracketed clause to
do with dialogue, but the punctuation looks wrong because it includes an
empty part.
Inform 7 has finished.

View file

@ -10,7 +10,13 @@ Problem__ PM_MisbracketedDialogueClause
should be just one outer pair of brackets, and inside they can only be used
to clarify clauses, if necessary.
Problem__ PM_MisbracketedDialogueClause
>--> The text '(going (doolally)' (source text, line 9) appears to be a
>--> The text 'slowly, quickly) (erroneously' (source text, line 7) appears
to be a bracketed clause to do with dialogue, but the punctuation looks
wrong because it uses brackets '(' and ')' in a way which doesn't match.
There should be just one outer pair of brackets, and inside they can only
be used to clarify clauses, if necessary.
Problem__ PM_MisbracketedDialogueClause
>--> The text 'going (doolally' (source text, line 9) appears to be a
bracketed clause to do with dialogue, but the punctuation looks wrong
because it uses brackets '(' and ')' in a way which doesn't match. There
should be just one outer pair of brackets, and inside they can only be used

View file

@ -29,6 +29,7 @@ typedef struct dialogue_beat {
struct wording scene_name;
struct parse_node *cue_at;
struct heading *under_heading;
struct instance *as_instance;
struct dialogue_beat *immediately_after;
struct linked_list *some_time_after; /* of |dialogue_beat| */
@ -41,6 +42,7 @@ typedef struct dialogue_beat {
typedef struct dialogue_line {
struct wording line_name;
struct instance *as_instance;
struct parse_node *line_at;
struct wording speaker_text;
struct wording speech_text;
@ -117,6 +119,17 @@ dialogue_beat *Dialogue::create_cue(parse_node *PN) {
"which is not allowed. It can be anonymous, but otherwise can only have "
"one name (either as a beat or as a scene, and not both).");
}
wording W = db->beat_name;
if (Wordings::empty(W)) {
TEMPORARY_TEXT(faux_name)
WRITE_TO(faux_name, "beat-%d", db->allocation_id + 1);
W = Feeds::feed_text(faux_name);
DISCARD_TEXT(faux_name)
}
pcalc_prop *prop = Propositions::Abstract::to_create_something(K_dialogue_beat, W);
Assert::true(prop, CERTAIN_CE);
db->as_instance = Instances::latest();
return db;
}
@ -262,6 +275,17 @@ dialogue_line *Dialogue::create_line(parse_node *PN) {
precursor_dialogue_lines[L] = dl;
for (int i=L+1; i<MAX_DIALOGUE_LINE_NESTING; i++) precursor_dialogue_lines[i] = NULL;
wording W = dl->line_name;
if (Wordings::empty(W)) {
TEMPORARY_TEXT(faux_name)
WRITE_TO(faux_name, "line-%d", dl->allocation_id + 1);
W = Feeds::feed_text(faux_name);
DISCARD_TEXT(faux_name)
}
pcalc_prop *prop = Propositions::Abstract::to_create_something(K_dialogue_line, W);
Assert::true(prop, CERTAIN_CE);
dl->as_instance = Instances::latest();
return dl;
}

View file

@ -850,6 +850,8 @@ void CoreSyntax::grant_code_permissions(void) {
@e constant_activity_ANNOT /* |activity|: for constant values */
@e constant_binary_predicate_ANNOT /* |binary_predicate|: for constant values */
@e constant_constant_phrase_ANNOT /* |constant_phrase|: for constant values */
@e constant_dialogue_beat_ANNOT /* |dialogue_beat|: for constant values */
@e constant_dialogue_line_ANNOT /* |dialogue_line|: for constant values */
@e constant_enumeration_ANNOT /* |int|: which one from an enumerated kind */
@e constant_equation_ANNOT /* |equation|: for constant values */
@e constant_instance_ANNOT /* |instance|: for constant values */
@ -885,6 +887,8 @@ void CoreSyntax::grant_code_permissions(void) {
DECLARE_ANNOTATION_FUNCTIONS(constant_activity, activity)
DECLARE_ANNOTATION_FUNCTIONS(constant_binary_predicate, binary_predicate)
DECLARE_ANNOTATION_FUNCTIONS(constant_constant_phrase, constant_phrase)
DECLARE_ANNOTATION_FUNCTIONS(constant_dialogue_beat, dialogue_beat)
DECLARE_ANNOTATION_FUNCTIONS(constant_dialogue_line, dialogue_line)
DECLARE_ANNOTATION_FUNCTIONS(constant_equation, equation)
DECLARE_ANNOTATION_FUNCTIONS(constant_instance, instance)
DECLARE_ANNOTATION_FUNCTIONS(constant_local_variable, local_variable)
@ -912,6 +916,8 @@ DECLARE_ANNOTATION_FUNCTIONS(tense_marker, grammatical_usage)
MAKE_ANNOTATION_FUNCTIONS(constant_activity, activity)
MAKE_ANNOTATION_FUNCTIONS(constant_binary_predicate, binary_predicate)
MAKE_ANNOTATION_FUNCTIONS(constant_constant_phrase, constant_phrase)
MAKE_ANNOTATION_FUNCTIONS(constant_dialogue_beat, dialogue_beat)
MAKE_ANNOTATION_FUNCTIONS(constant_dialogue_line, dialogue_line)
MAKE_ANNOTATION_FUNCTIONS(constant_equation, equation)
MAKE_ANNOTATION_FUNCTIONS(constant_instance, instance)
MAKE_ANNOTATION_FUNCTIONS(constant_local_variable, local_variable)
@ -941,6 +947,10 @@ void CoreSyntax::declare_spec_annotations(void) {
constant_binary_predicate_ANNOT, CoreSyntax::write_constant_binary_predicate_ANNOT);
Annotations::declare_type(
constant_constant_phrase_ANNOT, CoreSyntax::write_constant_constant_phrase_ANNOT);
Annotations::declare_type(
constant_dialogue_beat_ANNOT, CoreSyntax::write_constant_dialogue_beat_ANNOT);
Annotations::declare_type(
constant_dialogue_line_ANNOT, CoreSyntax::write_constant_dialogue_line_ANNOT);
Annotations::declare_type(
constant_equation_ANNOT, CoreSyntax::write_constant_equation_ANNOT);
Annotations::declare_type(
@ -1020,6 +1030,14 @@ void CoreSyntax::write_constant_constant_phrase_ANNOT(text_stream *OUT, parse_no
WRITE("}");
}
}
void CoreSyntax::write_constant_dialogue_beat_ANNOT(text_stream *OUT, parse_node *p) {
dialogue_beat *db = Node::get_constant_dialogue_beat(p);
if (db) WRITE(" {beat: %W}", db->beat_name);
}
void CoreSyntax::write_constant_dialogue_line_ANNOT(text_stream *OUT, parse_node *p) {
dialogue_line *dl = Node::get_constant_dialogue_line(p);
if (dl) WRITE(" {line: %W}", dl->line_name);
}
void CoreSyntax::write_constant_equation_ANNOT(text_stream *OUT, parse_node *p) {
equation *eqn = Node::get_constant_equation(p);
if (eqn) WRITE(" {equation: %W}", eqn->equation_text);
@ -1184,6 +1202,8 @@ void CoreSyntax::grant_spec_permissions(void) {
Annotations::allow(CONSTANT_NT, constant_activity_ANNOT);
Annotations::allow(CONSTANT_NT, constant_binary_predicate_ANNOT);
Annotations::allow(CONSTANT_NT, constant_constant_phrase_ANNOT);
Annotations::allow(CONSTANT_NT, constant_dialogue_beat_ANNOT);
Annotations::allow(CONSTANT_NT, constant_dialogue_line_ANNOT);
Annotations::allow(CONSTANT_NT, constant_enumeration_ANNOT);
Annotations::allow(CONSTANT_NT, constant_equation_ANNOT);
Annotations::allow(CONSTANT_NT, constant_instance_ANNOT);

View file

@ -1895,6 +1895,8 @@ void Hierarchy::establish(void) {
@e K_RULEBOOK_OUTCOME_XPACKAGE
@e K_RESPONSE_XPACKAGE
@e K_SCENE_XPACKAGE
@e K_DIALOGUE_BEAT_XPACKAGE
@e K_DIALOGUE_LINE_XPACKAGE
@e CAPSHORTNAME_HL
@e DECIMAL_TOKEN_INNER_HL
@ -1906,6 +1908,8 @@ void Hierarchy::establish(void) {
@e PRINT_SOUND_NAME_HL
@e PRINT_EXTERNAL_FILE_NAME_HL
@e PRINT_SCENE_HL
@e PRINT_DIALOGUE_BEAT_HL
@e PRINT_DIALOGUE_LINE_HL
@<The rest@> =
H_BEGIN(LocationRequirements::this_exotic_package(K_OBJECT_XPACKAGE))
@ -1944,6 +1948,14 @@ void Hierarchy::establish(void) {
H_F_T(PRINT_SCENE_HL, I"print_fn", I"PrintSceneName")
H_END
H_BEGIN(LocationRequirements::this_exotic_package(K_DIALOGUE_BEAT_XPACKAGE))
H_F_T(PRINT_DIALOGUE_BEAT_HL, I"print_fn", I"PrintDialogueBeatName")
H_END
H_BEGIN(LocationRequirements::this_exotic_package(K_DIALOGUE_LINE_XPACKAGE))
H_F_T(PRINT_DIALOGUE_LINE_HL, I"print_fn", I"PrintDialogueLineName")
H_END
@h Architectural symbols.
These are built-in constants (and one built-in variable, |self|) which come
from the platform we are compiling to. See //building: Large-Scale Structure//.
@ -2045,6 +2057,8 @@ package_request *Hierarchy::exotic_package(int x) {
case K_RULEBOOK_OUTCOME_XPACKAGE: return RTKindConstructors::kind_package(K_rulebook_outcome);
case K_RESPONSE_XPACKAGE: return RTKindConstructors::kind_package(K_response);
case K_SCENE_XPACKAGE: return RTKindConstructors::kind_package(K_scene);
case K_DIALOGUE_BEAT_XPACKAGE: return RTKindConstructors::kind_package(K_dialogue_beat);
case K_DIALOGUE_LINE_XPACKAGE: return RTKindConstructors::kind_package(K_dialogue_line);
}
internal_error("unknown exotic package");
return NULL;

View file

@ -253,6 +253,16 @@ inter_name *RTKindConstructors::get_iname(kind *K) {
Hierarchy::make_available(K->construct->compilation_data.pr_iname);
return K->construct->compilation_data.pr_iname;
}
if (Kinds::eq(K, K_dialogue_beat)) {
K->construct->compilation_data.pr_iname = Hierarchy::find(PRINT_DIALOGUE_BEAT_HL);
Hierarchy::make_available(K->construct->compilation_data.pr_iname);
return K->construct->compilation_data.pr_iname;
}
if (Kinds::eq(K, K_dialogue_line)) {
K->construct->compilation_data.pr_iname = Hierarchy::find(PRINT_DIALOGUE_LINE_HL);
Hierarchy::make_available(K->construct->compilation_data.pr_iname);
return K->construct->compilation_data.pr_iname;
}
package_request *R = NULL;
int external = TRUE;

View file

@ -35,6 +35,10 @@ parse_node *Rvalues::from_binary_predicate(binary_predicate *val) {
CONV_FROM(binary_predicate, Kinds::base_construction(CON_relation)) }
parse_node *Rvalues::from_constant_phrase(constant_phrase *val) {
CONV_FROM(constant_phrase, Kinds::base_construction(CON_phrase)) }
parse_node *Rvalues::from_dialogue_beat(dialogue_beat *val) {
CONV_FROM(dialogue_beat, K_dialogue_beat) }
parse_node *Rvalues::from_dialogue_line(dialogue_line *val) {
CONV_FROM(dialogue_line, K_dialogue_line) }
parse_node *Rvalues::from_equation(equation *val) {
CONV_FROM(equation, K_equation) }
parse_node *Rvalues::from_named_rulebook_outcome(named_rulebook_outcome *val) {

View file

@ -153,6 +153,7 @@ INFORM6WEB = inform6
{component type: web symbol: COMMANDPARSERKIT webname: CommandParserKit path: inform7/Internal/Inter/CommandParserKit set: kits}
{component type: web symbol: BASICINFORMEXTRASKIT webname: BasicInformExtrasKit path: inform7/Internal/Inter/BasicInformExtrasKit set: kits}
{component type: web symbol: ENGLISHLANGUAGEKIT webname: EnglishLanguageKit path: inform7/Internal/Inter/EnglishLanguageKit set: kits}
{component type: web symbol: DIALOGUEKIT webname: DialogueKit path: inform7/Internal/Inter/DialogueKit set: kits}
{component type: web symbol: STANDARDRULES webname: standard_rules path: inform7/extensions/standard_rules set: extensions}
{component type: web symbol: BASICINFORM webname: basic_inform path: inform7/extensions/basic_inform set: extensions}

View file

@ -131,6 +131,7 @@ The following webs are the source for kits of Inter code shipped with Inform (at
{kit name: EnglishLanguageKit purpose: Support for English as the natural language used}
{kit name: CommandParserKit purpose: Support for parsing turn-by-turn commands in interactive fiction}
{kit name: BasicInformExtrasKit purpose: Additional support needed only if the Standard Rules are not used}
{kit name: DialogueKit purpose: Additional support for dialogue (under construction)}
### Extensions shipped with Inform

View file

@ -93,6 +93,8 @@ Inform. Some standard kinds follow. Some belong only to features; if the
feature in question is inactive, they will remain |NULL| and do nothing.
= (early code)
kind *K_dialogue_beat = NULL;
kind *K_dialogue_line = NULL;
kind *K_equation = NULL;
kind *K_grammatical_gender = NULL;
kind *K_natural_language = NULL;
@ -177,6 +179,8 @@ kind_constructor **FamiliarKinds::known_con(text_stream *sn) {
kind **FamiliarKinds::known_kind(text_stream *sn) {
IDENTIFIERS_CORRESPOND("ARITHMETIC_VALUE_TY", &K_arithmetic_value);
IDENTIFIERS_CORRESPOND("DIALOGUE_BEAT_TY", &K_dialogue_beat);
IDENTIFIERS_CORRESPOND("DIALOGUE_LINE_TY", &K_dialogue_line);
IDENTIFIERS_CORRESPOND("ENUMERATED_VALUE_TY", &K_enumerated_value);
IDENTIFIERS_CORRESPOND("EQUATION_TY", &K_equation);
IDENTIFIERS_CORRESPOND("TEXT_TY", &K_text);

View file

@ -30,6 +30,7 @@ typedef struct parse_node_tree {
struct parse_node *bud_parent_stack[MAX_BUD_STACK_SIZE];
struct parse_node *last_sentence; /* cached position in tree */
int allow_last_sentence_cacheing;
int contains_dialogue;
int trace_sentences;
HEADING_TREE_SYNTAX_TYPE *headings;
CLASS_DEFINITION
@ -42,6 +43,7 @@ parse_node_tree *SyntaxTree::new(void) {
T->last_sentence = NULL;
T->allow_last_sentence_cacheing = FALSE;
T->trace_sentences = FALSE;
T->contains_dialogue = FALSE;
SyntaxTree::push_bud(T, T->root_node);
#ifdef NEW_HEADING_TREE_SYNTAX_CALLBACK
T->headings = NEW_HEADING_TREE_SYNTAX_CALLBACK(T);

View file

@ -706,6 +706,7 @@ here. This hand-tooled parser is annoyingly long to write out, but only in
order to catch improbable unmatched-bracket errors with tidy error messages.
@<Make a DIALOGUE node@> =
T->contains_dialogue = TRUE;
if ((Lexer::word(Wordings::first_wn(W)) == OPENBRACKET_V) &&
(Lexer::word(Wordings::last_wn(W)) == CLOSEBRACKET_V))
@<This is a dialogue cue@>;