mirror of
https://github.com/ganelson/inform.git
synced 2024-06-17 07:40:47 +03:00
Further work on annotation logging
This commit is contained in:
parent
b0c0bf87ea
commit
8e8565c0db
|
@ -1,6 +1,6 @@
|
|||
# Inform 7
|
||||
|
||||
v10.1.0-alpha.1+6R07 'Krypton' (27 August 2020)
|
||||
v10.1.0-alpha.1+6R08 'Krypton' (28 August 2020)
|
||||
|
||||
## About Inform 7
|
||||
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
Prerelease: alpha.1
|
||||
Build Date: 27 August 2020
|
||||
Build Number: 6R07
|
||||
Build Date: 28 August 2020
|
||||
Build Number: 6R08
|
||||
|
|
|
@ -69,7 +69,7 @@ function togglePopup(material_id) {
|
|||
<main role="main">
|
||||
<!--Weave of 'Core Module' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7 Modules</a></li><li><a href="index.html">core</a></li><li><a href="index.html#1">Chapter 1: Configuration and Control</a></li><li><b>Core Module</b></li></ul></div>
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7 Modules</a></li><li><a href="index.html">core</a></li><li><a href="index.html#1">Chapter 1: Control</a></li><li><b>Core Module</b></li></ul></div>
|
||||
<p class="purpose">Setting up the use of this module.</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>The following constant exists only in tools which use this module:
|
||||
|
@ -84,7 +84,7 @@ function togglePopup(material_id) {
|
|||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CoreModule::start</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Writers::register_writer_I</span><span class="plain-syntax">(</span><span class="character-syntax">'B'</span><span class="plain-syntax">, &</span><a href="1-cm.html#SP3" class="function-link"><span class="function-syntax">CoreModule::writer</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-cp2.html#SP3" class="function-link"><span class="function-syntax">CorePreform::set_core_internal_NTIs</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="1-inaa.html#SP9" class="function-link"><span class="function-syntax">CoreSyntax::declare_annotations</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="1-inaa.html#SP6" class="function-link"><span class="function-syntax">CoreSyntax::declare_annotations</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CoreModule::end</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
|
|
@ -61,7 +61,7 @@
|
|||
<main role="main">
|
||||
<!--Weave of 'Class Predeclarations' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7 Modules</a></li><li><a href="index.html">core</a></li><li><a href="index.html#1">Chapter 1: Configuration and Control</a></li><li><b>Class Predeclarations</b></li></ul></div>
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7 Modules</a></li><li><a href="index.html">core</a></li><li><a href="index.html#1">Chapter 1: Control</a></li><li><b>Class Predeclarations</b></li></ul></div>
|
||||
<p class="purpose">Predeclaring the classes used in the six central Inform modules.</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>For annoying reasons to do with code ordering constraints in C, we need
|
||||
|
|
|
@ -69,7 +69,7 @@ function togglePopup(material_id) {
|
|||
<main role="main">
|
||||
<!--Weave of 'Core Preform' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7 Modules</a></li><li><a href="index.html">core</a></li><li><a href="index.html#1">Chapter 1: Configuration and Control</a></li><li><b>Core Preform</b></li></ul></div>
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7 Modules</a></li><li><a href="index.html">core</a></li><li><a href="index.html#1">Chapter 1: Control</a></li><li><b>Core Preform</b></li></ul></div>
|
||||
<p class="purpose">To load, optimise and throw problem messages related to Preform syntax.</p>
|
||||
|
||||
<ul class="toc"><li><a href="1-cp2.html#SP1">§1. Reading Preform declarations from Syntax files</a></li><li><a href="1-cp2.html#SP2">§2. Converting Preform errors to problems</a></li><li><a href="1-cp2.html#SP3">§3. Optimisation</a></li></ul><hr class="tocbar">
|
||||
|
|
|
@ -70,7 +70,7 @@ function togglePopup(material_id) {
|
|||
<main role="main">
|
||||
<!--Weave of 'Compilation Settings' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7 Modules</a></li><li><a href="index.html">core</a></li><li><a href="index.html#1">Chapter 1: Configuration and Control</a></li><li><b>Compilation Settings</b></li></ul></div>
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7 Modules</a></li><li><a href="index.html">core</a></li><li><a href="index.html#1">Chapter 1: Control</a></li><li><b>Compilation Settings</b></li></ul></div>
|
||||
<p class="purpose">Settings affecting the compilation of the current project.</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>The Inform compiler has many settings coming from outside: for example, a
|
||||
|
|
|
@ -69,7 +69,7 @@ function togglePopup(material_id) {
|
|||
<main role="main">
|
||||
<!--Weave of 'How To Compile' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7 Modules</a></li><li><a href="index.html">core</a></li><li><a href="index.html#1">Chapter 1: Configuration and Control</a></li><li><b>How To Compile</b></li></ul></div>
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7 Modules</a></li><li><a href="index.html">core</a></li><li><a href="index.html#1">Chapter 1: Control</a></li><li><b>How To Compile</b></li></ul></div>
|
||||
<p class="purpose">The long production line on which products of Inform are built, one step at a time.</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>Having seen the top management of the factory, we now reach the factory
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -69,7 +69,7 @@ function togglePopup(material_id) {
|
|||
<main role="main">
|
||||
<!--Weave of 'Progress Percentages' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7 Modules</a></li><li><a href="index.html">core</a></li><li><a href="index.html#1">Chapter 1: Configuration and Control</a></li><li><b>Progress Percentages</b></li></ul></div>
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7 Modules</a></li><li><a href="index.html">core</a></li><li><a href="index.html#1">Chapter 1: Control</a></li><li><b>Progress Percentages</b></li></ul></div>
|
||||
<p class="purpose">This tiny section, the Lichtenstein of Inform, prints percentage of completion estimates so that the host application can intercept them and update its graphical progress bar.</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>Clearly we can only estimate how far Inform has progressed. While we could in
|
||||
|
|
|
@ -69,7 +69,7 @@ function togglePopup(material_id) {
|
|||
<main role="main">
|
||||
<!--Weave of 'What To Compile' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7 Modules</a></li><li><a href="index.html">core</a></li><li><a href="index.html#1">Chapter 1: Configuration and Control</a></li><li><b>What To Compile</b></li></ul></div>
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7 Modules</a></li><li><a href="index.html">core</a></li><li><a href="index.html#1">Chapter 1: Control</a></li><li><b>What To Compile</b></li></ul></div>
|
||||
<p class="purpose">To receive an instruction to compile something from Inbuild, and then to sort out the many locations then used in the host filing system.</p>
|
||||
|
||||
<ul class="toc"><li><a href="1-wtc.html#SP1">§1. Timers</a></li><li><a href="1-wtc.html#SP2">§2. Task data</a></li><li><a href="1-wtc.html#SP10">§10. Project-related files and file paths</a></li></ul><hr class="tocbar">
|
||||
|
|
159
docs/core-module/2-cp.html
Normal file
159
docs/core-module/2-cp.html
Normal file
|
@ -0,0 +1,159 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Calculus Problems</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="../compiler.html">compiler tools</a></li>
|
||||
<li><a href="../other.html">other tools</a></li>
|
||||
<li><a href="../extensions.html">extensions and kits</a></li>
|
||||
<li><a href="../units.html">unit test tools</a></li>
|
||||
</ul><h2>Compiler Webs</h2><ul>
|
||||
<li><a href="../inbuild/index.html">inbuild</a></li>
|
||||
<li><a href="../inform7/index.html">inform7</a></li>
|
||||
<li><a href="../inter/index.html">inter</a></li>
|
||||
</ul><h2>Inbuild Modules</h2><ul>
|
||||
<li><a href="../supervisor-module/index.html">supervisor</a></li>
|
||||
</ul><h2>Inform7 Modules</h2><ul>
|
||||
<li><a href="index.html"><span class="selectedlink">core</span></a></li>
|
||||
<li><a href="../assertions-module/index.html">assertions</a></li>
|
||||
<li><a href="../values-module/index.html">values</a></li>
|
||||
<li><a href="../knowledge-module/index.html">knowledge</a></li>
|
||||
<li><a href="../imperative-module/index.html">imperative</a></li>
|
||||
<li><a href="../runtime-module/index.html">runtime</a></li>
|
||||
<li><a href="../if-module/index.html">if</a></li>
|
||||
<li><a href="../multimedia-module/index.html">multimedia</a></li>
|
||||
<li><a href="../index-module/index.html">index</a></li>
|
||||
</ul><h2>Inter Modules</h2><ul>
|
||||
<li><a href="../bytecode-module/index.html">bytecode</a></li>
|
||||
<li><a href="../building-module/index.html">building</a></li>
|
||||
<li><a href="../codegen-module/index.html">codegen</a></li>
|
||||
</ul><h2>Services</h2><ul>
|
||||
<li><a href="../arch-module/index.html">arch</a></li>
|
||||
<li><a href="../calculus-module/index.html">calculus</a></li>
|
||||
<li><a href="../html-module/index.html">html</a></li>
|
||||
<li><a href="../inflections-module/index.html">inflections</a></li>
|
||||
<li><a href="../kinds-module/index.html">kinds</a></li>
|
||||
<li><a href="../linguistics-module/index.html">linguistics</a></li>
|
||||
<li><a href="../problems-module/index.html">problems</a></li>
|
||||
<li><a href="../syntax-module/index.html">syntax</a></li>
|
||||
<li><a href="../words-module/index.html">words</a></li>
|
||||
<li><a href="../../../inweb/docs/foundation-module/index.html">foundation</a></li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<!--Weave of 'Calculus Problems' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7 Modules</a></li><li><a href="index.html">core</a></li><li><a href="index.html#2">Chapter 2: Problem Messages</a></li><li><b>Calculus Problems</b></li></ul></div>
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>The <span class="extract"><span class="extract-syntax">:calculus</span></span> group of tests for <a href="../inform7/index.html" class="internal">inform7</a> generates all of the problems
|
||||
below.
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">PROBLEM_CALCULUS_CALLBACK</span><span class="plain-syntax"> </span><a href="2-cp.html#SP1" class="function-link"><span class="function-syntax">CalculusProblems::issue_problem</span></a>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CalculusProblems::issue_problem</span><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">err_no</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</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">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K1</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K2</span><span class="plain-syntax">, </span><span class="identifier-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="identifier-syntax">tc_problem_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tck</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax">(</span><span class="identifier-syntax">err_no</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">BareKindVariable_CALCERROR:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_BareKindVariable</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"The sentence %1 seems to use a kind variable by its letter "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"alone in the context of a noun, which Inform doesn't allow. "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"It's fine to say 'if the noun is a K', for example, but "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"not 'if K is number'. By putting 'a' or 'an' in front of the "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"kind variable, you make clear that I'm supposed to perform "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"matching against a description."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">ConstantFailed_CALCERROR:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_wording</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">BelievedImpossible</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"The sentence %1 seems to contain a value '%2' which I can't make "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"any sense of."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">UnaryMisapplied_CALCERROR:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_wording</span><span class="plain-syntax">(4, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-sq.html#SP3" class="function-link"><span class="function-syntax">Problems::quote_kind</span></a><span class="plain-syntax">(5, </span><span class="identifier-syntax">K1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-si.html#SP6" class="function-link"><span class="function-syntax">StandardProblems::tcp_problem</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_AdjectiveMisapplied</span><span class="plain-syntax">), </span><span class="identifier-syntax">tck</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"that seems to involve applying the adjective '%4' to %5 - and I "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"have no definition of it which would apply in that situation. "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"(Try looking it up in the Lexicon part of the Phrasebook index "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"to see what definition(s) '%4' has.)"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">ComparisonFailed_CALCERROR:</span>
|
||||
<span class="plain-syntax"> </span><a href="2-sq.html#SP3" class="function-link"><span class="function-syntax">Problems::quote_kind</span></a><span class="plain-syntax">(4, </span><span class="identifier-syntax">K1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-sq.html#SP3" class="function-link"><span class="function-syntax">Problems::quote_kind</span></a><span class="plain-syntax">(5, </span><span class="identifier-syntax">K2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-si.html#SP6" class="function-link"><span class="function-syntax">StandardProblems::tcp_problem</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_ComparisonFailed</span><span class="plain-syntax">), </span><span class="identifier-syntax">tck</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"that would mean comparing two kinds of value which cannot mix - "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"%4 and %5 - so this must be incorrect."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">BadUniversal1_CALCERROR:</span>
|
||||
<span class="plain-syntax"> </span><a href="2-sq.html#SP3" class="function-link"><span class="function-syntax">Problems::quote_kind</span></a><span class="plain-syntax">(4, </span><span class="identifier-syntax">K1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-si.html#SP6" class="function-link"><span class="function-syntax">StandardProblems::tcp_problem</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_BadUniversal1</span><span class="plain-syntax">), </span><span class="identifier-syntax">tck</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"that asks whether something relates something, and in Inform 'to relate' "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"means that a particular relation applies between two things. Here, though, "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"we have %4 rather than the name of a relation."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">BadUniversal2_CALCERROR:</span>
|
||||
<span class="plain-syntax"> </span><a href="2-sq.html#SP3" class="function-link"><span class="function-syntax">Problems::quote_kind</span></a><span class="plain-syntax">(4, </span><span class="identifier-syntax">K1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-si.html#SP6" class="function-link"><span class="function-syntax">StandardProblems::tcp_problem</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">BelievedImpossible</span><span class="plain-syntax">), </span><span class="identifier-syntax">tck</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"that asks whether something relates something, and in Inform 'to relate' "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"means that a particular relation applies between two things. Here, though, "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"we have %4 rather than the combination of the two things."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">BinaryMisapplied1_CALCERROR:</span>
|
||||
<span class="plain-syntax"> </span><a href="2-sq.html#SP3" class="function-link"><span class="function-syntax">Problems::quote_kind</span></a><span class="plain-syntax">(4, </span><span class="identifier-syntax">K1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-sq.html#SP3" class="function-link"><span class="function-syntax">Problems::quote_kind</span></a><span class="plain-syntax">(5, </span><span class="identifier-syntax">K2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-sq.html#SP1" class="function-link"><span class="function-syntax">Problems::quote_relation</span></a><span class="plain-syntax">(6, </span><span class="identifier-syntax">bp</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-si.html#SP6" class="function-link"><span class="function-syntax">StandardProblems::tcp_problem</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_TypeCheckBP2a</span><span class="plain-syntax">), </span><span class="identifier-syntax">tck</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"that doesn't work because you use %6 with %4 instead of %5."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">BinaryMisapplied2_CALCERROR:</span>
|
||||
<span class="plain-syntax"> </span><a href="2-sq.html#SP3" class="function-link"><span class="function-syntax">Problems::quote_kind</span></a><span class="plain-syntax">(4, </span><span class="identifier-syntax">K1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-sq.html#SP3" class="function-link"><span class="function-syntax">Problems::quote_kind</span></a><span class="plain-syntax">(5, </span><span class="identifier-syntax">K2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-sq.html#SP1" class="function-link"><span class="function-syntax">Problems::quote_relation</span></a><span class="plain-syntax">(6, </span><span class="identifier-syntax">bp</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-si.html#SP6" class="function-link"><span class="function-syntax">StandardProblems::tcp_problem</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_TypeCheckBP2</span><span class="plain-syntax">), </span><span class="identifier-syntax">tck</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"that would mean applying %6 to kinds of value which do not "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"fit - %4 and %5 - so this must be incorrect."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">KindMismatch_CALCERROR:</span>
|
||||
<span class="plain-syntax"> </span><a href="2-sq.html#SP3" class="function-link"><span class="function-syntax">Problems::quote_kind</span></a><span class="plain-syntax">(4, </span><span class="identifier-syntax">K1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-sq.html#SP3" class="function-link"><span class="function-syntax">Problems::quote_kind</span></a><span class="plain-syntax">(5, </span><span class="identifier-syntax">K2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-si.html#SP6" class="function-link"><span class="function-syntax">StandardProblems::tcp_problem</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_TypeCheckKind</span><span class="plain-syntax">), </span><span class="identifier-syntax">tck</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"%4 cannot be %5, so this must be incorrect."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">default:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"unknown calculus error"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-pwst.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-up.html">up</a></li><li class="progresssection"><a href="2-sq.html">sq</a></li><li class="progresssection"><a href="2-si.html">si</a></li><li class="progresssection"><a href="2-pwst.html">pwst</a></li><li class="progresscurrent">cp</li><li class="progressnextoff">❯</li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
499
docs/core-module/2-pwst.html
Normal file
499
docs/core-module/2-pwst.html
Normal file
|
@ -0,0 +1,499 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Problems With Source Text</title>
|
||||
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<meta name="viewport" content="width=device-width initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="Content-Language" content="en-gb">
|
||||
|
||||
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<script>
|
||||
function togglePopup(material_id) {
|
||||
var popup = document.getElementById(material_id);
|
||||
popup.classList.toggle("show");
|
||||
}
|
||||
</script>
|
||||
|
||||
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
<nav role="navigation">
|
||||
<h1><a href="../index.html">
|
||||
<img src="../docs-assets/Inform.png" height=72">
|
||||
</a></h1>
|
||||
<ul><li><a href="../compiler.html">compiler tools</a></li>
|
||||
<li><a href="../other.html">other tools</a></li>
|
||||
<li><a href="../extensions.html">extensions and kits</a></li>
|
||||
<li><a href="../units.html">unit test tools</a></li>
|
||||
</ul><h2>Compiler Webs</h2><ul>
|
||||
<li><a href="../inbuild/index.html">inbuild</a></li>
|
||||
<li><a href="../inform7/index.html">inform7</a></li>
|
||||
<li><a href="../inter/index.html">inter</a></li>
|
||||
</ul><h2>Inbuild Modules</h2><ul>
|
||||
<li><a href="../supervisor-module/index.html">supervisor</a></li>
|
||||
</ul><h2>Inform7 Modules</h2><ul>
|
||||
<li><a href="index.html"><span class="selectedlink">core</span></a></li>
|
||||
<li><a href="../assertions-module/index.html">assertions</a></li>
|
||||
<li><a href="../values-module/index.html">values</a></li>
|
||||
<li><a href="../knowledge-module/index.html">knowledge</a></li>
|
||||
<li><a href="../imperative-module/index.html">imperative</a></li>
|
||||
<li><a href="../runtime-module/index.html">runtime</a></li>
|
||||
<li><a href="../if-module/index.html">if</a></li>
|
||||
<li><a href="../multimedia-module/index.html">multimedia</a></li>
|
||||
<li><a href="../index-module/index.html">index</a></li>
|
||||
</ul><h2>Inter Modules</h2><ul>
|
||||
<li><a href="../bytecode-module/index.html">bytecode</a></li>
|
||||
<li><a href="../building-module/index.html">building</a></li>
|
||||
<li><a href="../codegen-module/index.html">codegen</a></li>
|
||||
</ul><h2>Services</h2><ul>
|
||||
<li><a href="../arch-module/index.html">arch</a></li>
|
||||
<li><a href="../calculus-module/index.html">calculus</a></li>
|
||||
<li><a href="../html-module/index.html">html</a></li>
|
||||
<li><a href="../inflections-module/index.html">inflections</a></li>
|
||||
<li><a href="../kinds-module/index.html">kinds</a></li>
|
||||
<li><a href="../linguistics-module/index.html">linguistics</a></li>
|
||||
<li><a href="../problems-module/index.html">problems</a></li>
|
||||
<li><a href="../syntax-module/index.html">syntax</a></li>
|
||||
<li><a href="../words-module/index.html">words</a></li>
|
||||
<li><a href="../../../inweb/docs/foundation-module/index.html">foundation</a></li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<!--Weave of 'Problems With Source Text' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7 Modules</a></li><li><a href="index.html">core</a></li><li><a href="index.html#2">Chapter 2: Problem Messages</a></li><li><b>Problems With Source Text</b></li></ul></div>
|
||||
<p class="purpose">Errors with the source text, either lexical issues or major syntactic ones, are found when Inbuild reads the text in: what this section does is to collect and issue those errors as tidy Inform problem messages.</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>To trigger all of the problems listed below, test with the <span class="extract"><span class="extract-syntax">:inbuild</span></span>
|
||||
group.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">SourceProblems::issue_problems_arising</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">SourceProblems::issue_problems_arising</span></span>:<br/>What To Compile - <a href="1-wtc.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</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">C</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">copy_error</span><span class="plain-syntax"> *</span><span class="identifier-syntax">CE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">CE</span><span class="plain-syntax">, </span><span class="identifier-syntax">copy_error</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="identifier-syntax">errors_reading_source_text</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">error_category</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">OPEN_FAILED_CE:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_stream</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">Filenames::get_leafname</span><span class="plain-syntax">(</span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details_file</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">Untestable</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"I can't open the file '%1' of source text. %P"</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"If you are using the 'Source' subfolder of Materials to "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"hold your source text, maybe your 'Contents.txt' has a "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"typo in it?"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">EXT_MISWORDED_CE:</span>
|
||||
<span class="plain-syntax"> </span><a href="2-sq.html#SP1" class="function-link"><span class="function-syntax">Problems::quote_work</span></a><span class="plain-syntax">(1, </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">copy</span><span class="plain-syntax">-></span><span class="identifier-syntax">found_by</span><span class="plain-syntax">-></span><span class="identifier-syntax">work</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_stream</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_ExtMiswordedBeginsHere</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"The extension %1, which your source text makes use of, seems to be "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"damaged or incorrect: its identifying opening line is wrong. "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"Specifically, %2."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">KIT_MISWORDED_CE:</span>
|
||||
<span class="plain-syntax"> </span><a href="2-sq.html#SP1" class="function-link"><span class="function-syntax">Problems::quote_work</span></a><span class="plain-syntax">(1, </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">copy</span><span class="plain-syntax">-></span><span class="identifier-syntax">found_by</span><span class="plain-syntax">-></span><span class="identifier-syntax">work</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_stream</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">Untestable</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"The kit %1, which your source text makes use of, seems to be "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"damaged or incorrect: its identifying opening line is wrong. "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"Specifically, %2."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">EXT_TITLE_TOO_LONG_CE:</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">max</span><span class="plain-syntax"> = </span><span class="identifier-syntax">MAX_EXTENSION_TITLE_LENGTH</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">overage</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details_N</span><span class="plain-syntax"> - </span><span class="identifier-syntax">MAX_EXTENSION_TITLE_LENGTH</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="2-sq.html#SP1" class="function-link"><span class="function-syntax">Problems::quote_work</span></a><span class="plain-syntax">(1, </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">copy</span><span class="plain-syntax">-></span><span class="identifier-syntax">found_by</span><span class="plain-syntax">-></span><span class="identifier-syntax">work</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_number</span><span class="plain-syntax">(2, &</span><span class="identifier-syntax">max</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_number</span><span class="plain-syntax">(3, &</span><span class="identifier-syntax">overage</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_ExtTitleTooLong</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"The extension %1, which your source text makes use of, has a "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"title which is too long, exceeding the maximum allowed "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"(%2 characters) by %3."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</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">EXT_AUTHOR_TOO_LONG_CE:</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">max</span><span class="plain-syntax"> = </span><span class="identifier-syntax">MAX_EXTENSION_AUTHOR_LENGTH</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">overage</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details_N</span><span class="plain-syntax"> - </span><span class="identifier-syntax">MAX_EXTENSION_AUTHOR_LENGTH</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="2-sq.html#SP1" class="function-link"><span class="function-syntax">Problems::quote_work</span></a><span class="plain-syntax">(1, </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">copy</span><span class="plain-syntax">-></span><span class="identifier-syntax">found_by</span><span class="plain-syntax">-></span><span class="identifier-syntax">work</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_number</span><span class="plain-syntax">(2, &</span><span class="identifier-syntax">max</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_number</span><span class="plain-syntax">(3, &</span><span class="identifier-syntax">overage</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_ExtAuthorTooLong</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"The extension %1, which your source text makes use of, has an "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"author name which is too long, exceeding the maximum allowed "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"(%2 characters) by %3."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</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">LEXER_CE:</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">error_subcategory</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">STRING_TOO_LONG_LEXERERROR:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::lexical_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_TooMuchQuotedText</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"Too much text in quotation marks"</span><span class="plain-syntax">, </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details_word</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"...\" The maximum length is very high, so this is more "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"likely to be because a close quotation mark was "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"forgotten."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">WORD_TOO_LONG_LEXERERROR:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::lexical_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_WordTooLong</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"Word too long"</span><span class="plain-syntax">, </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details_word</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"(Individual words of unquoted text can run up to "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"128 letters long, which ought to be plenty. The longest "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"recognised place name in the English speaking world is "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"a hill in New Zealand called Taumatawhakatang-"</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"ihangakoauauot-amateaturipukaka-pikimaunga-"</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"horonuku-pokaiwhenuak-itanatahu. (You say tomato, "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"I say taumatawhakatang-...) The longest word found in a "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"classic novel is bababadalgharaghtakamminarronnkonnbronntonn"</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"erronntuonnthunntrovarrhounawnskawntoohoohoordenenthurnuk, "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"creation's thunderclap from Finnegan's Wake. And both of those "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"words are fine.)"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">I6_TOO_LONG_LEXERERROR:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::lexical_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">Untestable</span><span class="plain-syntax">), </span><span class="comment-syntax"> well, not at all conveniently</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"Verbatim Inform 6 extract too long"</span><span class="plain-syntax">, </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details_word</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"... -). The maximum length is quite high, so this "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"may be because a '-)' was forgotten. Still, if "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"you do need to paste a huge I6 program in, try "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"using several verbatim inclusions in a row."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">STRING_NEVER_ENDS_LEXERERROR:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::lexical_problem_S</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_UnendingQuote</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"Some source text ended in the middle of quoted text"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"This probably means that a quotation mark is missing "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"somewhere. If you are using Inform with syntax colouring, "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"look for where the quoted-text colour starts. (Sometimes "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"this problem turns up because a piece of quoted text contains "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"a text substitution in square brackets which in turn contains "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"another piece of quoted text - this is not allowed, and causes "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"me to lose track.)"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">COMMENT_NEVER_ENDS_LEXERERROR:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::lexical_problem_S</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_UnendingComment</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"Some source text ended in the middle of a comment"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"This probably means that a ']' is missing somewhere. "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"(If you are using Inform with syntax colouring, look for "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"where the comment colour starts.) Inform's convention on "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"'nested comments' is that each '[' in a comment must be "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"matched by a corresponding ']': so for instance '[This "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"[even nested like so] acts as a comment]' is a single "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"comment - the first ']' character matches the second '[' "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"and so doesn't end the comment: only the second ']' ends "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"the comment."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">I6_NEVER_ENDS_LEXERERROR:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::lexical_problem_S</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_UnendingI6</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"Some source text ended in the middle of a verbatim passage "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"of Inform 6 code"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"This probably means that a '-)' is missing."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">default:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"unknown lexer error"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">SYNTAX_CE:</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">error_subcategory</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">UnexpectedSemicolon_SYNERROR:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">Diagrams::new_UNPARSED_NOUN</span><span class="plain-syntax">(</span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details_W</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_UnexpectedSemicolon</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"The text %1 is followed by a semicolon ';', which only makes "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"sense to me inside a rule or phrase (where there's a heading, "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"then a colon, then a list of instructions divided by semicolons). "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"Perhaps you want a full stop '.' instead?"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">ParaEndsInColon_SYNERROR:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">Diagrams::new_UNPARSED_NOUN</span><span class="plain-syntax">(</span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details_W</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_ParaEndsInColon</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"The text %1 seems to end a paragraph with a colon. (Rule declarations "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"can end a sentence with a colon, so maybe there's accidentally a "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"skipped line here?)"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">SentenceEndsInColon_SYNERROR:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">Diagrams::new_UNPARSED_NOUN</span><span class="plain-syntax">(</span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details_W</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_SentenceEndsInColon</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"The text %1 seems to have a colon followed by a full stop, which is "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"punctuation I don't understand."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">SentenceEndsInSemicolon_SYNERROR:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">Diagrams::new_UNPARSED_NOUN</span><span class="plain-syntax">(</span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details_W</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_SentenceEndsInSemicolon</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"The text %1 seems to have a semicolon followed by a full stop, which is "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"punctuation I don't understand."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">SemicolonAfterColon_SYNERROR:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">Diagrams::new_UNPARSED_NOUN</span><span class="plain-syntax">(</span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details_W</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_SemicolonAfterColon</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"The text %1 seems to have a semicolon following a colon, which is "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"punctuation I don't understand."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">SemicolonAfterStop_SYNERROR:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">Diagrams::new_UNPARSED_NOUN</span><span class="plain-syntax">(</span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details_W</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_SemicolonAfterStop</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"The text %1 seems to have a semicolon following a full stop, which is "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"punctuation I don't understand."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">HeadingOverLine_SYNERROR:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">Diagrams::new_UNPARSED_NOUN</span><span class="plain-syntax">(</span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details_W</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">Diagrams::new_UNPARSED_NOUN</span><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::up_to</span><span class="plain-syntax">(</span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details_W</span><span class="plain-syntax">, </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details_N</span><span class="plain-syntax">-1)));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(3, </span><span class="identifier-syntax">Diagrams::new_UNPARSED_NOUN</span><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::from</span><span class="plain-syntax">(</span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details_W</span><span class="plain-syntax">, </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details_N</span><span class="plain-syntax">)));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_HeadingOverLine</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"The text %1 seems to be a heading, but contains a "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"line break, which is not allowed: so I am reading it "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"as just %2 and ignoring the continuation %3. The rule "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"is that a heading must be a single line which is the "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"only sentence in its paragraph, so there must be a "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"skipped line above and below."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">HeadingStopsBeforeEndOfLine_SYNERROR:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">Diagrams::new_UNPARSED_NOUN</span><span class="plain-syntax">(</span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details_W</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(2,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Diagrams::new_UNPARSED_NOUN</span><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::last_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details_W</span><span class="plain-syntax">)+1, </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details_N</span><span class="plain-syntax">-1)));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_HeadingStopsBeforeEndOfLine</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"The text %1 seems to be a heading, but does not occupy "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"the whole of its line of source text, which continues %2. "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"The rule is that a heading must occupy a whole single line "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"which is the only sentence in its paragraph, so there "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"must be a skipped line above and below. %P"</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"A heading must not contain a colon ':' or any full stop "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"characters '.', even if they occur in an ellipsis '...' or a "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"number '2.3.13'. (I mention that because sometimes this problem "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"arises when a decimal point is misread as a full stop.)"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">ExtNoBeginsHere_SYNERROR:</span>
|
||||
<span class="plain-syntax"> </span><a href="2-si.html#SP11" class="function-link"><span class="function-syntax">StandardProblems::extension_problem</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_ExtNoBeginsHere</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ExtensionManager::from_copy</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"has no 'begins here' sentence"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">ExtNoEndsHere_SYNERROR:</span>
|
||||
<span class="plain-syntax"> </span><a href="2-si.html#SP11" class="function-link"><span class="function-syntax">StandardProblems::extension_problem</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_ExtNoEndsHere</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ExtensionManager::from_copy</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"has no 'ends here' sentence"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">ExtSpuriouslyContinues_SYNERROR:</span>
|
||||
<span class="plain-syntax"> </span><a href="2-si.html#SP11" class="function-link"><span class="function-syntax">StandardProblems::extension_problem</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_ExtSpuriouslyContinues</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ExtensionManager::from_copy</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"continues after the 'ends here' sentence"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">ExtMultipleEndsHere_SYNERROR:</span>
|
||||
<span class="plain-syntax"> </span><a href="2-si.html#SP11" class="function-link"><span class="function-syntax">StandardProblems::extension_problem</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_ExtMultipleEndsHere</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ExtensionManager::from_copy</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"has more than one 'ends here' sentence"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">ExtMultipleBeginsHere_SYNERROR:</span>
|
||||
<span class="plain-syntax"> </span><a href="2-si.html#SP11" class="function-link"><span class="function-syntax">StandardProblems::extension_problem</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_ExtMultipleBeginsHere</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ExtensionManager::from_copy</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"has more than one 'begins here' sentence"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">ExtBeginsAfterEndsHere_SYNERROR:</span>
|
||||
<span class="plain-syntax"> </span><a href="2-si.html#SP11" class="function-link"><span class="function-syntax">StandardProblems::extension_problem</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_ExtBeginsAfterEndsHere</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ExtensionManager::from_copy</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"has a further 'begins here' after an 'ends here'"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">ExtEndsWithoutBegins_SYNERROR:</span>
|
||||
<span class="plain-syntax"> </span><a href="2-si.html#SP11" class="function-link"><span class="function-syntax">StandardProblems::extension_problem</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">BelievedImpossible</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ExtensionManager::from_copy</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"has an 'ends here' with nothing having begun"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">BadTitleSentence_SYNERROR:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details_node</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_BadTitleSentence</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"the initial bibliographic sentence can only be a title in double-quotes"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"possibly followed with 'by' and the name of the author."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">UnknownLanguageElement_SYNERROR:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details_node</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_UnknownLanguageElement</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"this heading contains a stipulation about the current "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"Inform language definition which I can't understand"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"and should be something like '(for Glulx external files "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"language element only)'."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">UnknownVirtualMachine_SYNERROR:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details_node</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_UnknownVirtualMachine</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"this heading contains a stipulation about the Setting "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"for story file format which I can't understand"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"and should be something like '(for Z-machine version 5 "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"or 8 only)' or '(for Glulx only)'."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">UseElementWithdrawn_SYNERROR:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details_node</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_UseElementWithdrawn</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"the ability to activate or deactivate compiler elements "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"in source text has been withdrawn"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"in favour of a new system with Inform kits."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">IncludeExtQuoted_SYNERROR:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details_node</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_IncludeExtQuoted</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"the name of an included extension should be given without double "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"quotes in an Include sentence"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"so for instance 'Include Oh My God by Janice Bing.' rather than "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"'Include \"Oh My God\" by Janice Bing.')"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">BogusExtension_SYNERROR:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details_node</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_BogusExtension</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"I can't find the extension requested by: %1. %P"</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"You can get hold of extensions which people have made public at "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"the Inform website, www.inform7.com, or by using the Public "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"Library in the Extensions panel."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">ExtVersionTooLow_SYNERROR:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details_node</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_stream</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_ExtVersionTooLow</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"I can't find the right version of the extension requested by %1 - "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"I can only find %2. %P"</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"You can get hold of extensions which people have made public at "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"the Inform website, www.inform7.com, or by using the Public "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"Library in the Extensions panel."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">ExtVersionMalformed_SYNERROR:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details_node</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_ExtVersionMalformed</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"a version number must have the form N/DDDDDD"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"as in the example '2/040426' for release 2 made on 26 April 2004. "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"(The DDDDDD part is optional, so '3' is a legal version number too. "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"N must be between 1 and 999: in particular, there is no version 0.)"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">ExtInadequateVM_SYNERROR:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details_node</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_stream</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_ExtInadequateVM</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"You wrote %1: but my copy of that extension stipulates that it "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"is '%2'. That means it can only be used with certain of "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"the possible compiled story file formats, and at the "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"moment, we don't fit the requirements. (You can change "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"the format used for this project on the Settings panel.)"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">ExtMisidentifiedEnds_SYNERROR:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details_node</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="2-sq.html#SP1" class="function-link"><span class="function-syntax">Problems::quote_extension</span></a><span class="plain-syntax">(1, </span><span class="identifier-syntax">ExtensionManager::from_copy</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_wording</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details_W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_ExtMisidentifiedEnds</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"The extension %1, which your source text makes use of, seems to be "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"malformed: its 'begins here' sentence correctly identifies it, but "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"then the 'ends here' sentence calls it '%2' instead. (They need "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"to be a matching pair except that the end does not name the "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"author: for instance, 'Hocus Pocus by Jan Ackerman begins here.' "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"would match with 'Hocus Pocus ends here.')"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">HeadingInPlaceOfUnincluded_SYNERROR:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details_node</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-sq.html#SP2" class="function-link"><span class="function-syntax">Problems::quote_extension_id</span></a><span class="plain-syntax">(2, </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details_work</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_HeadingInPlaceOfUnincluded</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"In the sentence %1, it looks as if you intend to replace a section "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"of source text from the extension '%2', but no extension of that "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"name has been included - so it is not possible to replace any of its "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"headings."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">UnequalHeadingInPlaceOf_SYNERROR:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details_node</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_UnequalHeadingInPlaceOf</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"these headings are not of the same level"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"so it is not possible to make the replacement. (Level here means "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"being a Volume, Book, Part, Chapter or Section: for instance, "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"only a Chapter heading can be used 'in place of' a Chapter.)"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">HeadingInPlaceOfSubordinate_SYNERROR:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details_node</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-sq.html#SP2" class="function-link"><span class="function-syntax">Problems::quote_extension_id</span></a><span class="plain-syntax">(2, </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details_work</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(3, </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details_node2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-sq.html#SP2" class="function-link"><span class="function-syntax">Problems::quote_extension_id</span></a><span class="plain-syntax">(4, </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details_work2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_HeadingInPlaceOfSubordinate</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"In the sentence %1, it looks as if you intend to replace a section "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"of source text from the extension '%2', but that doesn't really make "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"sense because this new piece of source text is part of a superior "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"heading ('%3') which is already being replaced spliced into '%4'."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">HeadingInPlaceOfUnknown_SYNERROR:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details_node</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-sq.html#SP2" class="function-link"><span class="function-syntax">Problems::quote_extension_id</span></a><span class="plain-syntax">(2, </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details_work</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_wording</span><span class="plain-syntax">(3, </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details_W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_stream</span><span class="plain-syntax">(4, </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_HeadingInPlaceOfUnknown</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"In the sentence %1, it looks as if you intend to replace a section "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"of source text from the extension '%2', but that extension does "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"not seem to have any heading called '%3'. (The version I loaded "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"was %4.)"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">default:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"unknown syntax error"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">default:</span><span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"an unknown error occurred"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-si.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-up.html">up</a></li><li class="progresssection"><a href="2-sq.html">sq</a></li><li class="progresssection"><a href="2-si.html">si</a></li><li class="progresscurrent">pwst</li><li class="progresssection"><a href="2-cp.html">cp</a></li><li class="progressnext"><a href="2-cp.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
431
docs/core-module/2-si.html
Normal file
431
docs/core-module/2-si.html
Normal file
|
@ -0,0 +1,431 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Supplementary Issues</title>
|
||||
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<meta name="viewport" content="width=device-width initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="Content-Language" content="en-gb">
|
||||
|
||||
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<script>
|
||||
function togglePopup(material_id) {
|
||||
var popup = document.getElementById(material_id);
|
||||
popup.classList.toggle("show");
|
||||
}
|
||||
</script>
|
||||
|
||||
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
<nav role="navigation">
|
||||
<h1><a href="../index.html">
|
||||
<img src="../docs-assets/Inform.png" height=72">
|
||||
</a></h1>
|
||||
<ul><li><a href="../compiler.html">compiler tools</a></li>
|
||||
<li><a href="../other.html">other tools</a></li>
|
||||
<li><a href="../extensions.html">extensions and kits</a></li>
|
||||
<li><a href="../units.html">unit test tools</a></li>
|
||||
</ul><h2>Compiler Webs</h2><ul>
|
||||
<li><a href="../inbuild/index.html">inbuild</a></li>
|
||||
<li><a href="../inform7/index.html">inform7</a></li>
|
||||
<li><a href="../inter/index.html">inter</a></li>
|
||||
</ul><h2>Inbuild Modules</h2><ul>
|
||||
<li><a href="../supervisor-module/index.html">supervisor</a></li>
|
||||
</ul><h2>Inform7 Modules</h2><ul>
|
||||
<li><a href="index.html"><span class="selectedlink">core</span></a></li>
|
||||
<li><a href="../assertions-module/index.html">assertions</a></li>
|
||||
<li><a href="../values-module/index.html">values</a></li>
|
||||
<li><a href="../knowledge-module/index.html">knowledge</a></li>
|
||||
<li><a href="../imperative-module/index.html">imperative</a></li>
|
||||
<li><a href="../runtime-module/index.html">runtime</a></li>
|
||||
<li><a href="../if-module/index.html">if</a></li>
|
||||
<li><a href="../multimedia-module/index.html">multimedia</a></li>
|
||||
<li><a href="../index-module/index.html">index</a></li>
|
||||
</ul><h2>Inter Modules</h2><ul>
|
||||
<li><a href="../bytecode-module/index.html">bytecode</a></li>
|
||||
<li><a href="../building-module/index.html">building</a></li>
|
||||
<li><a href="../codegen-module/index.html">codegen</a></li>
|
||||
</ul><h2>Services</h2><ul>
|
||||
<li><a href="../arch-module/index.html">arch</a></li>
|
||||
<li><a href="../calculus-module/index.html">calculus</a></li>
|
||||
<li><a href="../html-module/index.html">html</a></li>
|
||||
<li><a href="../inflections-module/index.html">inflections</a></li>
|
||||
<li><a href="../kinds-module/index.html">kinds</a></li>
|
||||
<li><a href="../linguistics-module/index.html">linguistics</a></li>
|
||||
<li><a href="../problems-module/index.html">problems</a></li>
|
||||
<li><a href="../syntax-module/index.html">syntax</a></li>
|
||||
<li><a href="../words-module/index.html">words</a></li>
|
||||
<li><a href="../../../inweb/docs/foundation-module/index.html">foundation</a></li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<!--Weave of 'Supplementary Issues' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7 Modules</a></li><li><a href="index.html">core</a></li><li><a href="index.html#2">Chapter 2: Problem Messages</a></li><li><b>Supplementary Issues</b></li></ul></div>
|
||||
<p class="purpose">Some supplementary general sorts of problem message.</p>
|
||||
|
||||
<ul class="toc"><li><a href="2-si.html#SP1">§1. Contradictions</a></li><li><a href="2-si.html#SP3">§3. Table problems</a></li><li><a href="2-si.html#SP4">§4. Equation problems</a></li><li><a href="2-si.html#SP5">§5. Inline definition problems</a></li><li><a href="2-si.html#SP6">§6. Proposition type-checking problems</a></li><li><a href="2-si.html#SP7">§7. Instance problems</a></li><li><a href="2-si.html#SP10">§10. Property problems</a></li><li><a href="2-si.html#SP11">§11. Extension problems</a></li><li><a href="2-si.html#SP12">§12. Releasing problems</a></li><li><a href="2-si.html#SP13">§13. Cartographical problems</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Contradictions. </b>As soon as we combine information from two sentences, we are at risk of a
|
||||
contradiction of some kind:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">StandardProblems::two_sentences_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">SIGIL_ARGUMENTS</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">other_sentence</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">message</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">explanation</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ACT_ON_SIGIL</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> == </span><span class="identifier-syntax">other_sentence</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">PASS_SIGIL</span><span class="plain-syntax">, </span><span class="identifier-syntax">message</span><span class="plain-syntax">, </span><span class="identifier-syntax">explanation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">other_sentence</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(3, </span><span class="identifier-syntax">message</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(4, </span><span class="identifier-syntax">explanation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_begin</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">explanation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"You wrote %1, but in another sentence %2: %Sagain, %3.%Lbut %3, %4"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>Almost exactly the same thing, but happening at arbitrary positions in the
|
||||
parse tree, and concerning an instance:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">StandardProblems::contradiction_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">SIGIL_ARGUMENTS</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">A</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">message</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">explanation</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ACT_ON_SIGIL</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">A</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">B</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-sq.html#SP1" class="function-link"><span class="function-syntax">Problems::quote_object</span></a><span class="plain-syntax">(3, </span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(4, </span><span class="identifier-syntax">message</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(5, </span><span class="identifier-syntax">explanation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_begin</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">explanation</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::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">), </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">B</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">Problems::issue_problem_segment</span><span class="plain-syntax">(</span><span class="string-syntax">"You wrote %1, but in another sentence %2: "</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">Problems::issue_problem_segment</span><span class="plain-syntax">(</span><span class="string-syntax">"You wrote %1: "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span><span class="string-syntax">"%Sagain, %3 %4.%L%3 %4, %5"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</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">StandardProblems::infs_contradiction_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">SIGIL_ARGUMENTS</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">A</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">message</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">explanation</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ACT_ON_SIGIL</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">A</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">B</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-sq.html#SP2" class="function-link"><span class="function-syntax">Problems::quote_subject</span></a><span class="plain-syntax">(3, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(4, </span><span class="identifier-syntax">message</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(5, </span><span class="identifier-syntax">explanation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_begin</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">explanation</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::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">), </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">B</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">Problems::issue_problem_segment</span><span class="plain-syntax">(</span><span class="string-syntax">"You wrote %1, but in another sentence %2: "</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">Problems::issue_problem_segment</span><span class="plain-syntax">(</span><span class="string-syntax">"You wrote %1: "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span><span class="string-syntax">"%Sagain, %3 %4.%L%3 %4, %5"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. Table problems. </b>In principle we could treat these as sentence problems, but the "sentence"
|
||||
for a table can be enormous: so we need something which can show which
|
||||
table we are in, yet still only cite a small part of it —
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">StandardProblems::table_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">SIGIL_ARGUMENTS</span><span class="plain-syntax">, </span><span class="identifier-syntax">table</span><span class="plain-syntax"> *</span><span class="identifier-syntax">t</span><span class="plain-syntax">, </span><span class="identifier-syntax">table_column</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tc</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">message</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ACT_ON_SIGIL</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">t</span><span class="plain-syntax">-></span><span class="identifier-syntax">headline_fragment</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="2-sq.html#SP2" class="function-link"><span class="function-syntax">Problems::quote_table</span></a><span class="plain-syntax">(1, </span><span class="identifier-syntax">t</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">tc</span><span class="plain-syntax">) </span><span class="identifier-syntax">Problems::quote_wording</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">Nouns::nominative_singular</span><span class="plain-syntax">(</span><span class="identifier-syntax">tc</span><span class="plain-syntax">-></span><span class="identifier-syntax">name</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">data</span><span class="plain-syntax">) </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(3, </span><span class="identifier-syntax">data</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_begin</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="string-syntax">""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span><span class="identifier-syntax">message</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. Equation problems. </b>So this is where hopes are generically dashed about equations:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">StandardProblems::equation_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">SIGIL_ARGUMENTS</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="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">text</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ACT_ON_SIGIL</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_wording</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">eqn</span><span class="plain-syntax">-></span><span class="identifier-syntax">equation_text</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(3, </span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_begin</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="string-syntax">""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span><span class="string-syntax">"In %1, you define an equation '%2': but "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</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">StandardProblems::equation_problem_S</span><span class="plain-syntax">(</span><span class="identifier-syntax">SIGIL_ARGUMENTS</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">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">text</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ACT_ON_SIGIL</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_wording</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">eqn</span><span class="plain-syntax">-></span><span class="identifier-syntax">equation_text</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_stream</span><span class="plain-syntax">(3, </span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_begin</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="string-syntax">""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span><span class="string-syntax">"In %1, you define an equation '%2': but "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</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">StandardProblems::equation_symbol_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">SIGIL_ARGUMENTS</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">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">text</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ACT_ON_SIGIL</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_wording</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(3, </span><span class="identifier-syntax">text</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_begin</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="string-syntax">""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"In %1, you define an equation which mentions the symbol '%2': but %3"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. Inline definition problems. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">StandardProblems::inline_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">SIGIL_ARGUMENTS</span><span class="plain-syntax">, </span><span class="identifier-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">definition</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">message</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ACT_ON_SIGIL</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_stream</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">definition</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">XW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Phrases::Usage::get_preamble_text</span><span class="plain-syntax">(&(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">-></span><span class="identifier-syntax">usage_data</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_wording_as_source</span><span class="plain-syntax">(3, </span><span class="identifier-syntax">XW</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_begin</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="string-syntax">""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"You wrote %1, which I read as making use of the phrase %3. This in turn "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"has what's called an 'inline' definition, written in a technical notation "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"usually needed only by the Standard Rules or other low-level extensions. "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"The definition here is '%2' but it seems to be broken. "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span><span class="identifier-syntax">message</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. Proposition type-checking problems. </b>Are mostly issued thus:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">StandardProblems::tcp_problem</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">StandardProblems::tcp_problem</span></span>:<br/>Calculus Problems - <a href="2-cp.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">SIGIL_ARGUMENTS</span><span class="plain-syntax">, </span><span class="identifier-syntax">tc_problem_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tck</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prototype</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">tck</span><span class="plain-syntax">-></span><span class="identifier-syntax">issue_error</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ACT_ON_SIGIL</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_wording</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">tck</span><span class="plain-syntax">-></span><span class="identifier-syntax">ew_text</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(3, </span><span class="identifier-syntax">tck</span><span class="plain-syntax">-></span><span class="identifier-syntax">intention</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_begin</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="string-syntax">""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"In the sentence %1, it looks as if you intend '%2' to %3, but "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span><span class="identifier-syntax">prototype</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">tck</span><span class="plain-syntax">-></span><span class="identifier-syntax">flag_problem</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. Instance problems. </b>Instances can be created rather indirectly (for instance, in the course of
|
||||
assemblies of other instances), and their properties are sometimes inferred
|
||||
from information in sentences far distant, so we can't always locate
|
||||
these problems at any particular sentence.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">StandardProblems::object_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">SIGIL_ARGUMENTS</span><span class="plain-syntax">, </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">message</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">explanation</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ACT_ON_SIGIL</span>
|
||||
<span class="plain-syntax"> </span><a href="2-sq.html#SP1" class="function-link"><span class="function-syntax">Problems::quote_object</span></a><span class="plain-syntax">(1, </span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">message</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(3, </span><span class="identifier-syntax">explanation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_begin</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">explanation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span><span class="string-syntax">"The %1 %2%S.%L, %3"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</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">StandardProblems::object_problem_at_sentence</span><span class="plain-syntax">(</span><span class="identifier-syntax">SIGIL_ARGUMENTS</span><span class="plain-syntax">, </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">message</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">explanation</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ACT_ON_SIGIL</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">message</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(3, </span><span class="identifier-syntax">explanation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-sq.html#SP1" class="function-link"><span class="function-syntax">Problems::quote_object</span></a><span class="plain-syntax">(4, </span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_begin</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">explanation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span><span class="string-syntax">"You wrote %1, but the %4 %2%S.%L, %3"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</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">StandardProblems::subject_problem_at_sentence</span><span class="plain-syntax">(</span><span class="identifier-syntax">SIGIL_ARGUMENTS</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">message</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">explanation</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ACT_ON_SIGIL</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">message</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(3, </span><span class="identifier-syntax">explanation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-sq.html#SP2" class="function-link"><span class="function-syntax">Problems::quote_subject</span></a><span class="plain-syntax">(4, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_begin</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">explanation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span><span class="string-syntax">"You wrote %1, but the %4 %2%S.%L, %3"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. </b>When objects are created with bizarre names, this is usually a symptom of
|
||||
some other malaise, and so we issue the following message with a little
|
||||
more tact (and in particular, we don't assert very confidently that what
|
||||
we are dealing with is genuinely an object).
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">StandardProblems::subject_creation_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">SIGIL_ARGUMENTS</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">message</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">explanation</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ACT_ON_SIGIL</span>
|
||||
<span class="plain-syntax"> </span><a href="2-sq.html#SP2" class="function-link"><span class="function-syntax">Problems::quote_subject</span></a><span class="plain-syntax">(1, </span><span class="identifier-syntax">subj</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">message</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(3, </span><span class="identifier-syntax">explanation</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">InferenceSubjects::get_name_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">subj</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::nonempty</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">Problems::quote_source</span><span class="plain-syntax">(4, </span><span class="identifier-syntax">Diagrams::new_UNPARSED_NOUN</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">Problems::issue_problem_begin</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">explanation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"I've made something called %4 but it %2%S.%L, %3"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_begin</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">explanation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"I've made something called '%1' but it %2%S.%L, %3"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. </b>Information about objects is assembled in a mass of inferences. When these
|
||||
contradict each other, that is usually the occasion for a contradiction
|
||||
problem (see above); the following routine is used only when inferences
|
||||
are implied which necessarily make no sense, rather than merely contingently
|
||||
making no sense.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">StandardProblems::inference_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">SIGIL_ARGUMENTS</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">message</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">explanation</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ACT_ON_SIGIL</span>
|
||||
<span class="plain-syntax"> </span><a href="2-sq.html#SP2" class="function-link"><span class="function-syntax">Problems::quote_subject</span></a><span class="plain-syntax">(1, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">World::Inferences::where_inferred</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(3, </span><span class="identifier-syntax">message</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(4, </span><span class="identifier-syntax">explanation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-sq.html#SP2" class="function-link"><span class="function-syntax">Problems::quote_property</span></a><span class="plain-syntax">(5, </span><span class="identifier-syntax">World::Inferences::get_property</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_begin</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">explanation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"You wrote %2: but the property %5 for the %1 %3%S.%L, %4"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. Property problems. </b>Just occasionally there is a problem with the definition of a property in the
|
||||
abstract, rather than with the actual property of some specific object.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">StandardProblems::property_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">SIGIL_ARGUMENTS</span><span class="plain-syntax">, </span><span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">message</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">explanation</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ACT_ON_SIGIL</span>
|
||||
<span class="plain-syntax"> </span><a href="2-sq.html#SP2" class="function-link"><span class="function-syntax">Problems::quote_property</span></a><span class="plain-syntax">(1, </span><span class="identifier-syntax">prn</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">message</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(3, </span><span class="identifier-syntax">explanation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_begin</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">explanation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span><span class="string-syntax">"The %1 %2%S.%L, %3"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. Extension problems. </b>These are generated when the user tries to employ a malformed extension.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">StandardProblems::extension_problem</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">StandardProblems::extension_problem</span></span>:<br/>Problems With Source Text - <a href="2-pwst.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">SIGIL_ARGUMENTS</span><span class="plain-syntax">, </span><span class="identifier-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">message</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ACT_ON_SIGIL</span>
|
||||
<span class="plain-syntax"> </span><a href="2-sq.html#SP1" class="function-link"><span class="function-syntax">Problems::quote_extension</span></a><span class="plain-syntax">(1, </span><span class="identifier-syntax">E</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">message</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_begin</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">message</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"The extension %1, which your source text makes use of, %2."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>§12. Releasing problems. </b>These occur when the release instructions do not make sense. Sometimes it's
|
||||
possible to pin down an exact place where the difficulty occurs, but
|
||||
sometimes not.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">StandardProblems::release_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">SIGIL_ARGUMENTS</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">message</span><span class="plain-syntax">, </span><span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ACT_ON_SIGIL</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">message</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">fn</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">fn</span><span class="plain-syntax">, </span><span class="string-syntax">"%f"</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_stream</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">fn</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_begin</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">message</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span><span class="string-syntax">"A problem occurred with the 'Release along with...': "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"instructions: %1 (with the file '%2')"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</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">fn</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">StandardProblems::release_problem_path</span><span class="plain-syntax">(</span><span class="identifier-syntax">SIGIL_ARGUMENTS</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">message</span><span class="plain-syntax">, </span><span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">path</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ACT_ON_SIGIL</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">message</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">pn</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">pn</span><span class="plain-syntax">, </span><span class="string-syntax">"%p"</span><span class="plain-syntax">, </span><span class="identifier-syntax">path</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_stream</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">pn</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_begin</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">message</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span><span class="string-syntax">"A problem occurred with the 'Release along with...': "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"instructions: %1 (with the file '%2')"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</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">pn</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">StandardProblems::release_problem_at_sentence</span><span class="plain-syntax">(</span><span class="identifier-syntax">SIGIL_ARGUMENTS</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">message</span><span class="plain-syntax">, </span><span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ACT_ON_SIGIL</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">message</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">fn</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">fn</span><span class="plain-syntax">, </span><span class="string-syntax">"%f"</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_stream</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">fn</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(3, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_begin</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">message</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span><span class="string-syntax">"A problem occurred with the 'Release along with...': "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"instructions (%3): %1 (with the file '%2')"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</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">fn</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>§13. Cartographical problems. </b>The map-maker used for the World index and also the EPS-file output has its
|
||||
own quaint syntax, and where there is syntax, there are error messages:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">StandardProblems::map_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">SIGIL_ARGUMENTS</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">q</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">message</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ACT_ON_SIGIL</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">q</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">message</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_begin</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="string-syntax">""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span><span class="string-syntax">"You gave as a hint in map-making: %1. %2"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</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">StandardProblems::map_problem_wanted_but</span><span class="plain-syntax">(</span><span class="identifier-syntax">SIGIL_ARGUMENTS</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">q</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i_wanted_a</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">vw1</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ACT_ON_SIGIL</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">q</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">i_wanted_a</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_wording</span><span class="plain-syntax">(3, </span><span class="identifier-syntax">Wordings::one_word</span><span class="plain-syntax">(</span><span class="identifier-syntax">vw1</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_begin</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="string-syntax">""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"You gave as a hint in map-making: %1. But the value '%3' did not "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"fit - it should have been %2."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-sq.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-up.html">up</a></li><li class="progresssection"><a href="2-sq.html">sq</a></li><li class="progresscurrent">si</li><li class="progresssection"><a href="2-pwst.html">pwst</a></li><li class="progresssection"><a href="2-cp.html">cp</a></li><li class="progressnext"><a href="2-pwst.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
226
docs/core-module/2-sq.html
Normal file
226
docs/core-module/2-sq.html
Normal file
|
@ -0,0 +1,226 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Supplementary Quotes</title>
|
||||
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<meta name="viewport" content="width=device-width initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="Content-Language" content="en-gb">
|
||||
|
||||
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<script>
|
||||
function togglePopup(material_id) {
|
||||
var popup = document.getElementById(material_id);
|
||||
popup.classList.toggle("show");
|
||||
}
|
||||
</script>
|
||||
|
||||
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
<nav role="navigation">
|
||||
<h1><a href="../index.html">
|
||||
<img src="../docs-assets/Inform.png" height=72">
|
||||
</a></h1>
|
||||
<ul><li><a href="../compiler.html">compiler tools</a></li>
|
||||
<li><a href="../other.html">other tools</a></li>
|
||||
<li><a href="../extensions.html">extensions and kits</a></li>
|
||||
<li><a href="../units.html">unit test tools</a></li>
|
||||
</ul><h2>Compiler Webs</h2><ul>
|
||||
<li><a href="../inbuild/index.html">inbuild</a></li>
|
||||
<li><a href="../inform7/index.html">inform7</a></li>
|
||||
<li><a href="../inter/index.html">inter</a></li>
|
||||
</ul><h2>Inbuild Modules</h2><ul>
|
||||
<li><a href="../supervisor-module/index.html">supervisor</a></li>
|
||||
</ul><h2>Inform7 Modules</h2><ul>
|
||||
<li><a href="index.html"><span class="selectedlink">core</span></a></li>
|
||||
<li><a href="../assertions-module/index.html">assertions</a></li>
|
||||
<li><a href="../values-module/index.html">values</a></li>
|
||||
<li><a href="../knowledge-module/index.html">knowledge</a></li>
|
||||
<li><a href="../imperative-module/index.html">imperative</a></li>
|
||||
<li><a href="../runtime-module/index.html">runtime</a></li>
|
||||
<li><a href="../if-module/index.html">if</a></li>
|
||||
<li><a href="../multimedia-module/index.html">multimedia</a></li>
|
||||
<li><a href="../index-module/index.html">index</a></li>
|
||||
</ul><h2>Inter Modules</h2><ul>
|
||||
<li><a href="../bytecode-module/index.html">bytecode</a></li>
|
||||
<li><a href="../building-module/index.html">building</a></li>
|
||||
<li><a href="../codegen-module/index.html">codegen</a></li>
|
||||
</ul><h2>Services</h2><ul>
|
||||
<li><a href="../arch-module/index.html">arch</a></li>
|
||||
<li><a href="../calculus-module/index.html">calculus</a></li>
|
||||
<li><a href="../html-module/index.html">html</a></li>
|
||||
<li><a href="../inflections-module/index.html">inflections</a></li>
|
||||
<li><a href="../kinds-module/index.html">kinds</a></li>
|
||||
<li><a href="../linguistics-module/index.html">linguistics</a></li>
|
||||
<li><a href="../problems-module/index.html">problems</a></li>
|
||||
<li><a href="../syntax-module/index.html">syntax</a></li>
|
||||
<li><a href="../words-module/index.html">words</a></li>
|
||||
<li><a href="../../../inweb/docs/foundation-module/index.html">foundation</a></li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<!--Weave of 'Supplementary Quotes' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7 Modules</a></li><li><a href="index.html">core</a></li><li><a href="index.html#2">Chapter 2: Problem Messages</a></li><li><b>Supplementary Quotes</b></li></ul></div>
|
||||
<p class="purpose">More things to quote in problem messages.</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>We provide some simple extensions to the Problems module's stock of data
|
||||
structures which can be quoted. (These routines look as if they ought to be
|
||||
automated with macros, but that would be a nuisance because the tangler then
|
||||
wouldn't auto-predeclare them; and there aren't so very many of them.)
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::quote_spec</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Problems::quote_spec</span></span>:<br/><a href="2-sq.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</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">Problems::problem_quote</span><span class="plain-syntax">(</span><span class="identifier-syntax">t</span><span class="plain-syntax">, (</span><span class="reserved-syntax">void</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><a href="2-sq.html#SP1" class="function-link"><span class="function-syntax">Problems::expand_spec</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::expand_spec</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">void</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">Specifications::write_out_in_English</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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::quote_relation</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">Problems::quote_relation</span></span>:<br/>Calculus Problems - <a href="2-cp.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax">, </span><span class="identifier-syntax">binary_predicate</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">Problems::problem_quote</span><span class="plain-syntax">(</span><span class="identifier-syntax">t</span><span class="plain-syntax">, (</span><span class="reserved-syntax">void</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><a href="2-sq.html#SP1" class="function-link"><span class="function-syntax">Problems::expand_relation</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::expand_relation</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">void</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">BinaryPredicateFamilies::describe_for_problems</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, (</span><span class="identifier-syntax">binary_predicate</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">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::quote_phrase</span><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax">, </span><span class="identifier-syntax">phrase</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">Problems::problem_quote</span><span class="plain-syntax">(</span><span class="identifier-syntax">t</span><span class="plain-syntax">, (</span><span class="reserved-syntax">void</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><a href="2-sq.html#SP1" class="function-link"><span class="function-syntax">Problems::expand_phrase</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::expand_phrase</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">void</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">Phrases::write_HTML_representation</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, (</span><span class="identifier-syntax">phrase</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">INDEX_PHRASE_FORMAT</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">Problems::quote_extension</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Problems::quote_extension</span></span>:<br/>Supplementary Issues - <a href="2-si.html#SP11">§11</a><br/>Problems With Source Text - <a href="2-pwst.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax">, </span><span class="identifier-syntax">inform_extension</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">Problems::problem_quote</span><span class="plain-syntax">(</span><span class="identifier-syntax">t</span><span class="plain-syntax">, (</span><span class="reserved-syntax">void</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><a href="2-sq.html#SP1" class="function-link"><span class="function-syntax">Problems::expand_extension</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::expand_extension</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">void</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">Extensions::write</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inform_extension</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">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::quote_copy</span><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax">, </span><span class="identifier-syntax">inbuild_copy</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">Problems::problem_quote</span><span class="plain-syntax">(</span><span class="identifier-syntax">t</span><span class="plain-syntax">, (</span><span class="reserved-syntax">void</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><a href="2-sq.html#SP1" class="function-link"><span class="function-syntax">Problems::expand_copy</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::expand_copy</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">void</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">Copies::write_copy</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inbuild_copy</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">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::quote_work</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">Problems::quote_work</span></span>:<br/>Problems With Source Text - <a href="2-pwst.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax">, </span><span class="identifier-syntax">inbuild_work</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">Problems::problem_quote</span><span class="plain-syntax">(</span><span class="identifier-syntax">t</span><span class="plain-syntax">, (</span><span class="reserved-syntax">void</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><a href="2-sq.html#SP1" class="function-link"><span class="function-syntax">Problems::expand_work</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::expand_work</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">void</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">Works::write</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inbuild_work</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">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::quote_object</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">Problems::quote_object</span></span>:<br/><a href="2-sq.html#SP2">§2</a><br/>Supplementary Issues - <a href="2-si.html#SP2">§2</a>, <a href="2-si.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax">, </span><span class="identifier-syntax">instance</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">Problems::problem_quote</span><span class="plain-syntax">(</span><span class="identifier-syntax">t</span><span class="plain-syntax">, (</span><span class="reserved-syntax">void</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><a href="2-sq.html#SP2" class="function-link"><span class="function-syntax">Problems::expand_object</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>Since numerous instances are created without explicit and distinct
|
||||
names, for instance by sentences like
|
||||
</p>
|
||||
|
||||
<blockquote>
|
||||
<p>Four coins are in the box.</p>
|
||||
</blockquote>
|
||||
|
||||
<p class="commentary">...it's prudent to quote instances without names carefully, and not to ignore
|
||||
this as some kind of marginal will-never-happen case.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::expand_object</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">Problems::expand_object</span></span>:<br/><a href="2-sq.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">void</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">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">instance</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">I</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">Instances::get_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</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">Wordings::nonempty</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">Problems::expand_text_within_reason</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"nameless "</span><span class="plain-syntax">);</span>
|
||||
<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">Instances::to_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</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">KW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Kinds::Behaviour::get_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">k</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">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">KW</span><span class="plain-syntax">)) </span><span class="identifier-syntax">Problems::expand_text_within_reason</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">KW</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"thing"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Instances::get_creating_sentence</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</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">from</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" created in the sentence "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::append_source</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">from</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::quote_subject</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">Problems::quote_subject</span></span>:<br/>Supplementary Issues - <a href="2-si.html#SP2">§2</a>, <a href="2-si.html#SP7">§7</a>, <a href="2-si.html#SP8">§8</a>, <a href="2-si.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</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">infs</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) { </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">t</span><span class="plain-syntax">, </span><span class="string-syntax">"something"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</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">InferenceSubjects::get_name_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</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::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) { </span><span class="identifier-syntax">Problems::quote_wording</span><span class="plain-syntax">(</span><span class="identifier-syntax">t</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax">; }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InferenceSubjects::as_object_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</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">I</span><span class="plain-syntax">) { </span><a href="2-sq.html#SP1" class="function-link"><span class="function-syntax">Problems::quote_object</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">t</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax">; }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">t</span><span class="plain-syntax">, </span><span class="string-syntax">"something nameless"</span><span class="plain-syntax">); </span><span class="comment-syntax"> this never actually happens</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::quote_invocation</span><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</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">Problems::problem_quote</span><span class="plain-syntax">(</span><span class="identifier-syntax">t</span><span class="plain-syntax">, (</span><span class="reserved-syntax">void</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><a href="2-sq.html#SP2" class="function-link"><span class="function-syntax">Problems::expand_invocation</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::expand_invocation</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">void</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">Phrases::TypeData::Textual::inv_write_HTML_representation</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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::quote_extension_id</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">Problems::quote_extension_id</span></span>:<br/>Problems With Source Text - <a href="2-pwst.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax">, </span><span class="identifier-syntax">inbuild_work</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">Problems::problem_quote</span><span class="plain-syntax">(</span><span class="identifier-syntax">t</span><span class="plain-syntax">, (</span><span class="reserved-syntax">void</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><a href="2-sq.html#SP2" class="function-link"><span class="function-syntax">Problems::expand_extension_id</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::expand_extension_id</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">void</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">Works::write_to_HTML_file</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inbuild_work</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">p</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">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::quote_property</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">Problems::quote_property</span></span>:<br/>Supplementary Issues - <a href="2-si.html#SP9">§9</a>, <a href="2-si.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax">, </span><span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) { </span><span class="identifier-syntax">Problems::quote_wording</span><span class="plain-syntax">(</span><span class="identifier-syntax">t</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">-></span><span class="identifier-syntax">name</span><span class="plain-syntax">); }</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::quote_table</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">Problems::quote_table</span></span>:<br/>Supplementary Issues - <a href="2-si.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax">, </span><span class="identifier-syntax">table</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tab</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(</span><span class="identifier-syntax">t</span><span class="plain-syntax">, </span><span class="identifier-syntax">Tables::get_headline</span><span class="plain-syntax">(</span><span class="identifier-syntax">tab</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>To quote a kind is straightforward enough:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::quote_kind</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">Problems::quote_kind</span></span>:<br/><a href="2-sq.html#SP4">§4</a><br/>Calculus Problems - <a href="2-cp.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><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="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">K</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</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_nil</span><span class="plain-syntax">))) </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">t</span><span class="plain-syntax">, </span><span class="string-syntax">"nothing"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">K</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</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_void</span><span class="plain-syntax">))) </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">t</span><span class="plain-syntax">, </span><span class="string-syntax">"nothing"</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">Problems::problem_quote</span><span class="plain-syntax">(</span><span class="identifier-syntax">t</span><span class="plain-syntax">, (</span><span class="reserved-syntax">void</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><a href="2-sq.html#SP3" class="function-link"><span class="function-syntax">Problems::expand_kind</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::expand_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">void</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">Kinds::Textual::write_articled</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, (</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b>But we also provide another way to mention kinds within problem messages;
|
||||
we quote not a literal constant but its kind of value, changing (say) the
|
||||
actual constant 15 to the generic constant "number":
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::quote_kind_of</span><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</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">Rvalues::is_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</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">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="constant-syntax">self_object_ANNOT</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">t</span><span class="plain-syntax">, </span><span class="string-syntax">"implicit object"</span><span class="plain-syntax">); </span><span class="comment-syntax"> this is probably never seen, but just in case</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="constant-syntax">nothing_object_ANNOT</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">t</span><span class="plain-syntax">, </span><span class="string-syntax">"the 'nothing' non-object"</span><span class="plain-syntax">); </span><span class="comment-syntax"> whereas this can certainly happen</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Rvalues::to_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-sq.html#SP3" class="function-link"><span class="function-syntax">Problems::quote_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">t</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::to_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<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">Specifications::to_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</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">) </span><a href="2-sq.html#SP3" class="function-link"><span class="function-syntax">Problems::quote_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">t</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><a href="2-sq.html#SP1" class="function-link"><span class="function-syntax">Problems::quote_spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">t</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-up.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-up.html">up</a></li><li class="progresscurrent">sq</li><li class="progresssection"><a href="2-si.html">si</a></li><li class="progresssection"><a href="2-pwst.html">pwst</a></li><li class="progresssection"><a href="2-cp.html">cp</a></li><li class="progressnext"><a href="2-si.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
387
docs/core-module/2-up.html
Normal file
387
docs/core-module/2-up.html
Normal file
|
@ -0,0 +1,387 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Using Problems</title>
|
||||
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<meta name="viewport" content="width=device-width initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="Content-Language" content="en-gb">
|
||||
|
||||
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<script>
|
||||
function togglePopup(material_id) {
|
||||
var popup = document.getElementById(material_id);
|
||||
popup.classList.toggle("show");
|
||||
}
|
||||
</script>
|
||||
|
||||
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
<nav role="navigation">
|
||||
<h1><a href="../index.html">
|
||||
<img src="../docs-assets/Inform.png" height=72">
|
||||
</a></h1>
|
||||
<ul><li><a href="../compiler.html">compiler tools</a></li>
|
||||
<li><a href="../other.html">other tools</a></li>
|
||||
<li><a href="../extensions.html">extensions and kits</a></li>
|
||||
<li><a href="../units.html">unit test tools</a></li>
|
||||
</ul><h2>Compiler Webs</h2><ul>
|
||||
<li><a href="../inbuild/index.html">inbuild</a></li>
|
||||
<li><a href="../inform7/index.html">inform7</a></li>
|
||||
<li><a href="../inter/index.html">inter</a></li>
|
||||
</ul><h2>Inbuild Modules</h2><ul>
|
||||
<li><a href="../supervisor-module/index.html">supervisor</a></li>
|
||||
</ul><h2>Inform7 Modules</h2><ul>
|
||||
<li><a href="index.html"><span class="selectedlink">core</span></a></li>
|
||||
<li><a href="../assertions-module/index.html">assertions</a></li>
|
||||
<li><a href="../values-module/index.html">values</a></li>
|
||||
<li><a href="../knowledge-module/index.html">knowledge</a></li>
|
||||
<li><a href="../imperative-module/index.html">imperative</a></li>
|
||||
<li><a href="../runtime-module/index.html">runtime</a></li>
|
||||
<li><a href="../if-module/index.html">if</a></li>
|
||||
<li><a href="../multimedia-module/index.html">multimedia</a></li>
|
||||
<li><a href="../index-module/index.html">index</a></li>
|
||||
</ul><h2>Inter Modules</h2><ul>
|
||||
<li><a href="../bytecode-module/index.html">bytecode</a></li>
|
||||
<li><a href="../building-module/index.html">building</a></li>
|
||||
<li><a href="../codegen-module/index.html">codegen</a></li>
|
||||
</ul><h2>Services</h2><ul>
|
||||
<li><a href="../arch-module/index.html">arch</a></li>
|
||||
<li><a href="../calculus-module/index.html">calculus</a></li>
|
||||
<li><a href="../html-module/index.html">html</a></li>
|
||||
<li><a href="../inflections-module/index.html">inflections</a></li>
|
||||
<li><a href="../kinds-module/index.html">kinds</a></li>
|
||||
<li><a href="../linguistics-module/index.html">linguistics</a></li>
|
||||
<li><a href="../problems-module/index.html">problems</a></li>
|
||||
<li><a href="../syntax-module/index.html">syntax</a></li>
|
||||
<li><a href="../words-module/index.html">words</a></li>
|
||||
<li><a href="../../../inweb/docs/foundation-module/index.html">foundation</a></li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<!--Weave of 'Using Problems' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7 Modules</a></li><li><a href="index.html">core</a></li><li><a href="index.html#2">Chapter 2: Problem Messages</a></li><li><b>Using Problems</b></li></ul></div>
|
||||
<p class="purpose">Interface to the Problems module.</p>
|
||||
|
||||
<ul class="toc"><li><a href="2-up.html#SP3">§3. Outcome images</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b></p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">PROBLEMS_HTML_EMITTER</span><span class="plain-syntax"> </span><span class="identifier-syntax">HTML::put</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>Inform tops and tails its output of problem messages, and it also prints
|
||||
non-problem messages when everything was fine. That all happens here:
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">START_PROBLEM_FILE_PROBLEMS_CALLBACK</span><span class="plain-syntax"> </span><a href="2-up.html#SP2" class="function-link"><span class="function-syntax">Problems::Using::start_problems_report</span></a>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">INFORMATIONAL_ADDENDA_PROBLEMS_CALLBACK</span><span class="plain-syntax"> </span><a href="2-up.html#SP2" class="function-link"><span class="function-syntax">Problems::Using::final_report</span></a>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::Using::start_problems_report</span><span class="plain-syntax">(</span><span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</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">STREAM_OPEN_TO_FILE</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="identifier-syntax">UTF8_ENC</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">Problems::fatal_on_file</span><span class="plain-syntax">(</span><span class="string-syntax">"Can't open problem log"</span><span class="plain-syntax">, </span><span class="identifier-syntax">F</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::header</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Translating the Source"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Supervisor::file_from_installation</span><span class="plain-syntax">(</span><span class="identifier-syntax">CSS_FOR_STANDARD_PAGES_IRES</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Supervisor::file_from_installation</span><span class="plain-syntax">(</span><span class="identifier-syntax">JAVASCRIPT_FOR_STANDARD_PAGES_IRES</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">Problems::Using::final_report</span><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">disaster_struck</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">problems_count</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">total_words</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">problem_count</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ProblemBuffer::redirect_problem_stream</span><span class="plain-syntax">(</span><span class="identifier-syntax">problems_file</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_begin</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="string-syntax">"*"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">disaster_struck</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-up.html#SP2_1" class="named-paragraph-link"><span class="named-paragraph">Issue problem summary for an internal error</span><span class="named-paragraph-number">2.1</span></a></span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-up.html#SP2_2" class="named-paragraph-link"><span class="named-paragraph">Issue problem summary for a run with problem messages</span><span class="named-paragraph-number">2.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ProblemBuffer::redirect_problem_stream</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">else</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">rooms</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">things</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="2-up.html#SP4" class="function-link"><span class="function-syntax">Problems::Using::html_outcome_image</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">problems_file</span><span class="plain-syntax">, </span><span class="string-syntax">"ni_succeeded"</span><span class="plain-syntax">, </span><span class="string-syntax">"Succeeded"</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">IF_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PL::Spatial::get_world_size</span><span class="plain-syntax">(&</span><span class="identifier-syntax">rooms</span><span class="plain-syntax">, &</span><span class="identifier-syntax">things</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_number</span><span class="plain-syntax">(1, &</span><span class="identifier-syntax">rooms</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">rooms</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(2, </span><span class="string-syntax">"room"</span><span class="plain-syntax">); </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(2, </span><span class="string-syntax">"rooms"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_number</span><span class="plain-syntax">(3, &</span><span class="identifier-syntax">things</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">things</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(4, </span><span class="string-syntax">"thing"</span><span class="plain-syntax">); </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(4, </span><span class="string-syntax">"things"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">total_words</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TextFromFiles::total_word_count</span><span class="plain-syntax">(</span><span class="identifier-syntax">FIRST_OBJECT</span><span class="plain-syntax">(</span><span class="identifier-syntax">source_file</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_number</span><span class="plain-syntax">(5, &</span><span class="identifier-syntax">total_words</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-up.html#SP2_3" class="named-paragraph-link"><span class="named-paragraph">Issue problem summaries for a run without problems</span><span class="named-paragraph-number">2.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP2_1" class="paragraph-anchor"></a><b>§2.1. </b>One of the slightly annoying things about internal errors is that Inform's
|
||||
users persistently refer to them as "crashes" on bug report forms. I mean,
|
||||
the effort we go to! They are entirely clean exits from the program! The
|
||||
ingratitude of some — oh, all right.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue problem summary for an internal error</span><span class="named-paragraph-number">2.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"What has happened here is that one of the checks Inform carries "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"out internally, to see if it is working properly, has failed. "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"There must be a bug in this copy of Inform. It may be worth "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"checking whether you have the current, up-to-date version. "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"If so, please report this problem via www.inform7.com/bugs. %P"</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"As for fixing your source text to avoid this bug, the last thing "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"you changed is probably the cause, if there is a simple cause. "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"Your source text might in fact be wrong, and the problem might be "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"occurring because Inform has failed to find a good way to say so. "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"But even if your source text looks correct, there are "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"probably rephrasings which would achieve the same effect."</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-up.html#SP2">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_2" class="paragraph-anchor"></a><b>§2.2. </b>Singular and plural versions of the same message, really:
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue problem summary for a run with problem messages</span><span class="named-paragraph-number">2.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">problem_count</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">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"Because of this problem, the source could not be translated "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"into a working game. (Correct the source text to "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"remove the difficulty and click on Go once again.)"</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">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"Problems occurring in translation prevented the game "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"from being properly created. (Correct the source text to "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"remove these problems and click on Go once again.)"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-up.html#SP4" class="function-link"><span class="function-syntax">Problems::Using::outcome_image_tail</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">problems_file</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">STATUS</span><span class="plain-syntax"> = </span><a href="1-pp.html#SP2" class="function-link"><span class="function-syntax">ProgressBar::begin_outcome</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">STATUS</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">STATUS</span><span class="plain-syntax">, </span><span class="string-syntax">"Translation failed: %d problem%s found"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">problem_count</span><span class="plain-syntax">, (</span><span class="identifier-syntax">problem_count</span><span class="plain-syntax">==1)?</span><span class="string-syntax">""</span><span class="plain-syntax">:</span><span class="string-syntax">"s"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-pp.html#SP2" class="function-link"><span class="function-syntax">ProgressBar::end_outcome</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-up.html#SP2">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_3" class="paragraph-anchor"></a><b>§2.3. </b>The success message needs to take different forms in <span class="extract"><span class="extract-syntax">stdout</span></span> and in
|
||||
the Problems log file. In the latter, we write as though the subsequent
|
||||
conversion of Inform's output to a story file via Inform 6 had already been
|
||||
completed successfully — this is because the Problems log is intended
|
||||
to be viewed inside the Inform application, which will instead divert to
|
||||
an error page if I6 should fail. So although the Problems file contains
|
||||
an unwarranted claim, if not an actual falsehood, no human eye should see
|
||||
it unless and until it comes true.
|
||||
</p>
|
||||
|
||||
<p class="commentary">We don't want to make similar claims on <span class="extract"><span class="extract-syntax">stdout</span></span>, where the user — who
|
||||
might well not be running in the Inform application, but only on the
|
||||
command line — deserves the truth.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue problem summaries for a run without problems</span><span class="named-paragraph-number">2.3</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ProblemBuffer::redirect_problem_stream</span><span class="plain-syntax">(</span><span class="identifier-syntax">problems_file</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OUT</span><span class="plain-syntax"> = </span><span class="identifier-syntax">problems_file</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_begin</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="string-syntax">"**"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"The %5-word source text has successfully been translated "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"into a world with %1 %2 and %3 %4, and the index has been "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"brought up to date."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-up.html#SP4" class="function-link"><span class="function-syntax">Problems::Using::outcome_image_tail</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">problems_file</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">telemetry_recording</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Telemetry::ensure_telemetry_file</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ProblemBuffer::redirect_problem_stream</span><span class="plain-syntax">(</span><span class="identifier-syntax">telmy</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_begin</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="string-syntax">"**"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"The %5-word source text has successfully been translated "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"into a world with %1 %2 and %3 %4, and the index has been "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"brought up to date."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</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">telmy</span><span class="plain-syntax">, </span><span class="string-syntax">"\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ProblemBuffer::redirect_problem_stream</span><span class="plain-syntax">(</span><span class="identifier-syntax">STDOUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">STDOUT</span><span class="plain-syntax">, </span><span class="string-syntax">"\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_begin</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="string-syntax">"**"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"The %5-word source text has successfully been translated "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"into an intermediate description which can be run through "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"Inform 6 to complete compilation. There were %1 %2 and %3 %4."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">STREAM_FLUSH</span><span class="plain-syntax">(</span><span class="identifier-syntax">STDOUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ProblemBuffer::redirect_problem_stream</span><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><a href="1-pp.html#SP1" class="function-link"><span class="function-syntax">ProgressBar::final_state_of_progress_bar</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">STATUS</span><span class="plain-syntax"> = </span><a href="1-pp.html#SP2" class="function-link"><span class="function-syntax">ProgressBar::begin_outcome</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">STATUS</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">STATUS</span><span class="plain-syntax">, </span><span class="string-syntax">"Translation succeeded: %d room%s, %d thing%s"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">rooms</span><span class="plain-syntax">, (</span><span class="identifier-syntax">rooms</span><span class="plain-syntax">==1)?</span><span class="string-syntax">""</span><span class="plain-syntax">:</span><span class="string-syntax">"s"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">things</span><span class="plain-syntax">, (</span><span class="identifier-syntax">things</span><span class="plain-syntax">==1)?</span><span class="string-syntax">""</span><span class="plain-syntax">:</span><span class="string-syntax">"s"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-pp.html#SP2" class="function-link"><span class="function-syntax">ProgressBar::end_outcome</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-up.html#SP2">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. Outcome images. </b>These are the two images used on the Problems page to visually indicate
|
||||
success or failure. We also use special images on special occasions.
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">CENTRED_OUTCOME_IMAGE_STYLE</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">SIDE_OUTCOME_IMAGE_STYLE</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">outcome_image_style</span><span class="plain-syntax"> = </span><span class="constant-syntax">SIDE_OUTCOME_IMAGE_STYLE</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b>This callback function is called just as the <a href="../problems-module/index.html" class="internal">problems</a> module is about
|
||||
to issue its first problem of the run:
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">FIRST_PROBLEMS_CALLBACK</span><span class="plain-syntax"> </span><a href="2-up.html#SP4" class="function-link"><span class="function-syntax">Problems::Using::html_outcome_failed</span></a>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::Using::html_outcome_failed</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</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">StandardProblems::internal_errors_have_occurred</span><span class="plain-syntax">())</span>
|
||||
<span class="plain-syntax"> </span><a href="2-up.html#SP4" class="function-link"><span class="function-syntax">Problems::Using::html_outcome_image</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">problems_file</span><span class="plain-syntax">, </span><span class="string-syntax">"ni_failed_badly"</span><span class="plain-syntax">, </span><span class="string-syntax">"Failed"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span>
|
||||
<span class="plain-syntax"> </span><a href="2-up.html#SP4" class="function-link"><span class="function-syntax">Problems::Using::html_outcome_image</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">problems_file</span><span class="plain-syntax">, </span><span class="string-syntax">"ni_failed"</span><span class="plain-syntax">, </span><span class="string-syntax">"Failed"</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">Problems::Using::html_outcome_image</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Problems::Using::html_outcome_image</span></span>:<br/><a href="2-up.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">image</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">verdict</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vn</span><span class="plain-syntax"> = </span><span class="string-syntax">""</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">be_festive</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">StandardProblems::internal_errors_have_occurred</span><span class="plain-syntax">() == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">be_festive</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">be_festive</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Time::feast</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">CHRISTMAS_FEAST:</span><span class="plain-syntax"> </span><span class="identifier-syntax">vn</span><span class="plain-syntax"> = </span><span class="string-syntax">"_2"</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</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">EASTER_FEAST:</span><span class="plain-syntax"> </span><span class="identifier-syntax">vn</span><span class="plain-syntax"> = </span><span class="string-syntax">"_3"</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</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">vn</span><span class="plain-syntax">[0]) </span><span class="identifier-syntax">outcome_image_style</span><span class="plain-syntax"> = </span><span class="constant-syntax">CENTRED_OUTCOME_IMAGE_STYLE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::issue_problems_banner</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">verdict</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">outcome_image_style</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">CENTRED_OUTCOME_IMAGE_STYLE:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"center"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"img"</span><span class="plain-syntax">, </span><span class="string-syntax">"src=inform:/outcome_images/%s%s.png border=0"</span><span class="plain-syntax">, </span><span class="identifier-syntax">image</span><span class="plain-syntax">, </span><span class="identifier-syntax">vn</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"center"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</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">SIDE_OUTCOME_IMAGE_STYLE:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::begin_html_table</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">4</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="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::first_html_column</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">110</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"img"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"src=inform:/outcome_images/%s%s@2x.png border=1 width=100 height=100"</span><span class="plain-syntax">, </span><span class="identifier-syntax">image</span><span class="plain-syntax">, </span><span class="identifier-syntax">vn</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::next_html_column</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</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">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::comment</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"HEADNOTE"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">, </span><span class="string-syntax">"style=\"margin-top:0;\""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"(Each time <b>Go</b> or <b>Replay</b> is clicked, Inform tries to "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"translate the source text into a working story, and updates this report.)"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::comment</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"PROBLEMS BEGIN"</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">Problems::Using::outcome_image_tail</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">Problems::Using::outcome_image_tail</span></span>:<br/><a href="2-up.html#SP2_2">§2.2</a>, <a href="2-up.html#SP2_3">§2.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</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">outcome_image_style</span><span class="plain-syntax"> == </span><span class="constant-syntax">SIDE_OUTCOME_IMAGE_STYLE</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::comment</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"PROBLEMS END"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_html_row</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_html_table</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::comment</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"FOOTNOTE"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b>This is a more elaborate form of the standard <span class="extract"><span class="extract-syntax">StandardProblems::sentence_problem</span></span>,
|
||||
used when an assertion sentence has gone wrong. Experience from the early
|
||||
builds of the Public Beta showed that many people tried syntaxes which
|
||||
Inform did not recognise, and which cause Inform to misread the primary
|
||||
verb of the sentence. It would then issue a Problem — because the sentence
|
||||
would be peculiar — but this problem report would itself be odd, and
|
||||
make little sense to the user. So we look to see if the current sentence
|
||||
is an assertion with a primary verb: and if it is, we hunt through it
|
||||
for alternative verbs which might have been intended, and try to produce
|
||||
a message which diagnoses the problem rather better.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::Using::assertion_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">SIGIL_ARGUMENTS</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">message</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">explanation</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">RTW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">; </span><span class="comment-syntax"> "rather than" text</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ACT_ON_SIGIL</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</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">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">) != </span><span class="identifier-syntax">VERB_NT</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"(Assertion error reverting to sentence error.)\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">PASS_SIGIL</span><span class="plain-syntax">, </span><span class="identifier-syntax">message</span><span class="plain-syntax">, </span><span class="identifier-syntax">explanation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"(Assertion error: looking for alternative verbs in <%W>.)\n"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">current_sentence</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">AW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wordings::trim_both_ends</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_THROUGH_WORDING</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">AW</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">i</span><span class="plain-syntax"> != </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">))) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Word::unexpectedly_upper_case</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</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">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wordings::from</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">), </span><span class="identifier-syntax">i</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">j</span><span class="plain-syntax"> = </span><span class="function-syntax"><nonimperative-verb></span><span class="plain-syntax">(</span><span class="identifier-syntax">W</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">j</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">RTW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wordings::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">j</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">message</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(3, </span><span class="identifier-syntax">explanation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_begin</span><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">explanation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span><span class="string-syntax">"You wrote %1: %Sagain, %2.%Lbut %2, %3"</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::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTW</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_wording</span><span class="plain-syntax">(4, </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_wording</span><span class="plain-syntax">(5, </span><span class="identifier-syntax">RTW</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">( </span><span class="comment-syntax"> see also PM_AmbiguousVerb</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">" %P(It may help to know that I am reading the primary verb here "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"as '%4', not '%5'.)"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><a href="2-up.html#SP5" class="function-link"><span class="function-syntax">Problems::Using::diagnose_further</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</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">Problems::Using::diagnose_further</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="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">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">))) </span><span class="reserved-syntax">return</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">sqc</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_THROUGH_WORDING</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sqc</span><span class="plain-syntax"> += </span><span class="identifier-syntax">Word::singly_quoted</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</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">sqc</span><span class="plain-syntax"> >= </span><span class="constant-syntax">2</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">" %P(I notice what look like single quotation marks in this "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"sentence. If you meant to write some quoted text, it needs to "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"be in double quotes, \"like this\" and not 'like this'.)"</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">control_structure_phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">csp</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ControlStructures::detect</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">current_sentence</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">csp</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">" %P(The way this sentence starts makes me think it might have been "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"intended as part of a rule rather than being a statement about the "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"the way things are at the beginning of play. For example, 'If the "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"player is in the Penalty Zone, say \"An alarm sounds.\" is not "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"allowed: it has to be put in the form of a rule showing Inform "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"what circumstances apply - for example 'Every turn: if the player is "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"in the Penalty Zone, say \"An alarm sounds.\")"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="1-inaa.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresscurrent">up</li><li class="progresssection"><a href="2-sq.html">sq</a></li><li class="progresssection"><a href="2-si.html">si</a></li><li class="progresssection"><a href="2-pwst.html">pwst</a></li><li class="progresssection"><a href="2-cp.html">cp</a></li><li class="progressnext"><a href="2-sq.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -75,7 +75,7 @@
|
|||
</li>
|
||||
<li>
|
||||
<p class="chapterentry"><a name="1"></a>
|
||||
<span class="chaptertitle">Chapter 1: Configuration and Control</span></p>
|
||||
<span class="chaptertitle">Chapter 1: Control</span></p>
|
||||
<p class="chapterpurpose">Managing the production line for the compilation process.</p>
|
||||
<ul class="sectionlist">
|
||||
<li>
|
||||
|
|
|
@ -141,13 +141,6 @@ which use this module:
|
|||
<span class="identifier-syntax">DECLARE_CLASS_ALLOCATED_IN_ARRAYS</span><span class="plain-syntax">(</span><span class="reserved-syntax">scene_connector</span><span class="plain-syntax">, </span><span class="constant-syntax">1000</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS_ALLOCATED_IN_ARRAYS</span><span class="plain-syntax">(</span><span class="reserved-syntax">understanding_item</span><span class="plain-syntax">, </span><span class="constant-syntax">100</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS_ALLOCATED_IN_ARRAYS</span><span class="plain-syntax">(</span><span class="reserved-syntax">understanding_reference</span><span class="plain-syntax">, </span><span class="constant-syntax">100</span><span class="plain-syntax">)</span>
|
||||
|
||||
<span class="identifier-syntax">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain-syntax">(</span><span class="identifier-syntax">action_meaning</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain-syntax">(</span><span class="identifier-syntax">constant_action_name</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_name</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain-syntax">(</span><span class="identifier-syntax">constant_action_pattern</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain-syntax">(</span><span class="identifier-syntax">constant_grammar_verb</span><span class="plain-syntax">, </span><span class="reserved-syntax">grammar_verb</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain-syntax">(</span><span class="identifier-syntax">constant_named_action_pattern</span><span class="plain-syntax">, </span><span class="reserved-syntax">named_action_pattern</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain-syntax">(</span><span class="identifier-syntax">constant_scene</span><span class="plain-syntax">, </span><span class="reserved-syntax">scene</span><span class="plain-syntax">)</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. The beginning. </b>(The client doesn't need to call the start and end routines, because the
|
||||
foundation module does that automatically.)
|
||||
|
@ -225,6 +218,13 @@ foundation module does that automatically.)
|
|||
syntax tree.
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">action_meaning_ANNOT</span><span class="plain-syntax"> </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">action_pattern</span></span><span class="comment-syntax">: meaning in parse tree when used as noun</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">constant_action_name_ANNOT</span><span class="plain-syntax"> </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">action_name</span></span><span class="comment-syntax">: for constant values</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">constant_action_pattern_ANNOT</span><span class="plain-syntax"> </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">action_pattern</span></span><span class="comment-syntax">: for constant values</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">constant_grammar_verb_ANNOT</span><span class="plain-syntax"> </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">grammar_verb</span></span><span class="comment-syntax">: for constant values</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">constant_named_action_pattern_ANNOT</span><span class="plain-syntax"> </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">named_action_pattern</span></span><span class="comment-syntax">: for constant values</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">constant_scene_ANNOT</span><span class="plain-syntax"> </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">scene</span></span><span class="comment-syntax">: for constant values</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain-syntax">(</span><span class="identifier-syntax">action_meaning</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain-syntax">(</span><span class="identifier-syntax">constant_action_name</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_name</span><span class="plain-syntax">)</span>
|
||||
|
@ -235,13 +235,57 @@ syntax tree.
|
|||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain-syntax">(</span><span class="identifier-syntax">action_meaning</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain-syntax">(</span><span class="identifier-syntax">constant_action_name</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_name</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain-syntax">(</span><span class="identifier-syntax">constant_action_pattern</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain-syntax">(</span><span class="identifier-syntax">constant_grammar_verb</span><span class="plain-syntax">, </span><span class="reserved-syntax">grammar_verb</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain-syntax">(</span><span class="identifier-syntax">constant_named_action_pattern</span><span class="plain-syntax">, </span><span class="reserved-syntax">named_action_pattern</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain-syntax">(</span><span class="identifier-syntax">constant_scene</span><span class="plain-syntax">, </span><span class="reserved-syntax">scene</span><span class="plain-syntax">)</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">IFModule::declare_annotations</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::declare_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">constant_action_name_ANNOT</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">Annotations::declare_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">constant_action_pattern_ANNOT</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">Annotations::declare_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">constant_grammar_verb_ANNOT</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">Annotations::declare_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">constant_named_action_pattern_ANNOT</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">Annotations::declare_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">constant_scene_ANNOT</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">Annotations::declare_type</span><span class="plain-syntax">(</span><span class="constant-syntax">action_meaning_ANNOT</span><span class="plain-syntax">, </span><a href="1-im.html#SP6" class="function-link"><span class="function-syntax">IFModule::write_action_meaning_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="constant-syntax">constant_action_name_ANNOT</span><span class="plain-syntax">, </span><a href="1-im.html#SP6" class="function-link"><span class="function-syntax">IFModule::write_constant_action_name_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="constant-syntax">constant_action_pattern_ANNOT</span><span class="plain-syntax">, </span><a href="1-im.html#SP6" class="function-link"><span class="function-syntax">IFModule::write_constant_action_pattern_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="constant-syntax">constant_grammar_verb_ANNOT</span><span class="plain-syntax">, </span><a href="1-im.html#SP6" class="function-link"><span class="function-syntax">IFModule::write_constant_grammar_verb_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="constant-syntax">constant_named_action_pattern_ANNOT</span><span class="plain-syntax">, </span><a href="1-im.html#SP6" class="function-link"><span class="function-syntax">IFModule::write_constant_named_action_pattern_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="constant-syntax">constant_scene_ANNOT</span><span class="plain-syntax">, </span><a href="1-im.html#SP6" class="function-link"><span class="function-syntax">IFModule::write_constant_scene_ANNOT</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">IFModule::write_action_meaning_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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_action_meaning</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" {action meaning: "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-ap.html#SP4" class="function-link"><span class="function-syntax">PL::Actions::Patterns::write</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Node::get_action_meaning</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">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">IFModule::write_constant_action_name_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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_constant_action_name</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" {action name: %W}"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Node::get_constant_action_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">)-></span><span class="element-syntax">present_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">IFModule::write_constant_action_pattern_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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_constant_action_pattern</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" {action pattern: "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-ap.html#SP4" class="function-link"><span class="function-syntax">PL::Actions::Patterns::write</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Node::get_constant_action_pattern</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">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">IFModule::write_constant_grammar_verb_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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_constant_grammar_verb</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" {grammar verb: GV%d}"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Node::get_constant_grammar_verb</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">)-></span><span class="identifier-syntax">allocation_id</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">IFModule::write_constant_named_action_pattern_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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_constant_named_action_pattern</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" {named action pattern: "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Nouns::write</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Node::get_constant_named_action_pattern</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">)-></span><span class="element-syntax">name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"}"</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">IFModule::write_constant_scene_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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_constant_scene</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" {scene: %I}"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Node::get_constant_scene</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">)-></span><span class="element-syntax">as_instance</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
|
|
|
@ -127,7 +127,7 @@ values inherited by sub-objects.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">numeric_value</span><span class="plain-syntax">; </span><span class="comment-syntax"> or numeric value, if appropriate to this type</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">plotting_parameter</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure plotting_parameter is accessed in 2/bd, 3/tnt, 3/sm, 3/tp, 3/bck, 3/rgn, 3/tm, 3/sc, 3/scn, 4/act, 4/anl, 4/nap, 5/gp, 5/gv, 5/gpr and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure plotting_parameter is accessed in 1/im, 2/bd, 3/tnt, 3/sm, 3/tp, 3/bck, 3/rgn, 3/tm, 3/sc, 3/scn, 4/act, 4/anl, 4/nap, 5/gp, 5/gv, 5/gpr and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>A set of variables associated with any map object is called a "scope".
|
||||
As implied above, the global scope is special: it contains the default
|
||||
settings passed down to all lower scopes.
|
||||
|
|
|
@ -110,7 +110,7 @@ scenes — to express which, the <span class="extract"><span class="extract-
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">scene</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure scene_connector is accessed in 2/ri, 3/mcr, 3/em, 3/tm2, 3/ts, 4/act, 4/anl, 4/ap, 4/nap, 5/tfg, 5/gl and here.</li><li>The structure scene is accessed in 3/tm2 and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure scene_connector is accessed in 2/ri, 3/mcr, 3/em, 3/tm2, 3/ts, 4/act, 4/anl, 4/ap, 4/nap, 5/tfg, 5/gl and here.</li><li>The structure scene is accessed in 1/im, 3/tm2 and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>The following either/or property needs some compiler support:
|
||||
</p>
|
||||
|
||||
|
|
|
@ -138,7 +138,7 @@ and maximum below are always equal.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">action_name</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure action_name is accessed in 2/bd, 3/tnt, 3/sm, 3/tp, 3/bck, 3/rgn, 3/tm, 3/em, 3/sc, 3/scn, 4/anl, 4/nap, 4/ai, 5/gp, 5/gv, 5/gl, 5/gpr and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure action_name is accessed in 1/im, 2/bd, 3/tnt, 3/sm, 3/tp, 3/bck, 3/rgn, 3/tm, 3/em, 3/sc, 3/scn, 4/anl, 4/nap, 4/ai, 5/gp, 5/gv, 5/gl, 5/gpr and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
|
|
@ -327,20 +327,44 @@ STV clauses; (2) get this right:
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Actions::Patterns::ap_store</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::ap_store</span></span>:<br/><a href="4-ap.html#SP21_1">§21.1</a>, <a href="4-ap.html#SP22">§22</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Actions::Patterns::write</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::write</span></span>:<br/>IF Module - <a href="1-im.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</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">ap</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<null-ap>"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">valid</span><span class="plain-syntax"> != </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<invalid>"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<action: "</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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">action</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"unspecified"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><a href="4-anl.html#SP2" class="function-link"><span class="function-syntax">PL::Actions::Lists::log_briefly</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">action</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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">noun_spec</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" noun: %P"</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">noun_spec</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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">second_spec</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" second: %P"</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">second_spec</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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">from_spec</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" from: %P"</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">from_spec</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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">to_spec</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" to: %P"</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">to_spec</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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">by_spec</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" by: %P"</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">by_spec</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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">through_spec</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" through: %P"</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">through_spec</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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">pushing_spec</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" pushing: %P"</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">pushing_spec</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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">room_spec</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" room: %P"</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">room_spec</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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">parameter_spec</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" parameter: %P"</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">parameter_spec</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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">presence_spec</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" presence: %P"</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">presence_spec</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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">nowhere_flag</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" nowhere"</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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">when</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" when: %P"</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">when</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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">duration</span><span class="plain-syntax">) { </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" duration: "</span><span class="plain-syntax">); </span><span class="identifier-syntax">Occurrence::log</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">duration</span><span class="plain-syntax">); }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">">"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Actions::Patterns::ap_store</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::ap_store</span></span>:<br/><a href="4-ap.html#SP21_1">§21.1</a>, <a href="4-ap.html#SP22">§22</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sap</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> *</span><span class="identifier-syntax">sap</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ap</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">sap</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Actions::Patterns::is_named</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::is_named</span></span>:<br/><a href="4-ap.html#SP26">§26</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Actions::Patterns::is_named</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::is_named</span></span>:<br/><a href="4-ap.html#SP26">§26</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</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">ap</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">action</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">action</span><span class="plain-syntax">-></span><span class="element-syntax">nap_listed</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Actions::Patterns::is_valid</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::is_valid</span></span>:<br/><a href="4-ap.html#SP22">§22</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Actions::Patterns::is_valid</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::is_valid</span></span>:<br/><a href="4-ap.html#SP22">§22</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</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">ap</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">valid</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -350,7 +374,7 @@ STV clauses; (2) get this right:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">request</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Actions::Patterns::within_action_context</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::within_action_context</span></span>:<br/>Named Action Patterns - <a href="4-nap.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Actions::Patterns::within_action_context</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::within_action_context</span></span>:<br/>Named Action Patterns - <a href="4-nap.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">anl</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">ap</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">action</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
|
@ -363,7 +387,7 @@ STV clauses; (2) get this right:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Actions::Patterns::list</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::list</span></span>:<br/>Action Name Lists - <a href="4-anl.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Actions::Patterns::list</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::list</span></span>:<br/>Action Name Lists - <a href="4-anl.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</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">ap</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">action</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -439,13 +463,13 @@ an action.
|
|||
<span class="plain-syntax"> </span><a href="4-nap.html#SP2" class="function-link"><span class="function-syntax">PL::Actions::Patterns::Named::add</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</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">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Actions::Patterns::nullify_nonspecific_references</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::nullify_nonspecific_references</span></span>:<br/><a href="4-ap.html#SP25_1">§25.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Actions::Patterns::nullify_nonspecific_references</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::nullify_nonspecific_references</span></span>:<br/><a href="4-ap.html#SP25_1">§25.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</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">spec</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">spec</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">Node::is</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">UNKNOWN_NT</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">spec</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Actions::Patterns::check_going</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::check_going</span></span>:<br/>The Map - <a href="3-tm.html#SP32">§32</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">keyword</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Actions::Patterns::check_going</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::check_going</span></span>:<br/>The Map - <a href="3-tm.html#SP32">§32</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">keyword</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ka</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kb</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">spec</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">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">Specifications::is_description_like</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">)) {</span>
|
||||
|
@ -499,12 +523,12 @@ form the usage conditions for rules in object-based rulebooks.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Actions::Patterns::parse_action_parameter</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::parse_action_parameter</span></span>:<br/><a href="4-ap.html#SP6">§6</a></span></button><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">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Actions::Patterns::parse_action_parameter</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::parse_action_parameter</span></span>:<br/><a href="4-ap.html#SP6">§6</a></span></button><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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><action-parameter></span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="function-syntax"><<rp>></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">Specifications::new_UNKNOWN</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">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Actions::Patterns::parse_verified_action_parameter</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::parse_verified_action_parameter</span></span>:<br/><a href="4-ap.html#SP25_3">§25.3</a></span></button><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">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Actions::Patterns::parse_verified_action_parameter</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::parse_verified_action_parameter</span></span>:<br/><a href="4-ap.html#SP25_3">§25.3</a></span></button><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">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><a href="4-ap.html#SP7" class="function-link"><span class="function-syntax">PL::Actions::Patterns::parse_action_parameter</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</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">Node::is</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">UNKNOWN_NT</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
|
||||
|
@ -713,13 +737,13 @@ would match as an abbreviated form of the name of "angry waiting man".
|
|||
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>§14. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Actions::Patterns::suppress</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::suppress</span></span>:<br/><a href="4-ap.html#SP13">§13</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Actions::Patterns::suppress</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::suppress</span></span>:<br/><a href="4-ap.html#SP13">§13</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">old_state</span><span class="plain-syntax"> = </span><span class="identifier-syntax">suppress_ap_parsing</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">suppress_ap_parsing</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">old_state</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">PL::Actions::Patterns::resume</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::resume</span></span>:<br/><a href="4-ap.html#SP13">§13</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">old_state</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Actions::Patterns::resume</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::resume</span></span>:<br/><a href="4-ap.html#SP13">§13</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">old_state</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">suppress_ap_parsing</span><span class="plain-syntax"> = </span><span class="identifier-syntax">old_state</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
|
@ -784,7 +808,7 @@ possibility for confusion is too great; perhaps we should just cut this idea.
|
|||
<p class="commentary firstcommentary"><a id="SP17" class="paragraph-anchor"></a><b>§17. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Actions::Patterns::ap_parse_inner</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::ap_parse_inner</span></span>:<br/><a href="4-ap.html#SP15">§15</a></span></button><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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">tense</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Actions::Patterns::ap_parse_inner</span><button class="popup" onclick="togglePopup('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::ap_parse_inner</span></span>:<br/><a href="4-ap.html#SP15">§15</a></span></button><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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">tense</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">OPENBRACE_V</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">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="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"PAP on illegal word range"</span><span class="plain-syntax">);</span>
|
||||
|
@ -979,7 +1003,7 @@ here — a constant, a description, a table entry, a variable, and so on.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Actions::Patterns::parse_action_pattern_dash</span><button class="popup" onclick="togglePopup('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::parse_action_pattern_dash</span></span>:<br/><a href="4-ap.html#SP22">§22</a></span></button><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="reserved-syntax">action_pattern</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Actions::Patterns::parse_action_pattern_dash</span><button class="popup" onclick="togglePopup('usagePopup19')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup19">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::parse_action_pattern_dash</span></span>:<br/><a href="4-ap.html#SP22">§22</a></span></button><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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">failure_this_call</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pap_failure_reason</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">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">j</span><span class="plain-syntax">, </span><span class="identifier-syntax">k</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">action_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">anl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
|
@ -1555,7 +1579,7 @@ into action patterns in the noun or second noun position.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Actions::Patterns::put_action_object_into_ap</span><button class="popup" onclick="togglePopup('usagePopup19')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup19">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::put_action_object_into_ap</span></span>:<br/><a href="4-ap.html#SP25_5_4">§25.5.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">pos</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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Actions::Patterns::put_action_object_into_ap</span><button class="popup" onclick="togglePopup('usagePopup20')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup20">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::put_action_object_into_ap</span></span>:<br/><a href="4-ap.html#SP25_5_4">§25.5.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">pos</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">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</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">any_flag</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="function-syntax"><action-operand></span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) {</span>
|
||||
|
@ -1577,7 +1601,7 @@ into action patterns in the noun or second noun position.
|
|||
<p class="commentary firstcommentary"><a id="SP28" class="paragraph-anchor"></a><b>§28. Compiling action tries. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Actions::Patterns::emit_try</span><button class="popup" onclick="togglePopup('usagePopup20')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup20">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::emit_try</span></span>:<br/>Actions - <a href="4-act.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">store_instead</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Actions::Patterns::emit_try</span><button class="popup" onclick="togglePopup('usagePopup21')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup21">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::emit_try</span></span>:<br/>Actions - <a href="4-act.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">store_instead</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec0</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">noun_spec</span><span class="plain-syntax">; </span><span class="comment-syntax"> the noun</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">second_spec</span><span class="plain-syntax">; </span><span class="comment-syntax"> the second noun</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">actor_spec</span><span class="plain-syntax">; </span><span class="comment-syntax"> the actor</span>
|
||||
|
@ -1625,7 +1649,7 @@ text when the action expects that.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Actions::Patterns::emit_try_action_parameter</span><button class="popup" onclick="togglePopup('usagePopup21')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup21">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::emit_try_action_parameter</span></span>:<br/><a href="4-ap.html#SP28">§28</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">required_kind</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Actions::Patterns::emit_try_action_parameter</span><button class="popup" onclick="togglePopup('usagePopup22')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup22">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::emit_try_action_parameter</span></span>:<br/><a href="4-ap.html#SP28">§28</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">required_kind</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_understanding</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">required_kind</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_understanding</span><span class="plain-syntax">))) {</span>
|
||||
<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">Specifications::to_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</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::compatible</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_understanding</span><span class="plain-syntax">)) ||</span>
|
||||
|
@ -1676,7 +1700,7 @@ exceptional case where the clause doesn't act on a single I6 global,
|
|||
and in this case we therefore ignore <span class="extract"><span class="extract-syntax">I6_global_name</span></span>.
|
||||
</li></ul>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Actions::Patterns::compile_pattern_match_clause</span><button class="popup" onclick="togglePopup('usagePopup22')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup22">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::compile_pattern_match_clause</span></span>:<br/><a href="4-ap.html#SP33_1_1_1">§33.1.1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">f</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Actions::Patterns::compile_pattern_match_clause</span><button class="popup" onclick="togglePopup('usagePopup23')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup23">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::compile_pattern_match_clause</span></span>:<br/><a href="4-ap.html#SP33_1_1_1">§33.1.1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">f</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">value_holster</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I6_global_variable</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">verify_as_kind</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">adapt_region</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">spec</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">f</span><span class="plain-syntax">;</span>
|
||||
|
@ -1692,7 +1716,7 @@ and in this case we therefore ignore <span class="extract"><span class="extract-
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">I6_var_TS</span><span class="plain-syntax">, </span><span class="identifier-syntax">is_parameter</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">verify_as_kind</span><span class="plain-syntax">, </span><span class="identifier-syntax">adapt_region</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Actions::Patterns::compile_pattern_match_clause_inner</span><button class="popup" onclick="togglePopup('usagePopup23')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup23">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::compile_pattern_match_clause_inner</span></span>:<br/>Looping Over Scope - <a href="4-los.html#SP2_1">§2.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">f</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Actions::Patterns::compile_pattern_match_clause_inner</span><button class="popup" onclick="togglePopup('usagePopup24')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup24">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::compile_pattern_match_clause_inner</span></span>:<br/>Looping Over Scope - <a href="4-los.html#SP2_1">§2.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">f</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">value_holster</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I6_var_TS</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">is_parameter</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">verify_as_kind</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">adapt_region</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">force_proposition</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
|
@ -1851,7 +1875,7 @@ and in this case we therefore ignore <span class="extract"><span class="extract-
|
|||
<p class="commentary firstcommentary"><a id="SP32" class="paragraph-anchor"></a><b>§32. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Actions::Patterns::as_stored_action</span><button class="popup" onclick="togglePopup('usagePopup24')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup24">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::as_stored_action</span></span>:<br/>Actions - <a href="4-act.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">value_holster</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Actions::Patterns::as_stored_action</span><button class="popup" onclick="togglePopup('usagePopup25')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup25">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::as_stored_action</span></span>:<br/>Actions - <a href="4-act.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">value_holster</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</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">PR</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Hierarchy::package_in_enclosure</span><span class="plain-syntax">(</span><span class="identifier-syntax">BLOCK_CONSTANTS_HAP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Hierarchy::make_iname_in</span><span class="plain-syntax">(</span><span class="identifier-syntax">BLOCK_CONSTANT_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">PR</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Emit::named_late_array_begin</span><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">);</span>
|
||||
|
@ -1891,7 +1915,7 @@ and in this case we therefore ignore <span class="extract"><span class="extract-
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">) </span><span class="identifier-syntax">Emit::holster</span><span class="plain-syntax">(</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Actions::Patterns::emit_pattern_match</span><button class="popup" onclick="togglePopup('usagePopup25')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup25">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::emit_pattern_match</span></span>:<br/>Named Action Patterns - <a href="4-nap.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">naming_mode</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Actions::Patterns::emit_pattern_match</span><button class="popup" onclick="togglePopup('usagePopup26')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup26">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::emit_pattern_match</span></span>:<br/>Named Action Patterns - <a href="4-nap.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">naming_mode</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">value_holster</span><span class="plain-syntax"> </span><span class="identifier-syntax">VH</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Holsters::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">INTER_VAL_VHMODE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-ap.html#SP33" class="function-link"><span class="function-syntax">PL::Actions::Patterns::compile_pattern_match</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">naming_mode</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -1935,7 +1959,7 @@ and in this case we therefore ignore <span class="extract"><span class="extract-
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Actions::Patterns::compile_pattern_match</span><button class="popup" onclick="togglePopup('usagePopup26')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup26">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::compile_pattern_match</span></span>:<br/><a href="4-ap.html#SP32">§32</a><br/>Actions - <a href="4-act.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">value_holster</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">naming_mode</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Actions::Patterns::compile_pattern_match</span><button class="popup" onclick="togglePopup('usagePopup27')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup27">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::compile_pattern_match</span></span>:<br/><a href="4-ap.html#SP32">§32</a><br/>Actions - <a href="4-act.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">value_holster</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">naming_mode</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">cpm_count</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">needed</span><span class="plain-syntax">[</span><span class="constant-syntax">MAX_CPM_CLAUSES</span><span class="plain-syntax">];</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">ap_optional_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">needed_apoc</span><span class="plain-syntax">[</span><span class="constant-syntax">MAX_CPM_CLAUSES</span><span class="plain-syntax">];</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">ACTION_PATTERN_COMPILATION</span><span class="plain-syntax">, </span><span class="string-syntax">"Compiling action pattern:\n $A"</span><span class="plain-syntax">, &</span><span class="identifier-syntax">ap</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -85,7 +85,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">named_action_pattern</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure named_action_pattern is accessed in 2/bd, 3/tnt, 3/sm, 3/tp, 3/bck, 3/rgn, 3/tm, 3/em, 3/sc, 3/scn, 4/act, 4/anl, 5/gp, 5/gv, 5/gpr and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure named_action_pattern is accessed in 1/im, 2/bd, 3/tnt, 3/sm, 3/tp, 3/bck, 3/rgn, 3/tm, 3/em, 3/sc, 3/scn, 4/act, 4/anl, 5/gp, 5/gv, 5/gpr and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
|
|
@ -126,7 +126,7 @@ of these is associated with a genuine typed-by-the-player command verb:
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">grammar_verb</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure grammar_verb is accessed in 2/bd, 3/tnt, 3/sm, 3/tp, 3/bck, 3/rgn, 3/tm, 3/em, 3/sc, 3/scn, 4/act, 4/anl, 4/nap, 5/gp, 5/gpr and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure grammar_verb is accessed in 1/im, 2/bd, 3/tnt, 3/sm, 3/tp, 3/bck, 3/rgn, 3/tm, 3/em, 3/sc, 3/scn, 4/act, 4/anl, 4/nap, 5/gp, 5/gpr and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>A few imperative verbs are reserved for Inform testing, such as SHOWME.
|
||||
We record those as instances of the following:
|
||||
</p>
|
||||
|
|
|
@ -206,6 +206,12 @@ syntax tree.
|
|||
<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="definition-keyword">define</span> <span class="constant-syntax">STILL_MORE_ANNOTATION_PERMISSIONS_SYNTAX_CALLBACK</span><span class="plain-syntax"> </span><a href="1-sm.html#SP4" class="function-link"><span class="function-syntax">SupervisorModule::grant_annotation_permissions</span></a>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">SupervisorModule::grant_annotation_permissions</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow</span><span class="plain-syntax">(</span><span class="identifier-syntax">HEADING_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">embodying_heading_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="identifier-syntax">HEADING_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">inclusion_of_extension_ANNOT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="P-wtmd.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresscurrentchapter">1</li><li class="progresscurrent">sm</li><li class="progresssection"><a href="1-ic.html">ic</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="1-ic.html">❯</a></li></ul></div>
|
||||
|
|
|
@ -94,6 +94,7 @@ all we need do is set up some debugging log facilities.
|
|||
<span class="plain-syntax"> </span><a href="2-nt.html#SP4" class="function-link"><span class="function-syntax">NodeType::make_parentage_allowed_table</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-nt.html#SP12" class="function-link"><span class="function-syntax">NodeType::metadata_setup</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-na.html#SP13" class="function-link"><span class="function-syntax">Annotations::make_annotation_allowed_table</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Writers::register_writer</span><span class="plain-syntax">(</span><span class="character-syntax">'P'</span><span class="plain-syntax">, </span><a href="2-pn.html#SP18" class="function-link"><span class="function-syntax">Node::write_node</span></a><span class="plain-syntax">); </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">%P</span></span><span class="comment-syntax"> = write individual parse node</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Writers::register_logger</span><span class="plain-syntax">(</span><span class="character-syntax">'m'</span><span class="plain-syntax">, </span><a href="2-pn.html#SP16" class="function-link"><span class="function-syntax">Node::log_tree</span></a><span class="plain-syntax">); </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">$m</span></span><span class="comment-syntax"> = log syntax tree from node</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Writers::register_logger_I</span><span class="plain-syntax">(</span><span class="character-syntax">'N'</span><span class="plain-syntax">, </span><a href="2-nt.html#SP8" class="function-link"><span class="function-syntax">NodeType::log</span></a><span class="plain-syntax">); </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">$N</span></span><span class="comment-syntax"> = log individual node type</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Writers::register_logger</span><span class="plain-syntax">(</span><span class="character-syntax">'P'</span><span class="plain-syntax">, </span><a href="2-pn.html#SP18" class="function-link"><span class="function-syntax">Node::log_node</span></a><span class="plain-syntax">); </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">$P</span></span><span class="comment-syntax"> = log individual parse node</span>
|
||||
|
|
|
@ -137,6 +137,7 @@ these must be declared before use.
|
|||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Annotations::declare_type</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">Annotations::declare_type</span></span>:<br/><a href="2-na.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="reserved-syntax">void</span><span class="plain-syntax"> (*</span><span class="identifier-syntax">f</span><span class="plain-syntax">)(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *, </span><span class="reserved-syntax">parse_node</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">id</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">id</span><span class="plain-syntax"> >= </span><span class="constant-syntax">MAX_ANNOT_NUMBER</span><span class="plain-syntax">)) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"annot out of range"</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">f</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"no logging function"</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">known_annotation_types_started</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">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">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax"><</span><span class="constant-syntax">MAX_ANNOT_NUMBER</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) </span><span class="identifier-syntax">known_annotation_types</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">known_annotation_types_started</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
|
@ -339,6 +340,8 @@ node will throw an internal error — it must mean a bug in Inform.
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Annotations::make_annotation_allowed_table</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">Annotations::make_annotation_allowed_table</span></span>:<br/>Syntax Module - <a href="1-sm.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-na.html#SP14" class="function-link"><span class="function-syntax">Annotations::allow</span></a><span class="plain-syntax">(</span><span class="constant-syntax">HEADING_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">heading_level_ANNOT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-na.html#SP14" class="function-link"><span class="function-syntax">Annotations::allow</span></a><span class="plain-syntax">(</span><span class="constant-syntax">HEADING_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">suppress_heading_dependencies_ANNOT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-na.html#SP14" class="function-link"><span class="function-syntax">Annotations::allow</span></a><span class="plain-syntax">(</span><span class="constant-syntax">HEADING_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">implied_heading_ANNOT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-na.html#SP14" class="function-link"><span class="function-syntax">Annotations::allow</span></a><span class="plain-syntax">(</span><span class="constant-syntax">SENTENCE_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">language_element_ANNOT</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">ANNOTATION_PERMISSIONS_SYNTAX_CALLBACK</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ANNOTATION_PERMISSIONS_SYNTAX_CALLBACK</span><span class="plain-syntax">();</span>
|
||||
|
@ -349,6 +352,9 @@ node will throw an internal error — it must mean a bug in Inform.
|
|||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">EVEN_MORE_ANNOTATION_PERMISSIONS_SYNTAX_CALLBACK</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">EVEN_MORE_ANNOTATION_PERMISSIONS_SYNTAX_CALLBACK</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">STILL_MORE_ANNOTATION_PERMISSIONS_SYNTAX_CALLBACK</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">STILL_MORE_ANNOTATION_PERMISSIONS_SYNTAX_CALLBACK</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>§14. </b>The <span class="extract"><span class="extract-syntax">ANNOTATION_PERMISSIONS_SYNTAX_CALLBACK</span></span> function, if it exists, is
|
||||
|
|
|
@ -450,6 +450,9 @@ text in the debugging log.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">pn</span><span class="plain-syntax">-></span><span class="element-syntax">next_alternative</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">a</span><span class="plain-syntax"><9)) </span><span class="identifier-syntax">a</span><span class="plain-syntax">++, </span><span class="identifier-syntax">pn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pn</span><span class="plain-syntax">-></span><span class="element-syntax">next_alternative</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">a</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"/%d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">a</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Node::write_node</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">Node::write_node</span></span>:<br/>Syntax Module - <a href="1-sm.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">format_string</span><span class="plain-syntax">, </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vpn</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pn.html#SP18" class="function-link"><span class="function-syntax">Node::log_node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">vpn</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-nt.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-st.html">st</a></li><li class="progresssection"><a href="2-nt.html">nt</a></li><li class="progresscurrent">pn</li><li class="progresssection"><a href="2-na.html">na</a></li><li class="progresssection"><a href="2-tv.html">tv</a></li><li class="progresschapter"><a href="3-snt.html">3</a></li><li class="progressnext"><a href="2-na.html">❯</a></li></ul></div>
|
||||
|
|
|
@ -126,3 +126,11 @@ void SupervisorModule::write_inclusion_of_extension_ANNOT(text_stream *OUT, pars
|
|||
WRITE(" }");
|
||||
}
|
||||
}
|
||||
|
||||
@d STILL_MORE_ANNOTATION_PERMISSIONS_SYNTAX_CALLBACK SupervisorModule::grant_annotation_permissions
|
||||
|
||||
=
|
||||
void SupervisorModule::grant_annotation_permissions(void) {
|
||||
Annotations::allow(HEADING_NT, embodying_heading_ANNOT);
|
||||
Annotations::allow(HEADING_NT, inclusion_of_extension_ANNOT);
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,6 +1,6 @@
|
|||
Total memory consumption was 256343K = 250 MB
|
||||
Total memory consumption was 256345K = 250 MB
|
||||
|
||||
62.4% was used for 1338289 objects, in 273492 frames in 200 x 800K = 160000K = 156 MB:
|
||||
62.4% was used for 1338290 objects, in 273493 frames in 200 x 800K = 160000K = 156 MB:
|
||||
|
||||
9.8% inter_tree_node_array 36 x 8192 = 294912 objects, 25953408 bytes
|
||||
5.5% text_stream_array 2567 x 100 = 256700 objects, 14457344 bytes
|
||||
|
@ -26,7 +26,7 @@ Total memory consumption was 256343K = 250 MB
|
|||
0.3% individual_form 2560 objects, 860160 bytes
|
||||
0.3% inter_symbols_table 13204 objects, 845056 bytes
|
||||
0.3% inter_schema_node 8692 objects, 834432 bytes
|
||||
0.2% dictionary 16347 objects, 784656 bytes
|
||||
0.2% dictionary 16348 objects, 784704 bytes
|
||||
0.2% dict_entry_array 233 x 100 = 23300 objects, 753056 bytes
|
||||
0.2% package_request 7931 objects, 697928 bytes
|
||||
0.2% unary_predicate_array 16 x 1000 = 16000 objects, 640512 bytes
|
||||
|
@ -215,8 +215,8 @@ Total memory consumption was 256343K = 250 MB
|
|||
|
||||
37.5% was used for memory not allocated for objects:
|
||||
|
||||
15.9% text stream storage 41840236 bytes in 263021 claims
|
||||
3.5% dictionary storage 9265664 bytes in 16347 claims
|
||||
15.9% text stream storage 41841692 bytes in 263036 claims
|
||||
3.5% dictionary storage 9266176 bytes in 16348 claims
|
||||
---- sorting 1048 bytes in 3 claims
|
||||
2.7% source text 7200000 bytes in 3 claims
|
||||
4.1% source text details 10800000 bytes in 2 claims
|
||||
|
@ -232,5 +232,5 @@ Total memory consumption was 256343K = 250 MB
|
|||
---- emitter array storage 14368 bytes in 8 claims
|
||||
---- code generation workspace for objects 9200 bytes in 9 claims
|
||||
|
||||
20.0% was overhead - 52560608 bytes = 51328K = 50 MB
|
||||
20.0% was overhead - 52560560 bytes = 51328K = 50 MB
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,27 +1,27 @@
|
|||
100.0% in inform7 run
|
||||
66.7% in compilation to Inter
|
||||
25.5% in //Phrases::Manager::compile_first_block//
|
||||
8.7% in //Phrases::Manager::compile_as_needed//
|
||||
6.9% in //Strings::compile_responses//
|
||||
6.4% in //World::Compile::compile//
|
||||
66.9% in compilation to Inter
|
||||
25.4% in //Phrases::Manager::compile_first_block//
|
||||
9.2% in //Phrases::Manager::compile_as_needed//
|
||||
7.1% in //Strings::compile_responses//
|
||||
6.2% in //World::Compile::compile//
|
||||
3.7% in //MajorNodes::pre_pass//
|
||||
3.3% in //MajorNodes::pass_1//
|
||||
1.9% in //Phrases::Manager::RulePrintingRule_routine//
|
||||
1.9% in //Phrases::Manager::rulebooks_array//
|
||||
1.0% in //RTVerbs::ConjugateVerb//
|
||||
0.8% in //Phrases::Manager::traverse//
|
||||
0.5% in //Phrases::Manager::compile_rulebooks//
|
||||
0.5% in //Phrases::Manager::parse_rule_parameters//
|
||||
0.5% in //World::complete//
|
||||
0.3% in //MajorNodes::pass_2//
|
||||
0.3% in //Phrases::Manager::compile_rulebooks//
|
||||
0.3% in //RTRelations::compile_defined_relations//
|
||||
0.1% in //Kinds::RunTime::compile_data_type_support_routines//
|
||||
0.1% in //PL::Parsing::Verbs::compile_all//
|
||||
0.1% in //Task::make_built_in_kind_constructors//
|
||||
3.4% not specifically accounted for
|
||||
30.8% in running Inter pipeline
|
||||
9.8% in inter step 2/12: link
|
||||
9.8% in step preparation
|
||||
3.1% not specifically accounted for
|
||||
30.6% in running Inter pipeline
|
||||
9.7% in inter step 2/12: link
|
||||
9.7% in step preparation
|
||||
7.1% in inter step 12/12: generate inform6 -> auto.inf
|
||||
0.3% in inter step 9/12: make-identifiers-unique
|
||||
0.1% in inter step 10/12: reconcile-verbs
|
||||
|
@ -31,6 +31,6 @@
|
|||
0.1% in inter step 6/12: assimilate
|
||||
0.1% in inter step 7/12: resolve-external-symbols
|
||||
0.1% in inter step 8/12: inspect-plugs
|
||||
2.5% not specifically accounted for
|
||||
2.4% not specifically accounted for
|
||||
2.1% in supervisor
|
||||
0.2% not specifically accounted for
|
||||
0.4% not specifically accounted for
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
Classification:
|
||||
SENTENCE_NT'jane is a woman'
|
||||
SENTENCE_NT'jane is a woman' {classified}
|
||||
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
|
||||
UNPARSED_NOUN_NT'jane'
|
||||
UNPARSED_NOUN_NT'woman' {indefinite 'a' n/m/f nom/acc s}
|
||||
Refined:
|
||||
CREATED_NT'jane'
|
||||
COMMON_NOUN_NT'woman' {indefinite 'a' n/m/f nom/acc s} {creation: << woman(x) >>} {eval: TEST_VALUE_NT}
|
||||
CREATED_NT'jane' {refined}
|
||||
COMMON_NOUN_NT'woman' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'woman'} {creation: << woman(x) >>} {eval: TEST_VALUE_NT}
|
||||
After creation:
|
||||
SENTENCE_NT'jane is a woman'
|
||||
SENTENCE_NT'jane is a woman' {classified}
|
||||
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
|
||||
PROPER_NOUN_NT'jane' {eval: CONSTANT_NT'jane' {kind: object} {instance: 'jane'}} {created here}
|
||||
COMMON_NOUN_NT'woman' {indefinite 'a' n/m/f nom/acc s} {creation: << woman(x) >>} {eval: TEST_VALUE_NT}
|
||||
PROPER_NOUN_NT'jane' {refined} {refers: infs'jane'} {eval: CONSTANT_NT'jane' {kind: object} {instance: 'jane'} {enumeration ...}} {created here}
|
||||
COMMON_NOUN_NT'woman' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'woman'} {creation: << woman(x) >>} {eval: TEST_VALUE_NT}
|
||||
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
Classification:
|
||||
SENTENCE_NT'jane is a woman'
|
||||
SENTENCE_NT'jane is a woman' {classified}
|
||||
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
|
||||
UNPARSED_NOUN_NT'jane'
|
||||
UNPARSED_NOUN_NT'woman' {indefinite 'a' n/m/f nom/acc s}
|
||||
Refined:
|
||||
CREATED_NT'jane'
|
||||
COMMON_NOUN_NT'woman' {indefinite 'a' n/m/f nom/acc s} {creation: << woman(x) >>} {eval: TEST_VALUE_NT}
|
||||
CREATED_NT'jane' {refined}
|
||||
COMMON_NOUN_NT'woman' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'woman'} {creation: << woman(x) >>} {eval: TEST_VALUE_NT}
|
||||
After creation:
|
||||
SENTENCE_NT'jane is a woman'
|
||||
SENTENCE_NT'jane is a woman' {classified}
|
||||
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
|
||||
PROPER_NOUN_NT'jane' {eval: CONSTANT_NT'jane' {kind: object} {instance: 'jane'}} {created here}
|
||||
COMMON_NOUN_NT'woman' {indefinite 'a' n/m/f nom/acc s} {creation: << woman(x) >>} {eval: TEST_VALUE_NT}
|
||||
PROPER_NOUN_NT'jane' {refined} {refers: infs'jane'} {eval: CONSTANT_NT'jane' {kind: object} {instance: 'jane'} {enumeration ...}} {created here}
|
||||
COMMON_NOUN_NT'woman' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'woman'} {creation: << woman(x) >>} {eval: TEST_VALUE_NT}
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -7,7 +7,7 @@ Licence: Artistic License 2.0
|
|||
Preliminaries
|
||||
What This Module Does
|
||||
|
||||
Chapter 1: Configuration and Control
|
||||
Chapter 1: Control
|
||||
"Managing the production line for the compilation process."
|
||||
Core Module
|
||||
Class Predeclarations
|
||||
|
|
|
@ -77,13 +77,6 @@ DECLARE_CLASS_ALLOCATED_IN_ARRAYS(scene_connector, 1000)
|
|||
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(understanding_item, 100)
|
||||
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(understanding_reference, 100)
|
||||
|
||||
MAKE_ANNOTATION_FUNCTIONS(action_meaning, action_pattern)
|
||||
MAKE_ANNOTATION_FUNCTIONS(constant_action_name, action_name)
|
||||
MAKE_ANNOTATION_FUNCTIONS(constant_action_pattern, action_pattern)
|
||||
MAKE_ANNOTATION_FUNCTIONS(constant_grammar_verb, grammar_verb)
|
||||
MAKE_ANNOTATION_FUNCTIONS(constant_named_action_pattern, named_action_pattern)
|
||||
MAKE_ANNOTATION_FUNCTIONS(constant_scene, scene)
|
||||
|
||||
@h The beginning.
|
||||
(The client doesn't need to call the start and end routines, because the
|
||||
foundation module does that automatically.)
|
||||
|
@ -143,6 +136,13 @@ void IFModule::end(void) {
|
|||
@ This module uses |syntax|, and adds the following annotations to the
|
||||
syntax tree.
|
||||
|
||||
@e action_meaning_ANNOT /* |action_pattern|: meaning in parse tree when used as noun */
|
||||
@e constant_action_name_ANNOT /* |action_name|: for constant values */
|
||||
@e constant_action_pattern_ANNOT /* |action_pattern|: for constant values */
|
||||
@e constant_grammar_verb_ANNOT /* |grammar_verb|: for constant values */
|
||||
@e constant_named_action_pattern_ANNOT /* |named_action_pattern|: for constant values */
|
||||
@e constant_scene_ANNOT /* |scene|: for constant values */
|
||||
|
||||
= (early code)
|
||||
DECLARE_ANNOTATION_FUNCTIONS(action_meaning, action_pattern)
|
||||
DECLARE_ANNOTATION_FUNCTIONS(constant_action_name, action_name)
|
||||
|
@ -152,11 +152,52 @@ DECLARE_ANNOTATION_FUNCTIONS(constant_named_action_pattern, named_action_pattern
|
|||
DECLARE_ANNOTATION_FUNCTIONS(constant_scene, scene)
|
||||
|
||||
@ =
|
||||
void IFModule::declare_annotations(void) {
|
||||
Annotations::declare_type(constant_action_name_ANNOT, NULL);
|
||||
Annotations::declare_type(constant_action_pattern_ANNOT, NULL);
|
||||
Annotations::declare_type(constant_grammar_verb_ANNOT, NULL);
|
||||
Annotations::declare_type(constant_named_action_pattern_ANNOT, NULL);
|
||||
Annotations::declare_type(constant_scene_ANNOT, NULL);
|
||||
}
|
||||
MAKE_ANNOTATION_FUNCTIONS(action_meaning, action_pattern)
|
||||
MAKE_ANNOTATION_FUNCTIONS(constant_action_name, action_name)
|
||||
MAKE_ANNOTATION_FUNCTIONS(constant_action_pattern, action_pattern)
|
||||
MAKE_ANNOTATION_FUNCTIONS(constant_grammar_verb, grammar_verb)
|
||||
MAKE_ANNOTATION_FUNCTIONS(constant_named_action_pattern, named_action_pattern)
|
||||
MAKE_ANNOTATION_FUNCTIONS(constant_scene, scene)
|
||||
|
||||
@ =
|
||||
void IFModule::declare_annotations(void) {
|
||||
Annotations::declare_type(action_meaning_ANNOT, IFModule::write_action_meaning_ANNOT);
|
||||
Annotations::declare_type(constant_action_name_ANNOT, IFModule::write_constant_action_name_ANNOT);
|
||||
Annotations::declare_type(constant_action_pattern_ANNOT, IFModule::write_constant_action_pattern_ANNOT);
|
||||
Annotations::declare_type(constant_grammar_verb_ANNOT, IFModule::write_constant_grammar_verb_ANNOT);
|
||||
Annotations::declare_type(constant_named_action_pattern_ANNOT, IFModule::write_constant_named_action_pattern_ANNOT);
|
||||
Annotations::declare_type(constant_scene_ANNOT, IFModule::write_constant_scene_ANNOT);
|
||||
}
|
||||
void IFModule::write_action_meaning_ANNOT(text_stream *OUT, parse_node *p) {
|
||||
if (Node::get_action_meaning(p)) {
|
||||
WRITE(" {action meaning: ");
|
||||
PL::Actions::Patterns::write(OUT, Node::get_action_meaning(p));
|
||||
WRITE("}");
|
||||
}
|
||||
}
|
||||
void IFModule::write_constant_action_name_ANNOT(text_stream *OUT, parse_node *p) {
|
||||
if (Node::get_constant_action_name(p))
|
||||
WRITE(" {action name: %W}", Node::get_constant_action_name(p)->present_name);
|
||||
}
|
||||
void IFModule::write_constant_action_pattern_ANNOT(text_stream *OUT, parse_node *p) {
|
||||
if (Node::get_constant_action_pattern(p)) {
|
||||
WRITE(" {action pattern: ");
|
||||
PL::Actions::Patterns::write(OUT, Node::get_constant_action_pattern(p));
|
||||
WRITE("}");
|
||||
}
|
||||
}
|
||||
void IFModule::write_constant_grammar_verb_ANNOT(text_stream *OUT, parse_node *p) {
|
||||
if (Node::get_constant_grammar_verb(p))
|
||||
WRITE(" {grammar verb: GV%d}", Node::get_constant_grammar_verb(p)->allocation_id);
|
||||
}
|
||||
void IFModule::write_constant_named_action_pattern_ANNOT(text_stream *OUT, parse_node *p) {
|
||||
if (Node::get_constant_named_action_pattern(p)) {
|
||||
WRITE(" {named action pattern: ");
|
||||
Nouns::write(OUT, Node::get_constant_named_action_pattern(p)->name);
|
||||
WRITE("}");
|
||||
}
|
||||
}
|
||||
void IFModule::write_constant_scene_ANNOT(text_stream *OUT, parse_node *p) {
|
||||
if (Node::get_constant_scene(p))
|
||||
WRITE(" {scene: %I}", Node::get_constant_scene(p)->as_instance);
|
||||
}
|
||||
|
|
|
@ -234,6 +234,30 @@ void PL::Actions::Patterns::log(action_pattern *ap) {
|
|||
LOG("\n");
|
||||
}
|
||||
|
||||
void PL::Actions::Patterns::write(OUTPUT_STREAM, action_pattern *ap) {
|
||||
if (ap == NULL) WRITE("<null-ap>");
|
||||
else if (ap->valid != TRUE) WRITE("<invalid>");
|
||||
else {
|
||||
WRITE("<action: ");
|
||||
if (ap->action == NULL) WRITE("unspecified");
|
||||
else PL::Actions::Lists::log_briefly(ap->action);
|
||||
if (ap->noun_spec) WRITE(" noun: %P", ap->noun_spec);
|
||||
if (ap->second_spec) WRITE(" second: %P", ap->second_spec);
|
||||
if (ap->from_spec) WRITE(" from: %P", ap->from_spec);
|
||||
if (ap->to_spec) WRITE(" to: %P", ap->to_spec);
|
||||
if (ap->by_spec) WRITE(" by: %P", ap->by_spec);
|
||||
if (ap->through_spec) WRITE(" through: %P", ap->through_spec);
|
||||
if (ap->pushing_spec) WRITE(" pushing: %P", ap->pushing_spec);
|
||||
if (ap->room_spec) WRITE(" room: %P", ap->room_spec);
|
||||
if (ap->parameter_spec) WRITE(" parameter: %P", ap->parameter_spec);
|
||||
if (ap->presence_spec) WRITE(" presence: %P", ap->presence_spec);
|
||||
if (ap->nowhere_flag) WRITE(" nowhere");
|
||||
if (ap->when) WRITE(" when: %P", ap->when);
|
||||
if (ap->duration) { WRITE(" duration: "); Occurrence::log(OUT, ap->duration); }
|
||||
WRITE(">");
|
||||
}
|
||||
}
|
||||
|
||||
action_pattern *PL::Actions::Patterns::ap_store(action_pattern ap) {
|
||||
action_pattern *sap = CREATE(action_pattern);
|
||||
*sap = ap;
|
||||
|
|
|
@ -29,6 +29,7 @@ void SyntaxModule::start(void) {
|
|||
NodeType::make_parentage_allowed_table();
|
||||
NodeType::metadata_setup();
|
||||
Annotations::make_annotation_allowed_table();
|
||||
Writers::register_writer('P', Node::write_node); /* |%P| = write individual parse node */
|
||||
Writers::register_logger('m', Node::log_tree); /* |$m| = log syntax tree from node */
|
||||
Writers::register_logger_I('N', NodeType::log); /* |$N| = log individual node type */
|
||||
Writers::register_logger('P', Node::log_node); /* |$P| = log individual parse node */
|
||||
|
|
|
@ -63,6 +63,7 @@ parse_node_annotation_type *known_annotation_types[MAX_ANNOT_NUMBER];
|
|||
|
||||
void Annotations::declare_type(int id, void (*f)(text_stream *, parse_node *)) {
|
||||
if ((id < 0) || (id >= MAX_ANNOT_NUMBER)) internal_error("annot out of range");
|
||||
if (f == NULL) internal_error("no logging function");
|
||||
if (known_annotation_types_started == FALSE) {
|
||||
for (int i=0; i<MAX_ANNOT_NUMBER; i++) known_annotation_types[i] = NULL;
|
||||
known_annotation_types_started = TRUE;
|
||||
|
@ -257,6 +258,8 @@ node will throw an internal error -- it must mean a bug in Inform.
|
|||
=
|
||||
void Annotations::make_annotation_allowed_table(void) {
|
||||
Annotations::allow(HEADING_NT, heading_level_ANNOT);
|
||||
Annotations::allow(HEADING_NT, suppress_heading_dependencies_ANNOT);
|
||||
Annotations::allow(HEADING_NT, implied_heading_ANNOT);
|
||||
Annotations::allow(SENTENCE_NT, language_element_ANNOT);
|
||||
#ifdef ANNOTATION_PERMISSIONS_SYNTAX_CALLBACK
|
||||
ANNOTATION_PERMISSIONS_SYNTAX_CALLBACK();
|
||||
|
@ -267,6 +270,9 @@ void Annotations::make_annotation_allowed_table(void) {
|
|||
#ifdef EVEN_MORE_ANNOTATION_PERMISSIONS_SYNTAX_CALLBACK
|
||||
EVEN_MORE_ANNOTATION_PERMISSIONS_SYNTAX_CALLBACK();
|
||||
#endif
|
||||
#ifdef STILL_MORE_ANNOTATION_PERMISSIONS_SYNTAX_CALLBACK
|
||||
STILL_MORE_ANNOTATION_PERMISSIONS_SYNTAX_CALLBACK();
|
||||
#endif
|
||||
}
|
||||
|
||||
@ The |ANNOTATION_PERMISSIONS_SYNTAX_CALLBACK| function, if it exists, is
|
||||
|
|
|
@ -348,3 +348,6 @@ void Node::log_node(OUTPUT_STREAM, void *vpn) {
|
|||
while ((pn->next_alternative) && (a<9)) a++, pn = pn->next_alternative;
|
||||
if (a > 0) WRITE("/%d", a);
|
||||
}
|
||||
void Node::write_node(OUTPUT_STREAM, char *format_string, void *vpn) {
|
||||
Node::log_node(OUT, vpn);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue