1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-06-29 05:24:57 +03:00

Refactored new literal and new relation sentences

This commit is contained in:
Graham Nelson 2020-08-04 17:16:11 +01:00
parent 4760fa1202
commit 608e679645
90 changed files with 3688 additions and 3164 deletions

View file

@ -264,7 +264,7 @@ so on. Those absolute basics are made here.
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><a href="1-wtc.html#SP4" class="function-link"><span class="function-syntax">Task::advance_stage_to</span></a><span class="plain-syntax">(</span><span class="constant-syntax">PHRASES_CSEQ</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Phrases and rules"</span><span class="plain-syntax">, </span><span class="constant-syntax">3</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="6-lp.html#SP40" class="function-link"><span class="function-syntax">LiteralPatterns::define_named_phrases</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="6-lp.html#SP34" class="function-link"><span class="function-syntax">LiteralPatterns::define_named_phrases</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="22-cs.html#SP4" class="function-link"><span class="function-syntax">Phrases::Manager::traverse</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="22-cs.html#SP5" class="function-link"><span class="function-syntax">Phrases::Manager::register_meanings</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="22-cs.html#SP7" class="function-link"><span class="function-syntax">Phrases::Manager::parse_rule_parameters</span></a><span class="plain-syntax">)</span>
@ -289,12 +289,12 @@ so on. Those absolute basics are made here.
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">Kinds::Constructors::compile_I6_constants</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH_IF</span><span class="plain-syntax">(</span><span class="identifier-syntax">scoring_plugin</span><span class="plain-syntax">, </span><span class="identifier-syntax">PL::Score::compile_max_score</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="26-uoart.html#SP1" class="function-link"><span class="function-syntax">RTUseOptions::TestUseOption_routine</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="21-ac.html#SP14" class="function-link"><span class="function-syntax">Activities::compile_activity_constants</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="21-ac.html#SP14" class="function-link"><span class="function-syntax">Activities::Activity_before_rulebooks_array</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="21-ac.html#SP14" class="function-link"><span class="function-syntax">Activities::Activity_for_rulebooks_array</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="21-ac.html#SP14" class="function-link"><span class="function-syntax">Activities::Activity_after_rulebooks_array</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="21-ac.html#SP14" class="function-link"><span class="function-syntax">Activities::Activity_atb_rulebooks_array</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="7-rlt.html#SP14" class="function-link"><span class="function-syntax">Relations::compile_defined_relation_constants</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="21-ac.html#SP12" class="function-link"><span class="function-syntax">Activities::compile_activity_constants</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="21-ac.html#SP12" class="function-link"><span class="function-syntax">Activities::Activity_before_rulebooks_array</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="21-ac.html#SP12" class="function-link"><span class="function-syntax">Activities::Activity_for_rulebooks_array</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="21-ac.html#SP12" class="function-link"><span class="function-syntax">Activities::Activity_after_rulebooks_array</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="21-ac.html#SP12" class="function-link"><span class="function-syntax">Activities::Activity_atb_rulebooks_array</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="7-rlt.html#SP8" class="function-link"><span class="function-syntax">Relations::compile_defined_relation_constants</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="13-rsfk.html#SP25" class="function-link"><span class="function-syntax">Kinds::RunTime::compile_data_type_support_routines</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="13-rsfk.html#SP26" class="function-link"><span class="function-syntax">Kinds::RunTime::I7_Kind_Name_routine</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="16-cmw2.html#SP2" class="function-link"><span class="function-syntax">World::Compile::compile</span></a><span class="plain-syntax">)</span>
@ -319,8 +319,8 @@ so on. Those absolute basics are made here.
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH_IF</span><span class="plain-syntax">(</span><span class="identifier-syntax">scenes_plugin</span><span class="plain-syntax">, </span><span class="identifier-syntax">PL::Scenes::ShowSceneStatus_routine</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">PL::Files::arrays</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="21-rl2.html#SP14" class="function-link"><span class="function-syntax">Rulebooks::rulebook_var_creators</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="21-ac.html#SP8" class="function-link"><span class="function-syntax">Activities::activity_var_creators</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="7-rlt.html#SP17" class="function-link"><span class="function-syntax">Relations::IterateRelations</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="21-ac.html#SP6" class="function-link"><span class="function-syntax">Activities::activity_var_creators</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="7-rlt.html#SP11" class="function-link"><span class="function-syntax">Relations::IterateRelations</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="22-cs.html#SP13" class="function-link"><span class="function-syntax">Phrases::Manager::RulebookNames_array</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="22-cs.html#SP14" class="function-link"><span class="function-syntax">Phrases::Manager::RulePrintingRule_routine</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH_IF</span><span class="plain-syntax">(</span><span class="identifier-syntax">parsing_plugin</span><span class="plain-syntax">, </span><span class="identifier-syntax">PL::Parsing::Verbs::prepare</span><span class="plain-syntax">)</span>
@ -347,7 +347,7 @@ so on. Those absolute basics are made here.
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="17-rs.html#SP7" class="function-link"><span class="function-syntax">Strings::compile_responses</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="18-lc.html#SP10" class="function-link"><span class="function-syntax">Lists::check</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="18-lc.html#SP12" class="function-link"><span class="function-syntax">Lists::compile</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="7-rlt.html#SP29" class="function-link"><span class="function-syntax">Relations::compile_defined_relations</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="7-rlt.html#SP23" class="function-link"><span class="function-syntax">Relations::compile_defined_relations</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="22-cs.html#SP15" class="function-link"><span class="function-syntax">Phrases::Manager::compile_as_needed</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="17-ts.html#SP6" class="function-link"><span class="function-syntax">Strings::TextSubstitutions::allow_no_further_text_subs</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH_IF</span><span class="plain-syntax">(</span><span class="identifier-syntax">parsing_plugin</span><span class="plain-syntax">, </span><span class="identifier-syntax">PL::Parsing::Tokens::Filters::compile</span><span class="plain-syntax">)</span>

File diff suppressed because one or more lines are too long

View file

@ -113,7 +113,7 @@ a <span class="extract"><span class="extract-syntax">pcalc_prop</span></span> st
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">next</span><span class="plain-syntax">; </span><span class="comment-syntax"> next atom in the list for this proposition</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure pcalc_prop is accessed in 3/ptmn, 3/cs, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 4/tr2, 4/dbtr, 4/rpr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/pr, 11/bas, 11/tc, 11/sc, 11/sm, 11/tcp, 12/ap, 12/ca, 12/dtd, 12/cad, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 20/eq, 21/rl, 21/rl2, 21/fao, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 27/cm and here.</li></ul>
<ul class="endnotetexts"><li>The structure pcalc_prop is accessed in 3/ptmn, 3/cs, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 4/tr2, 4/dbtr, 4/rpr, 4/nar, 4/nlpr, 4/nrr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/pr, 11/bas, 11/tc, 11/sc, 11/sm, 11/tcp, 12/ap, 12/ca, 12/dtd, 12/cad, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 20/eq, 21/rl, 21/rl2, 21/fao, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 27/cm and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP3"></a><b>&#167;3. </b>The Universe is filled with atoms, but they come in different kinds, called
elements. For us, an "element" is the identifying number, stored in the
<span class="extract"><span class="extract-syntax">element</span></span> field, which tells Inform what kind of atom something is. The

View file

@ -152,7 +152,7 @@ their existence.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Calculus::Propositions::Abstract::to_provide_property</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">Calculus::Propositions::Abstract::to_provide_property</span></span>:<br/>Define by Table Requests - <a href="4-dbtr.html#SP4_2">&#167;4.2</a><br/>Property Declarations - <a href="5-pd.html#SP5_9">&#167;5.9</a>, <a href="5-pd.html#SP5_10">&#167;5.10</a>, <a href="5-pd.html#SP6_1">&#167;6.1</a><br/>Relations - <a href="7-rlt.html#SP9">&#167;9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Calculus::Propositions::Abstract::to_provide_property</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">Calculus::Propositions::Abstract::to_provide_property</span></span>:<br/>Define by Table Requests - <a href="4-dbtr.html#SP4_2">&#167;4.2</a><br/>Property Declarations - <a href="5-pd.html#SP5_9">&#167;5.9</a>, <a href="5-pd.html#SP5_10">&#167;5.10</a>, <a href="5-pd.html#SP6_1">&#167;6.1</a><br/>Relations - <a href="7-rlt.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="11-ap.html#SP21" class="function-link"><span class="function-syntax">Calculus::Atoms::binary_PREDICATE_new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R_provision</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="11-tr.html#SP4" class="function-link"><span class="function-syntax">Calculus::Terms::new_variable</span></a><span class="plain-syntax">(0), </span><a href="11-tr.html#SP4" class="function-link"><span class="function-syntax">Calculus::Terms::new_constant</span></a><span class="plain-syntax">(</span><a href="14-rv.html#SP1" class="function-link"><span class="function-syntax">Rvalues::from_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">)));</span>
<span class="plain-syntax">}</span>

View file

@ -173,7 +173,7 @@ we don't accidentally break this rule:
<span class="plain-syntax"> </span><a href="12-ap.html#SP8" class="function-link"><span class="function-syntax">Calculus::Propositions::Assert::prop_true_in_world_model_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">certitude</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">Calculus::Propositions::Assert::assert_true_about</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">Calculus::Propositions::Assert::assert_true_about</span></span>:<br/>Define by Table Requests - <a href="4-dbtr.html#SP4_2">&#167;4.2</a><br/>Make Assertions - <a href="5-ma.html#SP5_3_39_5">&#167;5.3.39.5</a><br/>Property Knowledge - <a href="5-pk.html#SP3">&#167;3</a><br/>Relation Knowledge - <a href="5-rk.html#SP1_2">&#167;1.2</a><br/>Implications - <a href="5-imp.html#SP7_1_3">&#167;7.1.3</a><br/>Property Declarations - <a href="5-pd.html#SP5_9">&#167;5.9</a>, <a href="5-pd.html#SP5_10">&#167;5.10</a>, <a href="5-pd.html#SP6_1">&#167;6.1</a><br/>Relations - <a href="7-rlt.html#SP9">&#167;9</a><br/>Tree Conversions - <a href="11-tc.html#SP2">&#167;2</a><br/>Either-Or Properties - <a href="15-ep.html#SP9">&#167;9</a><br/>Valued Properties - <a href="15-vp.html#SP10">&#167;10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">,</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Calculus::Propositions::Assert::assert_true_about</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">Calculus::Propositions::Assert::assert_true_about</span></span>:<br/>Define by Table Requests - <a href="4-dbtr.html#SP4_2">&#167;4.2</a><br/>Make Assertions - <a href="5-ma.html#SP5_3_39_5">&#167;5.3.39.5</a><br/>Property Knowledge - <a href="5-pk.html#SP3">&#167;3</a><br/>Relation Knowledge - <a href="5-rk.html#SP1_2">&#167;1.2</a><br/>Implications - <a href="5-imp.html#SP7_1_3">&#167;7.1.3</a><br/>Property Declarations - <a href="5-pd.html#SP5_9">&#167;5.9</a>, <a href="5-pd.html#SP5_10">&#167;5.10</a>, <a href="5-pd.html#SP6_1">&#167;6.1</a><br/>Relations - <a href="7-rlt.html#SP4">&#167;4</a><br/>Tree Conversions - <a href="11-tc.html#SP2">&#167;2</a><br/>Either-Or Properties - <a href="15-ep.html#SP9">&#167;9</a><br/>Valued Properties - <a href="15-vp.html#SP10">&#167;10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="reserved-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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">certitude</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="12-ap.html#SP8" class="function-link"><span class="function-syntax">Calculus::Propositions::Assert::prop_true_in_world_model_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">certitude</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>

View file

@ -478,7 +478,7 @@ we have to re-establish \(R(x, y)\) before we can proceed.
<p class="commentary firstcommentary"><a id="SP8"></a><b>&#167;8. An unannotated one. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">annotated_i6_schema</span><span class="plain-syntax"> </span><span class="function-syntax">Calculus::Atoms::Compile::blank_asch</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">Calculus::Atoms::Compile::blank_asch</span></span>:<br/>Relations - <a href="7-rlt.html#SP15_2_2">&#167;15.2.2</a>, <a href="7-rlt.html#SP15_2_3">&#167;15.2.3</a>, <a href="7-rlt.html#SP15_2_4">&#167;15.2.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">annotated_i6_schema</span><span class="plain-syntax"> </span><span class="function-syntax">Calculus::Atoms::Compile::blank_asch</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">Calculus::Atoms::Compile::blank_asch</span></span>:<br/>Relations - <a href="7-rlt.html#SP9_2_2">&#167;9.2.2</a>, <a href="7-rlt.html#SP9_2_3">&#167;9.2.3</a>, <a href="7-rlt.html#SP9_2_4">&#167;9.2.4</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">annotated_i6_schema</span><span class="plain-syntax"> </span><span class="identifier-syntax">asch</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">asch</span><span class="plain-syntax">.</span><span class="element-syntax">schema</span><span class="plain-syntax"> = </span><a href="12-is.html#SP4" class="function-link"><span class="function-syntax">Calculus::Schemas::new</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">asch</span><span class="plain-syntax">.</span><span class="element-syntax">negate_schema</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>

View file

@ -167,7 +167,7 @@ that the resulting routine will be called <span class="extract"><span class="ext
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Calculus::Deferrals::compile_deferred_description_test</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">Calculus::Deferrals::compile_deferred_description_test</span></span>:<br/>Activities - <a href="21-ac.html#SP14">&#167;14</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">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Calculus::Deferrals::compile_deferred_description_test</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">Calculus::Deferrals::compile_deferred_description_test</span></span>:<br/>Activities - <a href="21-ac.html#SP12">&#167;12</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">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><a href="14-sp.html#SP3" class="function-link"><span class="function-syntax">Specifications::to_proposition</span></a><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><a href="11-pr.html#SP22" class="function-link"><span class="function-syntax">Calculus::Propositions::contains_callings</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop</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#SP5" 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_CantCallDeferredDescs</span><span class="plain-syntax">),</span>
@ -1178,7 +1178,7 @@ return <span class="extract"><span class="extract-syntax">TRUE</span></span> or
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">MAX_LOOP_DOMAIN_SCHEMA_LENGTH</span><span class="plain-syntax"> </span><span class="constant-syntax">1000</span>
</pre>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Calculus::Deferrals::write_loop_schema</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">Calculus::Deferrals::write_loop_schema</span></span>:<br/><a href="12-dtd.html#SP23">&#167;23</a><br/>Relations - <a href="7-rlt.html#SP15_2_9_1">&#167;15.2.9.1</a>, <a href="7-rlt.html#SP15_2_10_1">&#167;15.2.10.1</a>, <a href="7-rlt.html#SP15_2_12_1">&#167;15.2.12.1</a><br/>Compile Deferred Propositions - <a href="12-cdp.html#SP5">&#167;5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sch</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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Calculus::Deferrals::write_loop_schema</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">Calculus::Deferrals::write_loop_schema</span></span>:<br/><a href="12-dtd.html#SP23">&#167;23</a><br/>Relations - <a href="7-rlt.html#SP9_2_9_1">&#167;9.2.9.1</a>, <a href="7-rlt.html#SP9_2_10_1">&#167;9.2.10.1</a>, <a href="7-rlt.html#SP9_2_12_1">&#167;9.2.12.1</a><br/>Compile Deferred Propositions - <a href="12-cdp.html#SP5">&#167;5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sch</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="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">Kinds::Compare::lt</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">)) {</span>

View file

@ -131,7 +131,7 @@ error.
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">unique_qi_counter</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="function-syntax">Calculus::Schemas::new</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">Calculus::Schemas::new</span></span>:<br/>Relations - <a href="7-rlt.html#SP9">&#167;9</a>, <a href="7-rlt.html#SP9_6">&#167;9.6</a>, <a href="7-rlt.html#SP9_7">&#167;9.7</a>, <a href="7-rlt.html#SP9_8">&#167;9.8</a>, <a href="7-rlt.html#SP9_9">&#167;9.9</a>, <a href="7-rlt.html#SP9_10">&#167;9.10</a>, <a href="7-rlt.html#SP9_11">&#167;9.11</a>, <a href="7-rlt.html#SP9_12">&#167;9.12</a>, <a href="7-rlt.html#SP9_13">&#167;9.13</a>, <a href="7-rlt.html#SP9_14">&#167;9.14</a>, <a href="7-rlt.html#SP9_15">&#167;9.15</a><br/>Quasinumeric Relations - <a href="12-qr.html#SP3">&#167;3</a><br/>Compile Atoms - <a href="12-ca.html#SP8">&#167;8</a><br/>Measurement Adjectives - <a href="15-ma.html#SP14_1">&#167;14.1</a><br/>Same Property Relation - <a href="15-spr.html#SP2">&#167;2</a><br/>Setting Property Relation - <a href="15-spr2.html#SP8">&#167;8</a><br/>Listed-In Relations - <a href="19-lr.html#SP2">&#167;2</a><br/>Stack Frames - <a href="24-sf.html#SP15">&#167;15</a><br/>Compile Invocations Inline - <a href="25-cii.html#SP3_5_4">&#167;3.5.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">fmt</span><span class="plain-syntax">, ...) {</span>
<span class="reserved-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="function-syntax">Calculus::Schemas::new</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">Calculus::Schemas::new</span></span>:<br/>Relations - <a href="7-rlt.html#SP4">&#167;4</a>, <a href="7-rlt.html#SP4_4">&#167;4.4</a>, <a href="7-rlt.html#SP4_5">&#167;4.5</a>, <a href="7-rlt.html#SP4_6">&#167;4.6</a>, <a href="7-rlt.html#SP4_7">&#167;4.7</a>, <a href="7-rlt.html#SP4_8">&#167;4.8</a>, <a href="7-rlt.html#SP4_9">&#167;4.9</a>, <a href="7-rlt.html#SP4_10">&#167;4.10</a>, <a href="7-rlt.html#SP4_11">&#167;4.11</a>, <a href="7-rlt.html#SP4_12">&#167;4.12</a>, <a href="7-rlt.html#SP4_13">&#167;4.13</a><br/>Quasinumeric Relations - <a href="12-qr.html#SP3">&#167;3</a><br/>Compile Atoms - <a href="12-ca.html#SP8">&#167;8</a><br/>Measurement Adjectives - <a href="15-ma.html#SP14_1">&#167;14.1</a><br/>Same Property Relation - <a href="15-spr.html#SP2">&#167;2</a><br/>Setting Property Relation - <a href="15-spr2.html#SP8">&#167;8</a><br/>Listed-In Relations - <a href="19-lr.html#SP2">&#167;2</a><br/>Stack Frames - <a href="24-sf.html#SP15">&#167;15</a><br/>Compile Invocations Inline - <a href="25-cii.html#SP3_5_4">&#167;3.5.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">fmt</span><span class="plain-syntax">, ...) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">va_list</span><span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">; </span><span class="comment-syntax"> the variable argument list signified by the dots</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">i6_schema</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">sch</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">prototype</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Streams::new_buffer</span><span class="plain-syntax">(</span><span class="constant-syntax">TYPICAL_I6_SCHEMA_LENGTH</span><span class="plain-syntax">, </span><span class="identifier-syntax">sch</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">prototype_storage</span><span class="plain-syntax">);</span>
@ -239,7 +239,7 @@ either specify two parameters, both of them terms...
<span class="plain-syntax"> </span><a href="12-is.html#SP7" class="function-link"><span class="function-syntax">Calculus::Schemas::sch_emit_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">ems</span><span class="plain-syntax">, </span><span class="identifier-syntax">semicolon</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">Calculus::Schemas::emit_expand_from_locals</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">Calculus::Schemas::emit_expand_from_locals</span></span>:<br/>Relations - <a href="7-rlt.html#SP15_2_2">&#167;15.2.2</a>, <a href="7-rlt.html#SP15_2_3">&#167;15.2.3</a>, <a href="7-rlt.html#SP15_2_9_1">&#167;15.2.9.1</a>, <a href="7-rlt.html#SP15_2_10_1">&#167;15.2.10.1</a>, <a href="7-rlt.html#SP15_2_12_1">&#167;15.2.12.1</a>, <a href="7-rlt.html#SP29_5">&#167;29.5</a>, <a href="7-rlt.html#SP29_6">&#167;29.6</a><br/>Deciding to Defer - <a href="12-dtd.html#SP23">&#167;23</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sch</span><span class="plain-syntax">,</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Calculus::Schemas::emit_expand_from_locals</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">Calculus::Schemas::emit_expand_from_locals</span></span>:<br/>Relations - <a href="7-rlt.html#SP9_2_2">&#167;9.2.2</a>, <a href="7-rlt.html#SP9_2_3">&#167;9.2.3</a>, <a href="7-rlt.html#SP9_2_9_1">&#167;9.2.9.1</a>, <a href="7-rlt.html#SP9_2_10_1">&#167;9.2.10.1</a>, <a href="7-rlt.html#SP9_2_12_1">&#167;9.2.12.1</a>, <a href="7-rlt.html#SP23_5">&#167;23.5</a>, <a href="7-rlt.html#SP23_6">&#167;23.6</a><br/>Deciding to Defer - <a href="12-dtd.html#SP23">&#167;23</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sch</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">v1</span><span class="plain-syntax">, </span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">v2</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">semicolon</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">pcalc_term</span><span class="plain-syntax"> </span><span class="identifier-syntax">pt1</span><span class="plain-syntax"> = </span><a href="11-tr.html#SP4" class="function-link"><span class="function-syntax">Calculus::Terms::new_constant</span></a><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><a href="14-lv.html#SP2" class="function-link"><span class="function-syntax">Lvalues::new_LOCAL_VARIABLE</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">, </span><span class="identifier-syntax">v1</span><span class="plain-syntax">));</span>
@ -248,7 +248,7 @@ either specify two parameters, both of them terms...
<span class="plain-syntax"> </span><a href="12-is.html#SP6" class="function-link"><span class="function-syntax">Calculus::Schemas::emit_expand_from_terms</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">pt1</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">pt2</span><span class="plain-syntax">, </span><span class="identifier-syntax">semicolon</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">Calculus::Schemas::emit_val_expand_from_locals</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">Calculus::Schemas::emit_val_expand_from_locals</span></span>:<br/>Relations - <a href="7-rlt.html#SP15_2_4">&#167;15.2.4</a>, <a href="7-rlt.html#SP29_2">&#167;29.2</a>, <a href="7-rlt.html#SP29_3">&#167;29.3</a>, <a href="7-rlt.html#SP29_4">&#167;29.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sch</span><span class="plain-syntax">,</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Calculus::Schemas::emit_val_expand_from_locals</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">Calculus::Schemas::emit_val_expand_from_locals</span></span>:<br/>Relations - <a href="7-rlt.html#SP9_2_4">&#167;9.2.4</a>, <a href="7-rlt.html#SP23_2">&#167;23.2</a>, <a href="7-rlt.html#SP23_3">&#167;23.3</a>, <a href="7-rlt.html#SP23_4">&#167;23.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sch</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">v1</span><span class="plain-syntax">, </span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">v2</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">pcalc_term</span><span class="plain-syntax"> </span><span class="identifier-syntax">pt1</span><span class="plain-syntax"> = </span><a href="11-tr.html#SP4" class="function-link"><span class="function-syntax">Calculus::Terms::new_constant</span></a><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><a href="14-lv.html#SP2" class="function-link"><span class="function-syntax">Lvalues::new_LOCAL_VARIABLE</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">, </span><span class="identifier-syntax">v1</span><span class="plain-syntax">));</span>

View file

@ -87,7 +87,7 @@ are drawn about them.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="function-syntax">Kinds::Knowledge::as_subject</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">Kinds::Knowledge::as_subject</span></span>:<br/><a href="13-kak.html#SP5">&#167;5</a>, <a href="13-kak.html#SP6">&#167;6</a><br/>Define by Table Requests - <a href="4-dbtr.html#SP4_2">&#167;4.2</a><br/>Refine Parse Tree - <a href="5-rpt.html#SP1">&#167;1</a>, <a href="5-rpt.html#SP10_6">&#167;10.6</a>, <a href="5-rpt.html#SP10_6_1">&#167;10.6.1</a>, <a href="5-rpt.html#SP10_6_2">&#167;10.6.2</a>, <a href="5-rpt.html#SP10_8_2_3_1">&#167;10.8.2.3.1</a>, <a href="5-rpt.html#SP11_1">&#167;11.1</a><br/>The Creator - <a href="5-tc.html#SP8_4_1_2">&#167;8.4.1.2</a><br/>Make Assertions - <a href="5-ma.html#SP5_3_25">&#167;5.3.25</a>, <a href="5-ma.html#SP5_3_26">&#167;5.3.26</a>, <a href="5-ma.html#SP5_3_34">&#167;5.3.34</a>, <a href="5-ma.html#SP5_3_39">&#167;5.3.39</a><br/>Property Knowledge - <a href="5-pk.html#SP3">&#167;3</a><br/>Implications - <a href="5-imp.html#SP4_2_1">&#167;4.2.1</a><br/>Property Declarations - <a href="5-pd.html#SP5_6">&#167;5.6</a>, <a href="5-pd.html#SP6_1_1">&#167;6.1.1</a><br/>Instances - <a href="6-ins.html#SP6_2">&#167;6.2</a>, <a href="6-ins.html#SP19">&#167;19</a><br/>Index Physical World - <a href="6-ipw.html#SP3_7">&#167;3.7</a><br/>Adjective Meanings - <a href="7-am.html#SP22">&#167;22</a>, <a href="7-am.html#SP23">&#167;23</a>, <a href="7-am.html#SP24">&#167;24</a><br/>Binary Predicates - <a href="7-bp.html#SP20">&#167;20</a><br/>Relations - <a href="7-rlt.html#SP9_3_1">&#167;9.3.1</a>, <a href="7-rlt.html#SP9_3_8">&#167;9.3.8</a>, <a href="7-rlt.html#SP20_4">&#167;20.4</a><br/>Quasinumeric Relations - <a href="12-qr.html#SP3">&#167;3</a><br/>Assert Propositions - <a href="12-ap.html#SP9_5_2">&#167;9.5.2</a>, <a href="12-ap.html#SP12">&#167;12</a><br/>Kinds Index - <a href="13-ki.html#SP1_11">&#167;1.11</a><br/>Dash - <a href="14-ds2.html#SP11_9_1_2_3">&#167;11.9.1.2.3</a><br/>Indefinite Appearance - <a href="15-ia.html#SP1">&#167;1</a><br/>The Provision Relation - <a href="15-tpr.html#SP7_2">&#167;7.2</a><br/>Setting Property Relation - <a href="15-spr2.html#SP2">&#167;2</a><br/>Inference Subjects - <a href="16-is.html#SP17">&#167;17</a><br/>Instance Counting - <a href="16-ic.html#SP12_2">&#167;12.2</a>, <a href="16-ic.html#SP12_3">&#167;12.3</a>, <a href="16-ic.html#SP13">&#167;13</a>, <a href="16-ic.html#SP14">&#167;14</a>, <a href="16-ic.html#SP15">&#167;15</a><br/>Listed-In Relations - <a href="19-lr.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="function-syntax">Kinds::Knowledge::as_subject</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">Kinds::Knowledge::as_subject</span></span>:<br/><a href="13-kak.html#SP5">&#167;5</a>, <a href="13-kak.html#SP6">&#167;6</a><br/>Define by Table Requests - <a href="4-dbtr.html#SP4_2">&#167;4.2</a><br/>Refine Parse Tree - <a href="5-rpt.html#SP1">&#167;1</a>, <a href="5-rpt.html#SP10_6">&#167;10.6</a>, <a href="5-rpt.html#SP10_6_1">&#167;10.6.1</a>, <a href="5-rpt.html#SP10_6_2">&#167;10.6.2</a>, <a href="5-rpt.html#SP10_8_2_3_1">&#167;10.8.2.3.1</a>, <a href="5-rpt.html#SP11_1">&#167;11.1</a><br/>The Creator - <a href="5-tc.html#SP8_4_1_2">&#167;8.4.1.2</a><br/>Make Assertions - <a href="5-ma.html#SP5_3_25">&#167;5.3.25</a>, <a href="5-ma.html#SP5_3_26">&#167;5.3.26</a>, <a href="5-ma.html#SP5_3_34">&#167;5.3.34</a>, <a href="5-ma.html#SP5_3_39">&#167;5.3.39</a><br/>Property Knowledge - <a href="5-pk.html#SP3">&#167;3</a><br/>Implications - <a href="5-imp.html#SP4_2_1">&#167;4.2.1</a><br/>Property Declarations - <a href="5-pd.html#SP5_6">&#167;5.6</a>, <a href="5-pd.html#SP6_1_1">&#167;6.1.1</a><br/>Instances - <a href="6-ins.html#SP6_2">&#167;6.2</a>, <a href="6-ins.html#SP19">&#167;19</a><br/>Index Physical World - <a href="6-ipw.html#SP3_7">&#167;3.7</a><br/>Adjective Meanings - <a href="7-am.html#SP22">&#167;22</a>, <a href="7-am.html#SP23">&#167;23</a>, <a href="7-am.html#SP24">&#167;24</a><br/>Binary Predicates - <a href="7-bp.html#SP20">&#167;20</a><br/>Relations - <a href="7-rlt.html#SP4_1_1">&#167;4.1.1</a>, <a href="7-rlt.html#SP4_1_4">&#167;4.1.4</a>, <a href="7-rlt.html#SP14_4">&#167;14.4</a><br/>Quasinumeric Relations - <a href="12-qr.html#SP3">&#167;3</a><br/>Assert Propositions - <a href="12-ap.html#SP9_5_2">&#167;9.5.2</a>, <a href="12-ap.html#SP12">&#167;12</a><br/>Kinds Index - <a href="13-ki.html#SP1_11">&#167;1.11</a><br/>Dash - <a href="14-ds2.html#SP11_9_1_2_3">&#167;11.9.1.2.3</a><br/>Indefinite Appearance - <a href="15-ia.html#SP1">&#167;1</a><br/>The Provision Relation - <a href="15-tpr.html#SP7_2">&#167;7.2</a><br/>Setting Property Relation - <a href="15-spr2.html#SP2">&#167;2</a><br/>Inference Subjects - <a href="16-is.html#SP17">&#167;17</a><br/>Instance Counting - <a href="16-ic.html#SP12_2">&#167;12.2</a>, <a href="16-ic.html#SP12_3">&#167;12.3</a>, <a href="16-ic.html#SP13">&#167;13</a>, <a href="16-ic.html#SP14">&#167;14</a>, <a href="16-ic.html#SP15">&#167;15</a><br/>Listed-In Relations - <a href="19-lr.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="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="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">K</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">construct</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">dt_knowledge</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>

View file

@ -313,7 +313,7 @@ row.
</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><a href="6-lp.html#SP43" class="function-link"><span class="function-syntax">LiteralPatterns::list_of_literal_forms</span></a><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><a href="6-lp.html#SP37" class="function-link"><span class="function-syntax">LiteralPatterns::list_of_literal_forms</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><a href="6-lp.html#SP20" class="function-link"><span class="function-syntax">LiteralPatterns::index_all</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"br"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
@ -507,9 +507,9 @@ as "0 kg", "0 hectares", or whatever is appropriate.
</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><a href="6-lp.html#SP43" class="function-link"><span class="function-syntax">LiteralPatterns::list_of_literal_forms</span></a><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><a href="6-lp.html#SP37" class="function-link"><span class="function-syntax">LiteralPatterns::list_of_literal_forms</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><a href="6-lp.html#SP23" class="function-link"><span class="function-syntax">LiteralPatterns::index_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="6-lp.html#SP43" class="function-link"><span class="function-syntax">LiteralPatterns::list_of_literal_forms</span></a><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><a href="6-lp.html#SP37" class="function-link"><span class="function-syntax">LiteralPatterns::list_of_literal_forms</span></a><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">else</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>
</pre>

View file

@ -121,7 +121,7 @@ kinds being compiled to an I6 <span class="extract"><span class="extract-syntax"
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Kinds::RunTime::I6_classname</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">Kinds::RunTime::I6_classname</span></span>:<br/><a href="13-rsfk.html#SP26">&#167;26</a><br/>Binary Predicates - <a href="7-bp.html#SP25">&#167;25</a><br/>Relations - <a href="7-rlt.html#SP29_2">&#167;29.2</a>, <a href="7-rlt.html#SP29_3">&#167;29.3</a>, <a href="7-rlt.html#SP29_4">&#167;29.4</a>, <a href="7-rlt.html#SP29_5">&#167;29.5</a>, <a href="7-rlt.html#SP29_6">&#167;29.6</a><br/>The Equality Relation - <a href="12-ter.html#SP8_6">&#167;8.6</a><br/>Compile Atoms - <a href="12-ca.html#SP6_2">&#167;6.2</a><br/>Deciding to Defer - <a href="12-dtd.html#SP24">&#167;24</a><br/>Knowledge about Kinds - <a href="13-kak.html#SP2">&#167;2</a><br/>Compile Invocations Inline - <a href="25-cii.html#SP3_1_1_4_7_1">&#167;3.1.1.4.7.1</a>, <a href="25-cii.html#SP8">&#167;8</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Kinds::RunTime::I6_classname</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">Kinds::RunTime::I6_classname</span></span>:<br/><a href="13-rsfk.html#SP26">&#167;26</a><br/>Binary Predicates - <a href="7-bp.html#SP25">&#167;25</a><br/>Relations - <a href="7-rlt.html#SP23_2">&#167;23.2</a>, <a href="7-rlt.html#SP23_3">&#167;23.3</a>, <a href="7-rlt.html#SP23_4">&#167;23.4</a>, <a href="7-rlt.html#SP23_5">&#167;23.5</a>, <a href="7-rlt.html#SP23_6">&#167;23.6</a><br/>The Equality Relation - <a href="12-ter.html#SP8_6">&#167;8.6</a><br/>Compile Atoms - <a href="12-ca.html#SP6_2">&#167;6.2</a><br/>Deciding to Defer - <a href="12-dtd.html#SP24">&#167;24</a><br/>Knowledge about Kinds - <a href="13-kak.html#SP2">&#167;2</a><br/>Compile Invocations Inline - <a href="25-cii.html#SP3_1_1_4_7_1">&#167;3.1.1.4.7.1</a>, <a href="25-cii.html#SP8">&#167;8</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::Compare::le</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="13-rsfk.html#SP23" class="function-link"><span class="function-syntax">Kinds::RunTime::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"no I6 classname available"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
@ -201,7 +201,7 @@ chosen), but no problem message has been issued about this, or
<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><a href="27-hr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::package_in_enclosure</span></a><span class="plain-syntax">(</span><span class="constant-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><a href="27-hr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-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><a href="27-em.html#SP3" class="function-link"><span class="function-syntax">Emit::named_late_array_begin</span></a><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>
<span class="plain-syntax"> </span><a href="7-rlt.html#SP16" class="function-link"><span class="function-syntax">Relations::compile_blank_relation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="7-rlt.html#SP10" class="function-link"><span class="function-syntax">Relations::compile_blank_relation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="27-em.html#SP3" class="function-link"><span class="function-syntax">Emit::array_end</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">save</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">N</span><span class="plain-syntax">) </span><a href="27-em.html#SP4" class="function-link"><span class="function-syntax">Emit::holster</span></a><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">else</span><span class="plain-syntax"> {</span>
@ -637,7 +637,7 @@ turns up. This means remembering everything we've seen, using a new structure:
</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">Kinds::RunTime::emit_strong_id</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">Kinds::RunTime::emit_strong_id</span></span>:<br/><a href="13-rsfk.html#SP17_1_1">&#167;17.1.1</a>, <a href="13-rsfk.html#SP17_1_1_1">&#167;17.1.1.1</a>, <a href="13-rsfk.html#SP17_1_1_2">&#167;17.1.1.2</a><br/>Relations - <a href="7-rlt.html#SP15_1_4">&#167;15.1.4</a>, <a href="7-rlt.html#SP16">&#167;16</a><br/>List Constants - <a href="18-lc.html#SP12_1">&#167;12.1</a>, <a href="18-lc.html#SP13">&#167;13</a><br/>Phrases as Values - <a href="22-pav.html#SP8_1">&#167;8.1</a>, <a href="22-pav.html#SP9_1">&#167;9.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Kinds::RunTime::emit_strong_id</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">Kinds::RunTime::emit_strong_id</span></span>:<br/><a href="13-rsfk.html#SP17_1_1">&#167;17.1.1</a>, <a href="13-rsfk.html#SP17_1_1_1">&#167;17.1.1.1</a>, <a href="13-rsfk.html#SP17_1_1_2">&#167;17.1.1.2</a><br/>Relations - <a href="7-rlt.html#SP9_1_4">&#167;9.1.4</a>, <a href="7-rlt.html#SP10">&#167;10</a><br/>List Constants - <a href="18-lc.html#SP12_1">&#167;12.1</a>, <a href="18-lc.html#SP13">&#167;13</a><br/>Phrases as Values - <a href="22-pav.html#SP8_1">&#167;8.1</a>, <a href="22-pav.html#SP9_1">&#167;9.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">runtime_kind_structure</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rks</span><span class="plain-syntax"> = </span><a href="13-rsfk.html#SP14" class="function-link"><span class="function-syntax">Kinds::RunTime::get_rks</span></a><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">rks</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="27-em.html#SP3" class="function-link"><span class="function-syntax">Emit::array_iname_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rks</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">rks_iname</span><span class="plain-syntax">);</span>
@ -646,7 +646,7 @@ turns up. This means remembering everything we've seen, using a new structure:
<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">Kinds::RunTime::emit_strong_id_as_val</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">Kinds::RunTime::emit_strong_id_as_val</span></span>:<br/><a href="13-rsfk.html#SP17_3">&#167;17.3</a>, <a href="13-rsfk.html#SP20">&#167;20</a><br/>Relations - <a href="7-rlt.html#SP15">&#167;15</a>, <a href="7-rlt.html#SP15_2_9_1">&#167;15.2.9.1</a><br/>Deciding to Defer - <a href="12-dtd.html#SP16">&#167;16</a>, <a href="12-dtd.html#SP17">&#167;17</a>, <a href="12-dtd.html#SP27">&#167;27</a><br/>Table Columns - <a href="19-tc.html#SP8">&#167;8</a><br/>Phrases as Values - <a href="22-pav.html#SP9_2">&#167;9.2</a><br/>Compile Invocations Inline - <a href="25-cii.html#SP3_2_7">&#167;3.2.7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Kinds::RunTime::emit_strong_id_as_val</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">Kinds::RunTime::emit_strong_id_as_val</span></span>:<br/><a href="13-rsfk.html#SP17_3">&#167;17.3</a>, <a href="13-rsfk.html#SP20">&#167;20</a><br/>Relations - <a href="7-rlt.html#SP9">&#167;9</a>, <a href="7-rlt.html#SP9_2_9_1">&#167;9.2.9.1</a><br/>Deciding to Defer - <a href="12-dtd.html#SP16">&#167;16</a>, <a href="12-dtd.html#SP17">&#167;17</a>, <a href="12-dtd.html#SP27">&#167;27</a><br/>Table Columns - <a href="19-tc.html#SP8">&#167;8</a><br/>Phrases as Values - <a href="22-pav.html#SP9_2">&#167;9.2</a><br/>Compile Invocations Inline - <a href="25-cii.html#SP3_2_7">&#167;3.2.7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">runtime_kind_structure</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rks</span><span class="plain-syntax"> = </span><a href="13-rsfk.html#SP14" class="function-link"><span class="function-syntax">Kinds::RunTime::get_rks</span></a><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">rks</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_iname</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">rks</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">rks_iname</span><span class="plain-syntax">);</span>
@ -882,7 +882,7 @@ recursively scanned through for us, so that if we have seen a construction
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::get_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">) == </span><span class="identifier-syntax">CON_phrase</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="22-pav.html#SP9" class="function-link"><span class="function-syntax">Phrases::Constants::compile_default_closure</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">identifier</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><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::get_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">) == </span><span class="identifier-syntax">CON_relation</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="7-rlt.html#SP16" class="function-link"><span class="function-syntax">Relations::compile_default_relation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">identifier</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="7-rlt.html#SP10" class="function-link"><span class="function-syntax">Relations::compile_default_relation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">identifier</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><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::get_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">) == </span><span class="identifier-syntax">CON_list_of</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="18-lc.html#SP13" class="function-link"><span class="function-syntax">Lists::compile_default_list</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">identifier</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>
@ -944,7 +944,7 @@ how the job is done.
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">total_heap_allocation</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Kinds::RunTime::ensure_basic_heap_present</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">Kinds::RunTime::ensure_basic_heap_present</span></span>:<br/>Relations - <a href="7-rlt.html#SP9">&#167;9</a><br/>List Constants - <a href="18-lc.html#SP5">&#167;5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Kinds::RunTime::ensure_basic_heap_present</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">Kinds::RunTime::ensure_basic_heap_present</span></span>:<br/>Relations - <a href="7-rlt.html#SP4">&#167;4</a><br/>List Constants - <a href="18-lc.html#SP5">&#167;5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">total_heap_allocation</span><span class="plain-syntax"> += </span><span class="constant-syntax">256</span><span class="plain-syntax">; </span><span class="comment-syntax"> enough for the initial free-space block</span>
<span class="plain-syntax">}</span>
</pre>
@ -1046,7 +1046,7 @@ list of 20 texts. For the cases above, it's always 1.
<span class="definition-keyword">define</span> <span class="constant-syntax">BLK_FLAG_TRUNCMULT</span><span class="plain-syntax"> </span><span class="constant-syntax">0x00000010</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">Kinds::RunTime::emit_block_value_header</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">Kinds::RunTime::emit_block_value_header</span></span>:<br/><a href="13-rsfk.html#SP5">&#167;5</a><br/>Relations - <a href="7-rlt.html#SP15_1">&#167;15.1</a>, <a href="7-rlt.html#SP16">&#167;16</a><br/>List Constants - <a href="18-lc.html#SP12_1">&#167;12.1</a>, <a href="18-lc.html#SP13">&#167;13</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">individual</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">size</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Kinds::RunTime::emit_block_value_header</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">Kinds::RunTime::emit_block_value_header</span></span>:<br/><a href="13-rsfk.html#SP5">&#167;5</a><br/>Relations - <a href="7-rlt.html#SP9_1">&#167;9.1</a>, <a href="7-rlt.html#SP10">&#167;10</a><br/>List Constants - <a href="18-lc.html#SP12_1">&#167;12.1</a>, <a href="18-lc.html#SP13">&#167;13</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">individual</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">size</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">individual</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><a href="27-em.html#SP3" class="function-link"><span class="function-syntax">Emit::array_numeric_entry</span></a><span class="plain-syntax">(0);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="identifier-syntax">w</span><span class="plain-syntax"> = </span><span class="constant-syntax">4</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">TargetVMs::is_16_bit</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP5" class="function-link"><span class="function-syntax">Task::vm</span></a><span class="plain-syntax">())) </span><span class="identifier-syntax">w</span><span class="plain-syntax"> = </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
@ -1362,9 +1362,9 @@ but at present this can't happen.
</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><a href="6-lp.html#SP43" class="function-link"><span class="function-syntax">LiteralPatterns::list_of_literal_forms</span></a><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><a href="6-lp.html#SP37" class="function-link"><span class="function-syntax">LiteralPatterns::list_of_literal_forms</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><a href="6-lp.html#SP27" class="function-link"><span class="function-syntax">LiteralPatterns::printing_routine</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">printing_rule_name</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="6-lp.html#SP43" class="function-link"><span class="function-syntax">LiteralPatterns::list_of_literal_forms</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="6-lp.html#SP37" class="function-link"><span class="function-syntax">LiteralPatterns::list_of_literal_forms</span></a><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>
<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><a href="26-rt.html#SP1" class="function-link"><span class="function-syntax">Routines::begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">printing_rule_name</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">value_s</span><span class="plain-syntax"> = </span><a href="24-lv.html#SP11" class="function-link"><span class="function-syntax">LocalVariables::add_named_call_as_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"value"</span><span class="plain-syntax">);</span>

View file

@ -269,7 +269,7 @@ a value in a context where a particular kind of value is expected:
<span class="plain-syntax"> </span><a href="27-em.html#SP3" class="function-link"><span class="function-syntax">Emit::array_generic_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">v1</span><span class="plain-syntax">, </span><span class="identifier-syntax">v2</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">Specifications::Compiler::emit_as_val</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">Specifications::Compiler::emit_as_val</span></span>:<br/><a href="14-cfs.html#SP8">&#167;8</a><br/>Binary Predicates - <a href="7-bp.html#SP33">&#167;33</a><br/>Relations - <a href="7-rlt.html#SP30">&#167;30</a><br/>Terms - <a href="11-tr.html#SP10">&#167;10</a><br/>Deciding to Defer - <a href="12-dtd.html#SP7_1_2">&#167;7.1.2</a>, <a href="12-dtd.html#SP15">&#167;15</a>, <a href="12-dtd.html#SP17">&#167;17</a>, <a href="12-dtd.html#SP18">&#167;18</a>, <a href="12-dtd.html#SP19">&#167;19</a>, <a href="12-dtd.html#SP20">&#167;20</a>, <a href="12-dtd.html#SP22">&#167;22</a>, <a href="12-dtd.html#SP23">&#167;23</a>, <a href="12-dtd.html#SP25">&#167;25</a>, <a href="12-dtd.html#SP27">&#167;27</a><br/>Cinders and Deferrals - <a href="12-cad.html#SP3">&#167;3</a><br/>RValues - <a href="14-rv.html#SP24_3">&#167;24.3</a><br/>Lvalues - <a href="14-lv.html#SP14_3">&#167;14.3</a>, <a href="14-lv.html#SP14_3_2">&#167;14.3.2</a>, <a href="14-lv.html#SP14_4">&#167;14.4</a>, <a href="14-lv.html#SP14_5">&#167;14.5</a><br/>Conditions - <a href="14-cn.html#SP16">&#167;16</a>, <a href="14-cn.html#SP16_1">&#167;16.1</a>, <a href="14-cn.html#SP16_2">&#167;16.2</a><br/>Equations - <a href="20-eq.html#SP47">&#167;47</a><br/>Rules - <a href="21-rl.html#SP11_1">&#167;11.1</a><br/>Rule Bookings - <a href="21-rb.html#SP24_1_3">&#167;24.1.3</a><br/>Activities - <a href="21-ac.html#SP14">&#167;14</a><br/>Adjectives by Condition - <a href="23-abc.html#SP1">&#167;1</a><br/>Chronology - <a href="24-ch.html#SP7_4_1">&#167;7.4.1</a><br/>Compile Invocations As Calls - <a href="25-ciac.html#SP2">&#167;2</a><br/>Compile Invocations Inline - <a href="25-cii.html#SP3_1_1_4_9">&#167;3.1.1.4.9</a>, <a href="25-cii.html#SP3_1_1_4_10">&#167;3.1.1.4.10</a>, <a href="25-cii.html#SP8">&#167;8</a><br/>Compile Phrases - <a href="25-cp.html#SP5_3_5">&#167;5.3.5</a>, <a href="25-cp.html#SP5_3_5_1">&#167;5.3.5.1</a><br/>Internal Test Cases - <a href="26-itc.html#SP4">&#167;4</a>, <a href="26-itc.html#SP5">&#167;5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Specifications::Compiler::emit_as_val</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">Specifications::Compiler::emit_as_val</span></span>:<br/><a href="14-cfs.html#SP8">&#167;8</a><br/>Binary Predicates - <a href="7-bp.html#SP33">&#167;33</a><br/>Relations - <a href="7-rlt.html#SP24">&#167;24</a><br/>Terms - <a href="11-tr.html#SP10">&#167;10</a><br/>Deciding to Defer - <a href="12-dtd.html#SP7_1_2">&#167;7.1.2</a>, <a href="12-dtd.html#SP15">&#167;15</a>, <a href="12-dtd.html#SP17">&#167;17</a>, <a href="12-dtd.html#SP18">&#167;18</a>, <a href="12-dtd.html#SP19">&#167;19</a>, <a href="12-dtd.html#SP20">&#167;20</a>, <a href="12-dtd.html#SP22">&#167;22</a>, <a href="12-dtd.html#SP23">&#167;23</a>, <a href="12-dtd.html#SP25">&#167;25</a>, <a href="12-dtd.html#SP27">&#167;27</a><br/>Cinders and Deferrals - <a href="12-cad.html#SP3">&#167;3</a><br/>RValues - <a href="14-rv.html#SP24_3">&#167;24.3</a><br/>Lvalues - <a href="14-lv.html#SP14_3">&#167;14.3</a>, <a href="14-lv.html#SP14_3_2">&#167;14.3.2</a>, <a href="14-lv.html#SP14_4">&#167;14.4</a>, <a href="14-lv.html#SP14_5">&#167;14.5</a><br/>Conditions - <a href="14-cn.html#SP16">&#167;16</a>, <a href="14-cn.html#SP16_1">&#167;16.1</a>, <a href="14-cn.html#SP16_2">&#167;16.2</a><br/>Equations - <a href="20-eq.html#SP47">&#167;47</a><br/>Rules - <a href="21-rl.html#SP11_1">&#167;11.1</a><br/>Rule Bookings - <a href="21-rb.html#SP24_1_3">&#167;24.1.3</a><br/>Activities - <a href="21-ac.html#SP12">&#167;12</a><br/>Adjectives by Condition - <a href="23-abc.html#SP1">&#167;1</a><br/>Chronology - <a href="24-ch.html#SP7_4_1">&#167;7.4.1</a><br/>Compile Invocations As Calls - <a href="25-ciac.html#SP2">&#167;2</a><br/>Compile Invocations Inline - <a href="25-cii.html#SP3_1_1_4_9">&#167;3.1.1.4.9</a>, <a href="25-cii.html#SP3_1_1_4_10">&#167;3.1.1.4.10</a>, <a href="25-cii.html#SP8">&#167;8</a><br/>Compile Phrases - <a href="25-cp.html#SP5_3_5">&#167;5.3.5</a>, <a href="25-cp.html#SP5_3_5_1">&#167;5.3.5.1</a><br/>Internal Test Cases - <a href="26-itc.html#SP4">&#167;4</a>, <a href="26-itc.html#SP5">&#167;5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">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="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="14-cfs.html#SP6" class="function-link"><span class="function-syntax">Specifications::Compiler::compile_inner</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>

View file

@ -343,7 +343,7 @@ Inform; this bit of scruffy, rather than neat, logic will have to do.)
</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">Conditions::count</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">Conditions::count</span></span>:<br/><a href="14-cn.html#SP14">&#167;14</a><br/>Activities - <a href="21-ac.html#SP9">&#167;9</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">int</span><span class="plain-syntax"> </span><span class="function-syntax">Conditions::count</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">Conditions::count</span></span>:<br/><a href="14-cn.html#SP14">&#167;14</a><br/>Activities - <a href="21-ac.html#SP7">&#167;7</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="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><a href="8-ptu.html#SP12" class="function-link"><span class="function-syntax">ParseTreeUsage::is_condition</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">)) {</span>

View file

@ -258,7 +258,7 @@ a list. It's sometimes convenient to loop through this list:
<span class="plain-syntax"> </span><span class="identifier-syntax">au</span><span class="plain-syntax"> = </span><a href="11-pr.html#SP28" class="function-link"><span class="function-syntax">Calculus::Propositions::next_unary_predicate</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">au_prop</span><span class="plain-syntax">))</span>
</pre>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Descriptions::number_of_adjectives_applied_to</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">Descriptions::number_of_adjectives_applied_to</span></span>:<br/><a href="14-ds.html#SP7">&#167;7</a>, <a href="14-ds.html#SP12_3">&#167;12.3</a><br/>Refine Parse Tree - <a href="5-rpt.html#SP10_8_2_3_1">&#167;10.8.2.3.1</a>, <a href="5-rpt.html#SP10_8_2_5_1">&#167;10.8.2.5.1</a>, <a href="5-rpt.html#SP11">&#167;11</a>, <a href="5-rpt.html#SP11_3">&#167;11.3</a><br/>Property Knowledge - <a href="5-pk.html#SP3_2">&#167;3.2</a><br/>Deciding to Defer - <a href="12-dtd.html#SP18">&#167;18</a><br/>Dash - <a href="14-ds2.html#SP11_9_1_1_5_1_2">&#167;11.9.1.1.5.1.2</a><br/>Activities - <a href="21-ac.html#SP8">&#167;8</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">int</span><span class="plain-syntax"> </span><span class="function-syntax">Descriptions::number_of_adjectives_applied_to</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">Descriptions::number_of_adjectives_applied_to</span></span>:<br/><a href="14-ds.html#SP7">&#167;7</a>, <a href="14-ds.html#SP12_3">&#167;12.3</a><br/>Refine Parse Tree - <a href="5-rpt.html#SP10_8_2_3_1">&#167;10.8.2.3.1</a>, <a href="5-rpt.html#SP10_8_2_5_1">&#167;10.8.2.5.1</a>, <a href="5-rpt.html#SP11">&#167;11</a>, <a href="5-rpt.html#SP11_3">&#167;11.3</a><br/>Property Knowledge - <a href="5-pk.html#SP3_2">&#167;3.2</a><br/>Deciding to Defer - <a href="12-dtd.html#SP18">&#167;18</a><br/>Dash - <a href="14-ds2.html#SP11_9_1_1_5_1_2">&#167;11.9.1.1.5.1.2</a><br/>Activities - <a href="21-ac.html#SP6">&#167;6</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">return</span><span class="plain-syntax"> </span><a href="11-pr.html#SP25" class="function-link"><span class="function-syntax">Calculus::Propositions::count_unary_predicates</span></a><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><a href="14-ds.html#SP1" class="function-link"><span class="function-syntax">Descriptions::to_proposition</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">));</span>
<span class="plain-syntax">}</span>

View file

@ -4144,7 +4144,7 @@ only when resolving ambiguities, in (4A) above.
</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">Dash::validate_conditional_clause</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">Dash::validate_conditional_clause</span></span>:<br/>Relations - <a href="7-rlt.html#SP30">&#167;30</a><br/>Activities - <a href="21-ac.html#SP10_7">&#167;10.7</a><br/>Adjectives by Condition - <a href="23-abc.html#SP1">&#167;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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Dash::validate_conditional_clause</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">Dash::validate_conditional_clause</span></span>:<br/>Relations - <a href="7-rlt.html#SP24">&#167;24</a><br/>Activities - <a href="21-ac.html#SP8_7">&#167;8.7</a><br/>Adjectives by Condition - <a href="23-abc.html#SP1">&#167;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="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">ACTION_PATTERN_PARSING</span><span class="plain-syntax">, </span><span class="string-syntax">"Validating conditional clause: $P\n"</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">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">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">FALSE</span><span class="plain-syntax">;</span>
@ -4184,7 +4184,7 @@ into treating it as such.
<span class="plain-syntax"> </span><span class="identifier-syntax">ap_validation_suspended</span><span class="plain-syntax"> = </span><span class="identifier-syntax">state</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">Dash::validate_parameter</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">Dash::validate_parameter</span></span>:<br/>Type Expressions and Values - <a href="10-teav.html#SP23">&#167;23</a><br/>Activities - <a href="21-ac.html#SP10_5">&#167;10.5</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">K</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Dash::validate_parameter</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">Dash::validate_parameter</span></span>:<br/>Type Expressions and Values - <a href="10-teav.html#SP23">&#167;23</a><br/>Activities - <a href="21-ac.html#SP8_5">&#167;8.5</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">K</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">vts</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">kind_found</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">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>

View file

@ -100,7 +100,7 @@ pointers:
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_named_action_pattern</span><span class="plain-syntax">(</span><span class="identifier-syntax">named_action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) { </span><span class="identifier-syntax">CONV_FROM</span><span class="plain-syntax">(</span><span class="identifier-syntax">named_action_pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_nil</span><span class="plain-syntax">) }</span>
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_scene</span><span class="plain-syntax">(</span><span class="identifier-syntax">scene</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) { </span><span class="identifier-syntax">CONV_FROM</span><span class="plain-syntax">(</span><span class="identifier-syntax">scene</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_scene</span><span class="plain-syntax">) }</span>
<span class="plain-syntax">#</span><span class="identifier-syntax">endif</span>
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_activity</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Rvalues::from_activity</span></span>:<br/>The Creator - <a href="5-tc.html#SP5_4_2_5">&#167;5.4.2.5</a><br/>Activities - <a href="21-ac.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">activity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) { </span><span class="identifier-syntax">CONV_FROM</span><span class="plain-syntax">(</span><span class="reserved-syntax">activity</span><span class="plain-syntax">, </span><a href="21-ac.html#SP6" class="function-link"><span class="function-syntax">Activities::to_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">)) }</span>
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_activity</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Rvalues::from_activity</span></span>:<br/>The Creator - <a href="5-tc.html#SP5_4_2_5">&#167;5.4.2.5</a><br/>Activities - <a href="21-ac.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">activity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) { </span><span class="identifier-syntax">CONV_FROM</span><span class="plain-syntax">(</span><span class="reserved-syntax">activity</span><span class="plain-syntax">, </span><a href="21-ac.html#SP4" class="function-link"><span class="function-syntax">Activities::to_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">)) }</span>
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_binary_predicate</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">Rvalues::from_binary_predicate</span></span>:<br/>Binary Predicates - <a href="7-bp.html#SP28">&#167;28</a><br/>The Equality Relation - <a href="12-ter.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) { </span><span class="identifier-syntax">CONV_FROM</span><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax">, </span><span class="identifier-syntax">Kinds::base_construction</span><span class="plain-syntax">(</span><span class="identifier-syntax">CON_relation</span><span class="plain-syntax">)) }</span>
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_constant_phrase</span><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">Rvalues::from_constant_phrase</span></span>:<br/>Phrases as Values - <a href="22-pav.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">constant_phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) { </span><span class="identifier-syntax">CONV_FROM</span><span class="plain-syntax">(</span><span class="reserved-syntax">constant_phrase</span><span class="plain-syntax">, </span><span class="identifier-syntax">Kinds::base_construction</span><span class="plain-syntax">(</span><span class="identifier-syntax">CON_phrase</span><span class="plain-syntax">)) }</span>
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_equation</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">Rvalues::from_equation</span></span>:<br/>Type Expressions and Values - <a href="10-teav.html#SP12_1">&#167;12.1</a>, <a href="10-teav.html#SP12_3">&#167;12.3</a><br/>Equations - <a href="20-eq.html#SP9_1_3">&#167;9.1.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">equation</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) { </span><span class="identifier-syntax">CONV_FROM</span><span class="plain-syntax">(</span><span class="reserved-syntax">equation</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_equation</span><span class="plain-syntax">) }</span>
@ -129,7 +129,7 @@ pointers:
<span class="identifier-syntax">named_action_pattern</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_named_action_pattern</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">CONV_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">named_action_pattern</span><span class="plain-syntax">) }</span>
<span class="identifier-syntax">scene</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_scene</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">CONV_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">scene</span><span class="plain-syntax">) }</span>
<span class="plain-syntax">#</span><span class="identifier-syntax">endif</span>
<span class="reserved-syntax">activity</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_activity</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">Rvalues::to_activity</span></span>:<br/><a href="14-rv.html#SP20">&#167;20</a>, <a href="14-rv.html#SP24_3">&#167;24.3</a><br/>Make Assertions - <a href="5-ma.html#SP5_3_25_1">&#167;5.3.25.1</a><br/>Activities - <a href="21-ac.html#SP11">&#167;11</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">CONV_TO</span><span class="plain-syntax">(</span><span class="reserved-syntax">activity</span><span class="plain-syntax">) }</span>
<span class="reserved-syntax">activity</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_activity</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">Rvalues::to_activity</span></span>:<br/><a href="14-rv.html#SP20">&#167;20</a>, <a href="14-rv.html#SP24_3">&#167;24.3</a><br/>Make Assertions - <a href="5-ma.html#SP5_3_25_1">&#167;5.3.25.1</a><br/>Activities - <a href="21-ac.html#SP9">&#167;9</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">CONV_TO</span><span class="plain-syntax">(</span><span class="reserved-syntax">activity</span><span class="plain-syntax">) }</span>
<span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_binary_predicate</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">Rvalues::to_binary_predicate</span></span>:<br/><a href="14-rv.html#SP20">&#167;20</a>, <a href="14-rv.html#SP23_2">&#167;23.2</a>, <a href="14-rv.html#SP24_3">&#167;24.3</a><br/>Type Check Propositions - <a href="11-tcp.html#SP11_3">&#167;11.3</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">CONV_TO</span><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax">) }</span>
<span class="reserved-syntax">constant_phrase</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_constant_phrase</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">Rvalues::to_constant_phrase</span></span>:<br/><a href="14-rv.html#SP20">&#167;20</a>, <a href="14-rv.html#SP23_6">&#167;23.6</a>, <a href="14-rv.html#SP24_3">&#167;24.3</a><br/>Phrases as Values - <a href="22-pav.html#SP4">&#167;4</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">CONV_TO</span><span class="plain-syntax">(</span><span class="reserved-syntax">constant_phrase</span><span class="plain-syntax">) }</span>
<span class="reserved-syntax">equation</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_equation</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">Rvalues::to_equation</span></span>:<br/><a href="14-rv.html#SP24_3">&#167;24.3</a><br/>Type Expressions and Values - <a href="10-teav.html#SP12_2">&#167;12.2</a><br/>Compile Invocations Inline - <a href="25-cii.html#SP3_7_3">&#167;3.7.3</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">CONV_TO</span><span class="plain-syntax">(</span><span class="reserved-syntax">equation</span><span class="plain-syntax">) }</span>
@ -222,7 +222,7 @@ perhaps 24000, and the following turns that into an rvalue:
<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">Rvalues::to_encoded_notation</span><button class="popup" onclick="togglePopup('usagePopup36')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup36">Usage of <span class="code-font"><span class="function-syntax">Rvalues::to_encoded_notation</span></span>:<br/><a href="14-rv.html#SP20">&#167;20</a><br/>Literal Patterns - <a href="6-lp.html#SP34_4">&#167;34.4</a><br/>Measurement Adjectives - <a href="15-ma.html#SP8_2">&#167;8.2</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">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rvalues::to_encoded_notation</span><button class="popup" onclick="togglePopup('usagePopup36')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup36">Usage of <span class="code-font"><span class="function-syntax">Rvalues::to_encoded_notation</span></span>:<br/><a href="14-rv.html#SP20">&#167;20</a><br/>Literal Patterns - <a href="6-lp.html#SP31_3">&#167;31.3</a><br/>Measurement Adjectives - <a href="15-ma.html#SP8_2">&#167;8.2</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">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="constant-syntax">explicit_literal_ANNOT</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">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="constant-syntax">constant_number_ANNOT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
@ -233,7 +233,7 @@ annotation, not a pointer one.
</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">Rvalues::from_int</span><button class="popup" onclick="togglePopup('usagePopup37')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup37">Usage of <span class="code-font"><span class="function-syntax">Rvalues::from_int</span></span>:<br/>Relations - <a href="7-rlt.html#SP26_1">&#167;26.1</a><br/>Parse Literals - <a href="10-pl.html#SP1">&#167;1</a><br/>Instance Counting - <a href="16-ic.html#SP12_1">&#167;12.1</a>, <a href="16-ic.html#SP12_3_1">&#167;12.3.1</a>, <a href="16-ic.html#SP12_3_2">&#167;12.3.2</a><br/>Equations - <a href="20-eq.html#SP49_3_1">&#167;49.3.1</a><br/>Compile Invocations Inline - <a href="25-cii.html#SP3_5_4_1">&#167;3.5.4.1</a>, <a href="25-cii.html#SP3_7_2">&#167;3.7.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</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">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_int</span><button class="popup" onclick="togglePopup('usagePopup37')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup37">Usage of <span class="code-font"><span class="function-syntax">Rvalues::from_int</span></span>:<br/>Relations - <a href="7-rlt.html#SP20_1">&#167;20.1</a><br/>Parse Literals - <a href="10-pl.html#SP1">&#167;1</a><br/>Instance Counting - <a href="16-ic.html#SP12_1">&#167;12.1</a>, <a href="16-ic.html#SP12_3_1">&#167;12.3.1</a>, <a href="16-ic.html#SP12_3_2">&#167;12.3.2</a><br/>Equations - <a href="20-eq.html#SP49_3_1">&#167;49.3.1</a><br/>Compile Invocations Inline - <a href="25-cii.html#SP3_5_4_1">&#167;3.5.4.1</a>, <a href="25-cii.html#SP3_7_2">&#167;3.7.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</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">Node::new_with_words</span><span class="plain-syntax">(</span><span class="constant-syntax">CONSTANT_NT</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">Node::set_kind_of_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_number</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::write_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="constant-syntax">explicit_literal_ANNOT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
@ -415,14 +415,14 @@ in the proposition.
<p class="commentary firstcommentary"><a id="SP19"></a><b>&#167;19. Testing. </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">Rvalues::is_CONSTANT_construction</span><button class="popup" onclick="togglePopup('usagePopup50')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup50">Usage of <span class="code-font"><span class="function-syntax">Rvalues::is_CONSTANT_construction</span></span>:<br/><a href="14-rv.html#SP18">&#167;18</a>, <a href="14-rv.html#SP21">&#167;21</a>, <a href="14-rv.html#SP23">&#167;23</a><br/>The Creator - <a href="5-tc.html#SP4_5">&#167;4.5</a><br/>Make Assertions - <a href="5-ma.html#SP5_2">&#167;5.2</a>, <a href="5-ma.html#SP5_3_18">&#167;5.3.18</a>, <a href="5-ma.html#SP5_3_25">&#167;5.3.25</a>, <a href="5-ma.html#SP5_3_41">&#167;5.3.41</a>, <a href="5-ma.html#SP5_3_41_4">&#167;5.3.41.4</a>, <a href="5-ma.html#SP5_3_41_7">&#167;5.3.41.7</a><br/>Property Declarations - <a href="5-pd.html#SP5_11_1">&#167;5.11.1</a><br/>Constants and Descriptions - <a href="10-cad.html#SP3">&#167;3</a>, <a href="10-cad.html#SP5">&#167;5</a><br/>Propositions - <a href="11-pr.html#SP35_2">&#167;35.2</a><br/>Sentence Conversions - <a href="11-sc.html#SP3_3">&#167;3.3</a>, <a href="11-sc.html#SP3_6">&#167;3.6</a><br/>Simplifications - <a href="11-sm.html#SP17">&#167;17</a>, <a href="11-sm.html#SP18">&#167;18</a><br/>Deciding to Defer - <a href="12-dtd.html#SP18">&#167;18</a><br/>Specifications - <a href="14-sp.html#SP3">&#167;3</a><br/>Lvalues - <a href="14-lv.html#SP10">&#167;10</a><br/>Descriptions - <a href="14-ds.html#SP1">&#167;1</a>, <a href="14-ds.html#SP2">&#167;2</a><br/>Dash - <a href="14-ds2.html#SP10_1_1_3_1_3">&#167;10.1.1.3.1.3</a>, <a href="14-ds2.html#SP11_9_1_1_2_1">&#167;11.9.1.1.2.1</a>, <a href="14-ds2.html#SP11_9_1_1_3_1_1">&#167;11.9.1.1.3.1.1</a>, <a href="14-ds2.html#SP11_9_1_1_5_1">&#167;11.9.1.1.5.1</a>, <a href="14-ds2.html#SP11_9_1_1_5_1_2">&#167;11.9.1.1.5.1.2</a>, <a href="14-ds2.html#SP13">&#167;13</a>, <a href="14-ds2.html#SP19_3">&#167;19.3</a><br/>Properties - <a href="15-pr.html#SP5_2">&#167;5.2</a><br/>Rules - <a href="21-rl.html#SP6">&#167;6</a>, <a href="21-rl.html#SP27">&#167;27</a><br/>Activities - <a href="21-ac.html#SP11">&#167;11</a><br/>Phrases as Values - <a href="22-pav.html#SP4">&#167;4</a><br/>Local Variables - <a href="24-lv.html#SP34">&#167;34</a><br/>Compile Invocations Inline - <a href="25-cii.html#SP3_1_1_4_12">&#167;3.1.1.4.12</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_constructor</span><span class="plain-syntax"> *</span><span class="identifier-syntax">con</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rvalues::is_CONSTANT_construction</span><button class="popup" onclick="togglePopup('usagePopup50')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup50">Usage of <span class="code-font"><span class="function-syntax">Rvalues::is_CONSTANT_construction</span></span>:<br/><a href="14-rv.html#SP18">&#167;18</a>, <a href="14-rv.html#SP21">&#167;21</a>, <a href="14-rv.html#SP23">&#167;23</a><br/>The Creator - <a href="5-tc.html#SP4_5">&#167;4.5</a><br/>Make Assertions - <a href="5-ma.html#SP5_2">&#167;5.2</a>, <a href="5-ma.html#SP5_3_18">&#167;5.3.18</a>, <a href="5-ma.html#SP5_3_25">&#167;5.3.25</a>, <a href="5-ma.html#SP5_3_41">&#167;5.3.41</a>, <a href="5-ma.html#SP5_3_41_4">&#167;5.3.41.4</a>, <a href="5-ma.html#SP5_3_41_7">&#167;5.3.41.7</a><br/>Property Declarations - <a href="5-pd.html#SP5_11_1">&#167;5.11.1</a><br/>Constants and Descriptions - <a href="10-cad.html#SP3">&#167;3</a>, <a href="10-cad.html#SP5">&#167;5</a><br/>Propositions - <a href="11-pr.html#SP35_2">&#167;35.2</a><br/>Sentence Conversions - <a href="11-sc.html#SP3_3">&#167;3.3</a>, <a href="11-sc.html#SP3_6">&#167;3.6</a><br/>Simplifications - <a href="11-sm.html#SP17">&#167;17</a>, <a href="11-sm.html#SP18">&#167;18</a><br/>Deciding to Defer - <a href="12-dtd.html#SP18">&#167;18</a><br/>Specifications - <a href="14-sp.html#SP3">&#167;3</a><br/>Lvalues - <a href="14-lv.html#SP10">&#167;10</a><br/>Descriptions - <a href="14-ds.html#SP1">&#167;1</a>, <a href="14-ds.html#SP2">&#167;2</a><br/>Dash - <a href="14-ds2.html#SP10_1_1_3_1_3">&#167;10.1.1.3.1.3</a>, <a href="14-ds2.html#SP11_9_1_1_2_1">&#167;11.9.1.1.2.1</a>, <a href="14-ds2.html#SP11_9_1_1_3_1_1">&#167;11.9.1.1.3.1.1</a>, <a href="14-ds2.html#SP11_9_1_1_5_1">&#167;11.9.1.1.5.1</a>, <a href="14-ds2.html#SP11_9_1_1_5_1_2">&#167;11.9.1.1.5.1.2</a>, <a href="14-ds2.html#SP13">&#167;13</a>, <a href="14-ds2.html#SP19_3">&#167;19.3</a><br/>Properties - <a href="15-pr.html#SP5_2">&#167;5.2</a><br/>Rules - <a href="21-rl.html#SP6">&#167;6</a>, <a href="21-rl.html#SP27">&#167;27</a><br/>Activities - <a href="21-ac.html#SP9">&#167;9</a><br/>Phrases as Values - <a href="22-pav.html#SP4">&#167;4</a><br/>Local Variables - <a href="24-lv.html#SP34">&#167;34</a><br/>Compile Invocations Inline - <a href="25-cii.html#SP3_1_1_4_12">&#167;3.1.1.4.12</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_constructor</span><span class="plain-syntax"> *</span><span class="identifier-syntax">con</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="constant-syntax">CONSTANT_NT</span><span class="plain-syntax">)) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::get_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_kind_of_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">)) == </span><span class="identifier-syntax">con</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rvalues::is_CONSTANT_of_kind</span><button class="popup" onclick="togglePopup('usagePopup51')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup51">Usage of <span class="code-font"><span class="function-syntax">Rvalues::is_CONSTANT_of_kind</span></span>:<br/><a href="14-rv.html#SP9">&#167;9</a>, <a href="14-rv.html#SP10">&#167;10</a>, <a href="14-rv.html#SP11">&#167;11</a>, <a href="14-rv.html#SP12">&#167;12</a><br/>New Use Option Requests - <a href="4-nuor.html#SP4">&#167;4</a><br/>Define by Table Requests - <a href="4-dbtr.html#SP5_1">&#167;5.1</a><br/>Refine Parse Tree - <a href="5-rpt.html#SP15">&#167;15</a><br/>The Creator - <a href="5-tc.html#SP2">&#167;2</a><br/>Make Assertions - <a href="5-ma.html#SP5_3_26_1_1">&#167;5.3.26.1.1</a>, <a href="5-ma.html#SP5_3_41_6">&#167;5.3.41.6</a><br/>Literal Patterns - <a href="6-lp.html#SP34_4">&#167;34.4</a><br/>Architecture of the S-Parser - <a href="10-aots.html#SP10">&#167;10</a><br/>Constants and Descriptions - <a href="10-cad.html#SP3">&#167;3</a>, <a href="10-cad.html#SP5">&#167;5</a><br/>Type Expressions and Values - <a href="10-teav.html#SP12_2">&#167;12.2</a><br/>Conditions and Phrases - <a href="10-cap.html#SP12_1">&#167;12.1</a><br/>I6 Schemas - <a href="12-is.html#SP7_1">&#167;7.1</a><br/>Dash - <a href="14-ds2.html#SP17">&#167;17</a>, <a href="14-ds2.html#SP19_5_2">&#167;19.5.2</a><br/>Responses - <a href="17-rs.html#SP11">&#167;11</a><br/>Focus and Outcome - <a href="21-fao.html#SP9">&#167;9</a>, <a href="21-fao.html#SP10">&#167;10</a><br/>Compile Invocations - <a href="25-ci.html#SP4_2">&#167;4.2</a><br/>Compile Invocations Inline - <a href="25-cii.html#SP3_1_1_4_6">&#167;3.1.1.4.6</a>, <a href="25-cii.html#SP3_1_1_4_9">&#167;3.1.1.4.9</a>, <a href="25-cii.html#SP3_1_1_4_10">&#167;3.1.1.4.10</a>, <a href="25-cii.html#SP3_5_8_1">&#167;3.5.8.1</a>, <a href="25-cii.html#SP3_7_3">&#167;3.7.3</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">K</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rvalues::is_CONSTANT_of_kind</span><button class="popup" onclick="togglePopup('usagePopup51')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup51">Usage of <span class="code-font"><span class="function-syntax">Rvalues::is_CONSTANT_of_kind</span></span>:<br/><a href="14-rv.html#SP9">&#167;9</a>, <a href="14-rv.html#SP10">&#167;10</a>, <a href="14-rv.html#SP11">&#167;11</a>, <a href="14-rv.html#SP12">&#167;12</a><br/>New Use Option Requests - <a href="4-nuor.html#SP4">&#167;4</a><br/>Define by Table Requests - <a href="4-dbtr.html#SP5_1">&#167;5.1</a><br/>Refine Parse Tree - <a href="5-rpt.html#SP15">&#167;15</a><br/>The Creator - <a href="5-tc.html#SP2">&#167;2</a><br/>Make Assertions - <a href="5-ma.html#SP5_3_26_1_1">&#167;5.3.26.1.1</a>, <a href="5-ma.html#SP5_3_41_6">&#167;5.3.41.6</a><br/>Literal Patterns - <a href="6-lp.html#SP31_3">&#167;31.3</a><br/>Architecture of the S-Parser - <a href="10-aots.html#SP10">&#167;10</a><br/>Constants and Descriptions - <a href="10-cad.html#SP3">&#167;3</a>, <a href="10-cad.html#SP5">&#167;5</a><br/>Type Expressions and Values - <a href="10-teav.html#SP12_2">&#167;12.2</a><br/>Conditions and Phrases - <a href="10-cap.html#SP12_1">&#167;12.1</a><br/>I6 Schemas - <a href="12-is.html#SP7_1">&#167;7.1</a><br/>Dash - <a href="14-ds2.html#SP17">&#167;17</a>, <a href="14-ds2.html#SP19_5_2">&#167;19.5.2</a><br/>Responses - <a href="17-rs.html#SP11">&#167;11</a><br/>Focus and Outcome - <a href="21-fao.html#SP9">&#167;9</a>, <a href="21-fao.html#SP10">&#167;10</a><br/>Compile Invocations - <a href="25-ci.html#SP4_2">&#167;4.2</a><br/>Compile Invocations Inline - <a href="25-cii.html#SP3_1_1_4_6">&#167;3.1.1.4.6</a>, <a href="25-cii.html#SP3_1_1_4_9">&#167;3.1.1.4.9</a>, <a href="25-cii.html#SP3_1_1_4_10">&#167;3.1.1.4.10</a>, <a href="25-cii.html#SP3_5_8_1">&#167;3.5.8.1</a>, <a href="25-cii.html#SP3_7_3">&#167;3.7.3</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">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">Node::is</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="constant-syntax">CONSTANT_NT</span><span class="plain-syntax">)) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::Compare::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_kind_of_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
@ -560,7 +560,7 @@ result have?
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_kind</span><button class="popup" onclick="togglePopup('usagePopup55')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup55">Usage of <span class="code-font"><span class="function-syntax">Rvalues::to_kind</span></span>:<br/>Literal Patterns - <a href="6-lp.html#SP34_5">&#167;34.5</a><br/>Adjective Meanings - <a href="7-am.html#SP26">&#167;26</a><br/>Simplifications - <a href="11-sm.html#SP10_4">&#167;10.4</a><br/>Specifications - <a href="14-sp.html#SP1">&#167;1</a><br/>Lvalues - <a href="14-lv.html#SP12">&#167;12</a><br/>Measurement Adjectives - <a href="15-ma.html#SP8_2">&#167;8.2</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="function-syntax">Rvalues::to_kind</span><button class="popup" onclick="togglePopup('usagePopup55')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup55">Usage of <span class="code-font"><span class="function-syntax">Rvalues::to_kind</span></span>:<br/>Literal Patterns - <a href="6-lp.html#SP31_4">&#167;31.4</a><br/>Adjective Meanings - <a href="7-am.html#SP26">&#167;26</a><br/>Simplifications - <a href="11-sm.html#SP10_4">&#167;10.4</a><br/>Specifications - <a href="14-sp.html#SP1">&#167;1</a><br/>Lvalues - <a href="14-lv.html#SP12">&#167;12</a><br/>Measurement Adjectives - <a href="15-ma.html#SP8_2">&#167;8.2</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="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"Rvalues::to_kind on NULL"</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">Node::get_type</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">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CONSTANT_NT:</span>
@ -770,7 +770,7 @@ kinds of value:
<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">Kinds::get_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">kind_of_constant</span><span class="plain-syntax">) == </span><span class="identifier-syntax">CON_activity</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">activity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">act</span><span class="plain-syntax"> = </span><a href="14-rv.html#SP2" class="function-link"><span class="function-syntax">Rvalues::to_activity</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec_found</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><a href="21-ac.html#SP9" class="function-link"><span class="function-syntax">Activities::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">act</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><a href="21-ac.html#SP7" class="function-link"><span class="function-syntax">Activities::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">act</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">N</span><span class="plain-syntax">) </span><a href="27-em.html#SP4" class="function-link"><span class="function-syntax">Emit::holster</span></a><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">return</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>

File diff suppressed because one or more lines are too long

View file

@ -565,7 +565,7 @@ sake:
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::is_shown_in_index</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">Properties::is_shown_in_index</span></span>:<br/>Extension Files - <a href="9-ef.html#SP9_9">&#167;9.9</a><br/>Inferences - <a href="16-in.html#SP16">&#167;16</a>, <a href="16-in.html#SP17">&#167;17</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">include_in_index</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">Properties::exclude_from_index</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">Properties::exclude_from_index</span></span>:<br/><a href="15-pr.html#SP5">&#167;5</a><br/>Relations - <a href="7-rlt.html#SP9_3_8">&#167;9.3.8</a><br/>Either-Or Properties - <a href="15-ep.html#SP4">&#167;4</a><br/>Valued Properties - <a href="15-vp.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::exclude_from_index</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">Properties::exclude_from_index</span></span>:<br/><a href="15-pr.html#SP5">&#167;5</a><br/>Relations - <a href="7-rlt.html#SP4_1_4">&#167;4.1.4</a><br/>Either-Or Properties - <a href="15-ep.html#SP4">&#167;4</a><br/>Valued Properties - <a href="15-vp.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">include_in_index</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
@ -814,7 +814,7 @@ we find it, we compile it and return <span class="extract"><span class="extract-
<p class="commentary firstcommentary"><a id="SP27"></a><b>&#167;27. Emitting to Inter. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Properties::iname</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">Properties::iname</span></span>:<br/><a href="15-pr.html#SP21">&#167;21</a>, <a href="15-pr.html#SP22_1">&#167;22.1</a><br/>Instances - <a href="6-ins.html#SP38_3">&#167;38.3</a><br/>Relations - <a href="7-rlt.html#SP9_3_8">&#167;9.3.8</a>, <a href="7-rlt.html#SP15_1_3">&#167;15.1.3</a><br/>The Equality Relation - <a href="12-ter.html#SP8_1">&#167;8.1</a><br/>Deciding to Defer - <a href="12-dtd.html#SP19">&#167;19</a>, <a href="12-dtd.html#SP22">&#167;22</a><br/>Compile Deferred Propositions - <a href="12-cdp.html#SP2_1_6_1_2_2_5">&#167;2.1.6.1.2.2.5</a>, <a href="12-cdp.html#SP2_1_6_1_2_2_6_1">&#167;2.1.6.1.2.2.6.1</a><br/>RValues - <a href="14-rv.html#SP24_3_1">&#167;24.3.1</a><br/>Either-Or Properties - <a href="15-ep.html#SP15_1">&#167;15.1</a>, <a href="15-ep.html#SP15_2">&#167;15.2</a><br/>Measurement Adjectives - <a href="15-ma.html#SP14_1">&#167;14.1</a><br/>Comparative Relations - <a href="15-cr.html#SP7_1">&#167;7.1</a><br/>Same Property Relation - <a href="15-spr.html#SP2">&#167;2</a><br/>Setting Property Relation - <a href="15-spr2.html#SP8">&#167;8</a>, <a href="15-spr2.html#SP11">&#167;11</a><br/>Emit Property Values - <a href="15-epv.html#SP4">&#167;4</a><br/>Instance Counting - <a href="16-ic.html#SP13">&#167;13</a><br/>Compile Invocations Inline - <a href="25-cii.html#SP8">&#167;8</a><br/>Emitting Inter - <a href="27-em.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Properties::iname</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">Properties::iname</span></span>:<br/><a href="15-pr.html#SP21">&#167;21</a>, <a href="15-pr.html#SP22_1">&#167;22.1</a><br/>Instances - <a href="6-ins.html#SP38_3">&#167;38.3</a><br/>Relations - <a href="7-rlt.html#SP4_1_4">&#167;4.1.4</a>, <a href="7-rlt.html#SP9_1_3">&#167;9.1.3</a><br/>The Equality Relation - <a href="12-ter.html#SP8_1">&#167;8.1</a><br/>Deciding to Defer - <a href="12-dtd.html#SP19">&#167;19</a>, <a href="12-dtd.html#SP22">&#167;22</a><br/>Compile Deferred Propositions - <a href="12-cdp.html#SP2_1_6_1_2_2_5">&#167;2.1.6.1.2.2.5</a>, <a href="12-cdp.html#SP2_1_6_1_2_2_6_1">&#167;2.1.6.1.2.2.6.1</a><br/>RValues - <a href="14-rv.html#SP24_3_1">&#167;24.3.1</a><br/>Either-Or Properties - <a href="15-ep.html#SP15_1">&#167;15.1</a>, <a href="15-ep.html#SP15_2">&#167;15.2</a><br/>Measurement Adjectives - <a href="15-ma.html#SP14_1">&#167;14.1</a><br/>Comparative Relations - <a href="15-cr.html#SP7_1">&#167;7.1</a><br/>Same Property Relation - <a href="15-spr.html#SP2">&#167;2</a><br/>Setting Property Relation - <a href="15-spr2.html#SP8">&#167;8</a>, <a href="15-spr2.html#SP11">&#167;11</a><br/>Emit Property Values - <a href="15-epv.html#SP4">&#167;4</a><br/>Instance Counting - <a href="16-ic.html#SP13">&#167;13</a><br/>Compile Invocations Inline - <a href="25-cii.html#SP8">&#167;8</a><br/>Emitting Inter - <a href="27-em.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">prn</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">"tried to find iname for null property"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="15-pr.html#SP16" class="function-link"><span class="function-syntax">Properties::is_either_or</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">)) &amp;&amp; (</span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">stored_in_negation</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="15-pr.html#SP27" class="function-link"><span class="function-syntax">Properties::iname</span></a><span class="plain-syntax">(</span><a href="15-ep.html#SP6" class="function-link"><span class="function-syntax">Properties::EitherOr::get_negation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">));</span>

View file

@ -83,7 +83,7 @@ possibility by widening the kind, when this can be done.)
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="function-syntax">Properties::Valued::obtain_within_kind</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Properties::Valued::obtain_within_kind</span></span>:<br/>Relations - <a href="7-rlt.html#SP9_3_8">&#167;9.3.8</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">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="function-syntax">Properties::Valued::obtain_within_kind</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Properties::Valued::obtain_within_kind</span></span>:<br/>Relations - <a href="7-rlt.html#SP4_1_4">&#167;4.1.4</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">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">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</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">K</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Kinds::weaken</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
@ -187,7 +187,7 @@ to the end user.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">property_value_kind</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">Properties::Valued::set_kind</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">Properties::Valued::set_kind</span></span>:<br/><a href="15-vp.html#SP6">&#167;6</a><br/>Define by Table Requests - <a href="4-dbtr.html#SP4_2_1">&#167;4.2.1</a><br/>Property Declarations - <a href="5-pd.html#SP7_1">&#167;7.1</a><br/>Relations - <a href="7-rlt.html#SP9_3_8">&#167;9.3.8</a>, <a href="7-rlt.html#SP9_12">&#167;9.12</a><br/>Properties - <a href="15-pr.html#SP5_6">&#167;5.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Valued::set_kind</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">Properties::Valued::set_kind</span></span>:<br/><a href="15-vp.html#SP6">&#167;6</a><br/>Define by Table Requests - <a href="4-dbtr.html#SP4_2_1">&#167;4.2.1</a><br/>Property Declarations - <a href="5-pd.html#SP7_1">&#167;7.1</a><br/>Relations - <a href="7-rlt.html#SP4_1_4">&#167;4.1.4</a>, <a href="7-rlt.html#SP4_10">&#167;4.10</a><br/>Properties - <a href="15-pr.html#SP5_6">&#167;5.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</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">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"tried to set null 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">prn</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">either_or</span><span class="plain-syntax">)) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"non-value property"</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::Behaviour::definite</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">) &amp;&amp; (</span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">do_not_compile</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)) {</span>
@ -250,7 +250,7 @@ then say that a thing has a weight: that makes a property also called
</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">Properties::Valued::set_stored_relation</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">Properties::Valued::set_stored_relation</span></span>:<br/>Relations - <a href="7-rlt.html#SP9">&#167;9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Valued::set_stored_relation</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">Properties::Valued::set_stored_relation</span></span>:<br/>Relations - <a href="7-rlt.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</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">prn</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">either_or</span><span class="plain-syntax">)) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"non-value property"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">stored_bp</span><span class="plain-syntax"> = </span><span class="identifier-syntax">bp</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -269,7 +269,7 @@ all to work; the following keep a flag to mark 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">Properties::Valued::now_used_for_non_typesafe_relation</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">Properties::Valued::now_used_for_non_typesafe_relation</span></span>:<br/>Relations - <a href="7-rlt.html#SP9_3_8">&#167;9.3.8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Valued::now_used_for_non_typesafe_relation</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">Properties::Valued::now_used_for_non_typesafe_relation</span></span>:<br/>Relations - <a href="7-rlt.html#SP4_1_4">&#167;4.1.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">either_or</span><span class="plain-syntax">)) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"non-value property"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">used_for_non_typesafe_relation</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -282,7 +282,7 @@ all to work; the following keep a flag to mark that.
<p class="commentary firstcommentary"><a id="SP10"></a><b>&#167;10. Assertion. </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">Properties::Valued::assert</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">Properties::Valued::assert</span></span>:<br/>The Creator - <a href="5-tc.html#SP5_4_1_1">&#167;5.4.1.1</a><br/>Relations - <a href="7-rlt.html#SP26_1">&#167;26.1</a><br/>Indefinite Appearance - <a href="15-ia.html#SP1">&#167;1</a>, <a href="15-ia.html#SP2">&#167;2</a><br/>Instance Counting - <a href="16-ic.html#SP12_1">&#167;12.1</a>, <a href="16-ic.html#SP12_3_1">&#167;12.3.1</a>, <a href="16-ic.html#SP12_3_2">&#167;12.3.2</a>, <a href="16-ic.html#SP12_3_3">&#167;12.3.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">owner</span><span class="plain-syntax">,</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Valued::assert</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">Properties::Valued::assert</span></span>:<br/>The Creator - <a href="5-tc.html#SP5_4_1_1">&#167;5.4.1.1</a><br/>Relations - <a href="7-rlt.html#SP20_1">&#167;20.1</a><br/>Indefinite Appearance - <a href="15-ia.html#SP1">&#167;1</a>, <a href="15-ia.html#SP2">&#167;2</a><br/>Instance Counting - <a href="16-ic.html#SP12_1">&#167;12.1</a>, <a href="16-ic.html#SP12_3_1">&#167;12.3.1</a>, <a href="16-ic.html#SP12_3_2">&#167;12.3.2</a>, <a href="16-ic.html#SP12_3_3">&#167;12.3.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">owner</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">val</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">certainty</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><a href="11-tc.html#SP4" class="function-link"><span class="function-syntax">Calculus::Propositions::Abstract::to_set_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="12-ap.html#SP5" class="function-link"><span class="function-syntax">Calculus::Propositions::Assert::assert_true_about</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">owner</span><span class="plain-syntax">, </span><span class="identifier-syntax">certainty</span><span class="plain-syntax">);</span>

View file

@ -461,7 +461,7 @@ records the next instance in compilation order:
<p class="commentary firstcommentary"><a id="SP13"></a><b>&#167;13. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Counting::instance_count_property_symbol</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::Counting::instance_count_property_symbol</span></span>:<br/>Relations - <a href="7-rlt.html#SP20_2">&#167;20.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Counting::instance_count_property_symbol</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::Counting::instance_count_property_symbol</span></span>:<br/>Relations - <a href="7-rlt.html#SP14_2">&#167;14.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::Compare::lt</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax"> = </span><a href="13-kak.html#SP1" class="function-link"><span class="function-syntax">Kinds::Knowledge::as_subject</span></a><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">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PF_S</span><span class="plain-syntax">(</span><span class="identifier-syntax">counting</span><span class="plain-syntax">, </span><span class="identifier-syntax">subj</span><span class="plain-syntax">)-&gt;</span><span class="element-syntax">instance_count_prop</span><span class="plain-syntax">;</span>

View file

@ -160,7 +160,7 @@ organised as linked lists; hence 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">inference</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure inference is accessed in 3/ptmn, 3/cs, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 4/tr2, 4/dbtr, 4/rpr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 19/tb, 19/rsft, 20/eq, 21/rl, 21/rl2, 21/fao, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 27/cm and here.</li></ul>
<ul class="endnotetexts"><li>The structure inference is accessed in 3/ptmn, 3/cs, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 4/tr2, 4/dbtr, 4/rpr, 4/nar, 4/nlpr, 4/nrr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 19/tb, 19/rsft, 20/eq, 21/rl, 21/rl2, 21/fao, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 27/cm and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP7"></a><b>&#167;7. Creation. </b>The following routine coins a newly minted inference which is not yet attached
to any subject: but it will not stay unattached for long. Note that if nothing
has been said about likelihood, the sentence is assumed to be factually certain.
@ -280,11 +280,11 @@ allow them to be read.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">inference_type</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">World::Inferences::where_inferred</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">World::Inferences::where_inferred</span></span>:<br/><a href="16-in.html#SP14">&#167;14</a><br/>Supplementary Issues - <a href="2-si.html#SP9">&#167;9</a><br/>Nonlocal Variables - <a href="6-nv.html#SP17">&#167;17</a><br/>Relations - <a href="7-rlt.html#SP28">&#167;28</a><br/>Properties - <a href="15-pr.html#SP26">&#167;26</a><br/>Indefinite Appearance - <a href="15-ia.html#SP1_1">&#167;1.1</a>, <a href="15-ia.html#SP2">&#167;2</a><br/>Emit Property Values - <a href="15-epv.html#SP1_1_3">&#167;1.1.3</a><br/>Complete Model World - <a href="16-cmw.html#SP1_2_2_1_1_1">&#167;1.2.2.1.1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">World::Inferences::where_inferred</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">World::Inferences::where_inferred</span></span>:<br/><a href="16-in.html#SP14">&#167;14</a><br/>Supplementary Issues - <a href="2-si.html#SP9">&#167;9</a><br/>Nonlocal Variables - <a href="6-nv.html#SP17">&#167;17</a><br/>Relations - <a href="7-rlt.html#SP22">&#167;22</a><br/>Properties - <a href="15-pr.html#SP26">&#167;26</a><br/>Indefinite Appearance - <a href="15-ia.html#SP1_1">&#167;1.1</a>, <a href="15-ia.html#SP2">&#167;2</a><br/>Emit Property Values - <a href="15-epv.html#SP1_1_3">&#167;1.1.3</a><br/>Complete Model World - <a href="16-cmw.html#SP1_2_2_1_1_1">&#167;1.2.2.1.1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference</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="identifier-syntax">i</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">inferred_from</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">World::Inferences::get_certainty</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">World::Inferences::get_certainty</span></span>:<br/><a href="16-in.html#SP14">&#167;14</a><br/>Implications - <a href="5-imp.html#SP6">&#167;6</a>, <a href="5-imp.html#SP6_1">&#167;6.1</a><br/>Relations - <a href="7-rlt.html#SP28">&#167;28</a><br/>Properties - <a href="15-pr.html#SP26">&#167;26</a><br/>Complete Model World - <a href="16-cmw.html#SP1_2_2">&#167;1.2.2</a>, <a href="16-cmw.html#SP1_2_2_1_1">&#167;1.2.2.1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">World::Inferences::get_certainty</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">World::Inferences::get_certainty</span></span>:<br/><a href="16-in.html#SP14">&#167;14</a><br/>Implications - <a href="5-imp.html#SP6">&#167;6</a>, <a href="5-imp.html#SP6_1">&#167;6.1</a><br/>Relations - <a href="7-rlt.html#SP22">&#167;22</a><br/>Properties - <a href="15-pr.html#SP26">&#167;26</a><br/>Complete Model World - <a href="16-cmw.html#SP1_2_2">&#167;1.2.2</a>, <a href="16-cmw.html#SP1_2_2_1_1">&#167;1.2.2.1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference</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="identifier-syntax">i</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">certainty</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -296,11 +296,11 @@ allow them to be read.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">added_in_construction</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="function-syntax">World::Inferences::get_property</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">World::Inferences::get_property</span></span>:<br/><a href="16-in.html#SP14">&#167;14</a>, <a href="16-in.html#SP15">&#167;15</a><br/>Supplementary Issues - <a href="2-si.html#SP9">&#167;9</a><br/>Implications - <a href="5-imp.html#SP6">&#167;6</a><br/>Nonlocal Variables - <a href="6-nv.html#SP17">&#167;17</a>, <a href="6-nv.html#SP21">&#167;21</a><br/>Relations - <a href="7-rlt.html#SP28">&#167;28</a><br/>Properties - <a href="15-pr.html#SP26">&#167;26</a><br/>Indefinite Appearance - <a href="15-ia.html#SP1">&#167;1</a>, <a href="15-ia.html#SP2">&#167;2</a><br/>Emit Property Values - <a href="15-epv.html#SP1_1_3">&#167;1.1.3</a><br/>Complete Model World - <a href="16-cmw.html#SP1_2_1">&#167;1.2.1</a>, <a href="16-cmw.html#SP1_2_2">&#167;1.2.2</a>, <a href="16-cmw.html#SP1_2_2_1">&#167;1.2.2.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="function-syntax">World::Inferences::get_property</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">World::Inferences::get_property</span></span>:<br/><a href="16-in.html#SP14">&#167;14</a>, <a href="16-in.html#SP15">&#167;15</a><br/>Supplementary Issues - <a href="2-si.html#SP9">&#167;9</a><br/>Implications - <a href="5-imp.html#SP6">&#167;6</a><br/>Nonlocal Variables - <a href="6-nv.html#SP17">&#167;17</a>, <a href="6-nv.html#SP21">&#167;21</a><br/>Relations - <a href="7-rlt.html#SP22">&#167;22</a><br/>Properties - <a href="15-pr.html#SP26">&#167;26</a><br/>Indefinite Appearance - <a href="15-ia.html#SP1">&#167;1</a>, <a href="15-ia.html#SP2">&#167;2</a><br/>Emit Property Values - <a href="15-epv.html#SP1_1_3">&#167;1.1.3</a><br/>Complete Model World - <a href="16-cmw.html#SP1_2_1">&#167;1.2.1</a>, <a href="16-cmw.html#SP1_2_2">&#167;1.2.2</a>, <a href="16-cmw.html#SP1_2_2_1">&#167;1.2.2.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference</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="identifier-syntax">i</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">inferred_property</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">World::Inferences::get_property_value</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">World::Inferences::get_property_value</span></span>:<br/><a href="16-in.html#SP14">&#167;14</a>, <a href="16-in.html#SP15">&#167;15</a><br/>Nonlocal Variables - <a href="6-nv.html#SP17">&#167;17</a><br/>Relations - <a href="7-rlt.html#SP28">&#167;28</a><br/>Properties - <a href="15-pr.html#SP26">&#167;26</a><br/>Indefinite Appearance - <a href="15-ia.html#SP2">&#167;2</a><br/>Complete Model World - <a href="16-cmw.html#SP1_2_2_1_1">&#167;1.2.2.1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">World::Inferences::get_property_value</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">World::Inferences::get_property_value</span></span>:<br/><a href="16-in.html#SP14">&#167;14</a>, <a href="16-in.html#SP15">&#167;15</a><br/>Nonlocal Variables - <a href="6-nv.html#SP17">&#167;17</a><br/>Relations - <a href="7-rlt.html#SP22">&#167;22</a><br/>Properties - <a href="15-pr.html#SP26">&#167;26</a><br/>Indefinite Appearance - <a href="15-ia.html#SP2">&#167;2</a><br/>Complete Model World - <a href="16-cmw.html#SP1_2_2_1_1">&#167;1.2.2.1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference</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="identifier-syntax">i</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">inferred_property_value</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -315,12 +315,12 @@ way to extract just reference 1 in object form.
</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">World::Inferences::get_references</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">World::Inferences::get_references</span></span>:<br/>Binary Predicates - <a href="7-bp.html#SP33">&#167;33</a><br/>Relations - <a href="7-rlt.html#SP20_5_1">&#167;20.5.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</span><span class="plain-syntax">,</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">World::Inferences::get_references</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">World::Inferences::get_references</span></span>:<br/>Binary Predicates - <a href="7-bp.html#SP33">&#167;33</a><br/>Relations - <a href="7-rlt.html#SP14_5_1">&#167;14.5.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference</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">inference_subject</span><span class="plain-syntax"> **</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> **</span><span class="identifier-syntax">infs2</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">infs1</span><span class="plain-syntax">) *</span><span class="identifier-syntax">infs1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">i</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">infs_ref1</span><span class="plain-syntax">; </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">infs2</span><span class="plain-syntax">) *</span><span class="identifier-syntax">infs2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">i</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">infs_ref2</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">World::Inferences::get_references_spec</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">World::Inferences::get_references_spec</span></span>:<br/>Binary Predicates - <a href="7-bp.html#SP33">&#167;33</a><br/>Relations - <a href="7-rlt.html#SP28">&#167;28</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</span><span class="plain-syntax">,</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">World::Inferences::get_references_spec</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">World::Inferences::get_references_spec</span></span>:<br/>Binary Predicates - <a href="7-bp.html#SP33">&#167;33</a><br/>Relations - <a href="7-rlt.html#SP22">&#167;22</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference</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">parse_node</span><span class="plain-syntax"> **</span><span class="identifier-syntax">spec1</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="plain-syntax"> *</span><span class="identifier-syntax">spec1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">i</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">spec_ref1</span><span class="plain-syntax">; *</span><span class="identifier-syntax">spec2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">i</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">spec_ref2</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>

View file

@ -323,7 +323,7 @@ This makes testing for containment simple:
<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">int</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::is_strictly_within</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">InferenceSubjects::is_strictly_within</span></span>:<br/>Adjective Meanings - <a href="7-am.html#SP27">&#167;27</a><br/>Relations - <a href="7-rlt.html#SP20_4">&#167;20.4</a><br/>Knowledge about Kinds - <a href="13-kak.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">larger</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::is_strictly_within</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">InferenceSubjects::is_strictly_within</span></span>:<br/>Adjective Meanings - <a href="7-am.html#SP27">&#167;27</a><br/>Relations - <a href="7-rlt.html#SP14_4">&#167;14.4</a><br/>Knowledge about Kinds - <a href="13-kak.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">larger</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">subj</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><a href="16-is.html#SP13" class="function-link"><span class="function-syntax">InferenceSubjects::is_within</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">broader_than</span><span class="plain-syntax">, </span><span class="identifier-syntax">larger</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
@ -397,7 +397,7 @@ correspond to a subject, and if so, which one?
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="function-syntax">InferenceSubjects::from_specification</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">InferenceSubjects::from_specification</span></span>:<br/>Refine Parse Tree - <a href="5-rpt.html#SP1">&#167;1</a><br/>Nonlocal Variables - <a href="6-nv.html#SP24">&#167;24</a><br/>Adjective Meanings - <a href="7-am.html#SP26_6">&#167;26.6</a><br/>Relations - <a href="7-rlt.html#SP28">&#167;28</a><br/>Assert Propositions - <a href="12-ap.html#SP12">&#167;12</a><br/>Dash - <a href="14-ds2.html#SP11_9_1_2_3">&#167;11.9.1.2.3</a><br/>Inferences - <a href="16-in.html#SP19">&#167;19</a><br/>Inform 6 Inclusions - <a href="26-i6i.html#SP6_4">&#167;6.4</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">inference_subject</span><span class="plain-syntax"> *</span><span class="function-syntax">InferenceSubjects::from_specification</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">InferenceSubjects::from_specification</span></span>:<br/>Refine Parse Tree - <a href="5-rpt.html#SP1">&#167;1</a><br/>Nonlocal Variables - <a href="6-nv.html#SP24">&#167;24</a><br/>Adjective Meanings - <a href="7-am.html#SP26_6">&#167;26.6</a><br/>Relations - <a href="7-rlt.html#SP22">&#167;22</a><br/>Assert Propositions - <a href="12-ap.html#SP12">&#167;12</a><br/>Dash - <a href="14-ds2.html#SP11_9_1_2_3">&#167;11.9.1.2.3</a><br/>Inferences - <a href="16-in.html#SP19">&#167;19</a><br/>Inform 6 Inclusions - <a href="26-i6i.html#SP6_4">&#167;6.4</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">inference_subject</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="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="14-sp.html#SP2" class="function-link"><span class="function-syntax">Specifications::is_kind_like</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">)) {</span>
@ -517,7 +517,7 @@ from kinds actually do.)
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">InferenceSubjects::domain</span><button class="popup" onclick="togglePopup('usagePopup28')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup28">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::domain</span></span>:<br/><a href="16-is.html#SP18">&#167;18</a><br/>Anaphoric References - <a href="3-ar.html#SP3">&#167;3</a><br/>Refine Parse Tree - <a href="5-rpt.html#SP3">&#167;3</a>, <a href="5-rpt.html#SP10_6">&#167;10.6</a><br/>The Creator - <a href="5-tc.html#SP4_2">&#167;4.2</a><br/>Make Assertions - <a href="5-ma.html#SP5_3_8">&#167;5.3.8</a>, <a href="5-ma.html#SP5_3_32">&#167;5.3.32</a><br/>Property Knowledge - <a href="5-pk.html#SP3_1">&#167;3.1</a><br/>Relation Knowledge - <a href="5-rk.html#SP3_2">&#167;3.2</a><br/>Assemblies - <a href="5-ass.html#SP11">&#167;11</a>, <a href="5-ass.html#SP12">&#167;12</a><br/>Implications - <a href="5-imp.html#SP5">&#167;5</a>, <a href="5-imp.html#SP7_1_3">&#167;7.1.3</a><br/>Property Declarations - <a href="5-pd.html#SP5_6">&#167;5.6</a>, <a href="5-pd.html#SP6_1">&#167;6.1</a><br/>Binary Predicates - <a href="7-bp.html#SP23">&#167;23</a><br/>Relations - <a href="7-rlt.html#SP20_4">&#167;20.4</a><br/>Tree Conversions - <a href="11-tc.html#SP2">&#167;2</a><br/>Assert Propositions - <a href="12-ap.html#SP9_10">&#167;9.10</a><br/>Either-Or Properties - <a href="15-ep.html#SP3">&#167;3</a><br/>Indefinite Appearance - <a href="15-ia.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">InferenceSubjects::domain</span><button class="popup" onclick="togglePopup('usagePopup28')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup28">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::domain</span></span>:<br/><a href="16-is.html#SP18">&#167;18</a><br/>Anaphoric References - <a href="3-ar.html#SP3">&#167;3</a><br/>Refine Parse Tree - <a href="5-rpt.html#SP3">&#167;3</a>, <a href="5-rpt.html#SP10_6">&#167;10.6</a><br/>The Creator - <a href="5-tc.html#SP4_2">&#167;4.2</a><br/>Make Assertions - <a href="5-ma.html#SP5_3_8">&#167;5.3.8</a>, <a href="5-ma.html#SP5_3_32">&#167;5.3.32</a><br/>Property Knowledge - <a href="5-pk.html#SP3_1">&#167;3.1</a><br/>Relation Knowledge - <a href="5-rk.html#SP3_2">&#167;3.2</a><br/>Assemblies - <a href="5-ass.html#SP11">&#167;11</a>, <a href="5-ass.html#SP12">&#167;12</a><br/>Implications - <a href="5-imp.html#SP5">&#167;5</a>, <a href="5-imp.html#SP7_1_3">&#167;7.1.3</a><br/>Property Declarations - <a href="5-pd.html#SP5_6">&#167;5.6</a>, <a href="5-pd.html#SP6_1">&#167;6.1</a><br/>Binary Predicates - <a href="7-bp.html#SP23">&#167;23</a><br/>Relations - <a href="7-rlt.html#SP14_4">&#167;14.4</a><br/>Tree Conversions - <a href="11-tc.html#SP2">&#167;2</a><br/>Assert Propositions - <a href="12-ap.html#SP9_10">&#167;9.10</a><br/>Either-Or Properties - <a href="15-ep.html#SP3">&#167;3</a><br/>Indefinite Appearance - <a href="15-ia.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-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">return</span><span class="plain-syntax"> </span><a href="16-is.html#SP19" class="function-link"><span class="function-syntax">InferenceSubjects::as_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>

View file

@ -116,7 +116,7 @@ column ID numbers used at run-time.
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">table_contribution</span><span class="plain-syntax"> *</span><span class="identifier-syntax">next</span><span class="plain-syntax">;</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">table_contribution</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure table_contribution is accessed in 3/ptmn, 3/cs, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 4/tr2, 4/dbtr, 4/rpr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/rsft, 20/eq, 21/rl, 21/rl2, 21/fao, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 27/cm and here.</li></ul>
<ul class="endnotetexts"><li>The structure table_contribution is accessed in 3/ptmn, 3/cs, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 4/tr2, 4/dbtr, 4/rpr, 4/nar, 4/nlpr, 4/nrr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/rsft, 20/eq, 21/rl, 21/rl2, 21/fao, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 27/cm and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP4"></a><b>&#167;4. </b>These are convenient during parsing.
</p>

View file

@ -112,7 +112,7 @@ parse tree, and concerning an instance:
<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><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::infs_contradiction_problem</span></span>:<br/>Relations - <a href="7-rlt.html#SP28">&#167;28</a><br/>Indefinite Appearance - <a href="15-ia.html#SP1_1">&#167;1.1</a><br/>Complete Model World - <a href="16-cmw.html#SP1_2_2_1_1_1">&#167;1.2.2.1.1.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">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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">StandardProblems::infs_contradiction_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::infs_contradiction_problem</span></span>:<br/>Relations - <a href="7-rlt.html#SP22">&#167;22</a><br/>Indefinite Appearance - <a href="15-ia.html#SP1_1">&#167;1.1</a><br/>Complete Model World - <a href="16-cmw.html#SP1_2_2_1_1_1">&#167;1.2.2.1.1.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">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="reserved-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>

View file

@ -175,7 +175,7 @@ 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::quote_kind</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">Problems::quote_kind</span></span>:<br/><a href="2-sq.html#SP4">&#167;4</a><br/>Define by Table Requests - <a href="4-dbtr.html#SP4_1_2">&#167;4.1.2</a>, <a href="4-dbtr.html#SP4_1_3_3">&#167;4.1.3.3</a><br/>The Creator - <a href="5-tc.html#SP5_4_2_6">&#167;5.4.2.6</a>, <a href="5-tc.html#SP5_4_2_7">&#167;5.4.2.7</a>, <a href="5-tc.html#SP5_4_2_8">&#167;5.4.2.8</a>, <a href="5-tc.html#SP8_1">&#167;8.1</a><br/>Make Assertions - <a href="5-ma.html#SP5_3_39_1">&#167;5.3.39.1</a><br/>Property Knowledge - <a href="5-pk.html#SP2_1">&#167;2.1</a>, <a href="5-pk.html#SP4_4">&#167;4.4</a><br/>Property Declarations - <a href="5-pd.html#SP5_6_1">&#167;5.6.1</a>, <a href="5-pd.html#SP7_1_3">&#167;7.1.3</a><br/>Literal Patterns - <a href="6-lp.html#SP34_5">&#167;34.5</a>, <a href="6-lp.html#SP34_6">&#167;34.6</a><br/>Instances - <a href="6-ins.html#SP19_1">&#167;19.1</a><br/>Nonlocal Variables - <a href="6-nv.html#SP7_1">&#167;7.1</a>, <a href="6-nv.html#SP23">&#167;23</a>, <a href="6-nv.html#SP25_2">&#167;25.2</a><br/>The Universal Relation - <a href="7-tur.html#SP5">&#167;5</a><br/>Tree Conversions - <a href="11-tc.html#SP7_1">&#167;7.1</a><br/>Type Check Propositions - <a href="11-tcp.html#SP6_9">&#167;6.9</a>, <a href="11-tcp.html#SP6_10">&#167;6.10</a>, <a href="11-tcp.html#SP6_11">&#167;6.11</a>, <a href="11-tcp.html#SP10">&#167;10</a>, <a href="11-tcp.html#SP11">&#167;11</a>, <a href="11-tcp.html#SP11_3">&#167;11.3</a>, <a href="11-tcp.html#SP12">&#167;12</a><br/>The Equality Relation - <a href="12-ter.html#SP5_1">&#167;5.1</a>, <a href="12-ter.html#SP8_4">&#167;8.4</a><br/>Quasinumeric Relations - <a href="12-qr.html#SP5">&#167;5</a><br/>Compile Atoms - <a href="12-ca.html#SP6_2">&#167;6.2</a><br/>Knowledge about Kinds - <a href="13-kak.html#SP7">&#167;7</a><br/>Runtime Support for Kinds - <a href="13-rsfk.html#SP5_1">&#167;5.1</a>, <a href="13-rsfk.html#SP5_2">&#167;5.2</a>, <a href="13-rsfk.html#SP17_2">&#167;17.2</a>, <a href="13-rsfk.html#SP27">&#167;27</a><br/>Dash - <a href="14-ds2.html#SP10_1_1_3_1">&#167;10.1.1.3.1</a>, <a href="14-ds2.html#SP11_8_1">&#167;11.8.1</a>, <a href="14-ds2.html#SP11_9_1_1_2_2_2">&#167;11.9.1.1.2.2.2</a>, <a href="14-ds2.html#SP11_9_1_1_3_1_1">&#167;11.9.1.1.3.1.1</a>, <a href="14-ds2.html#SP11_9_1_1_5_2">&#167;11.9.1.1.5.2</a>, <a href="14-ds2.html#SP11_9_1_2_3_3">&#167;11.9.1.2.3.3</a>, <a href="14-ds2.html#SP11_9_1_2_4">&#167;11.9.1.2.4</a>, <a href="14-ds2.html#SP15_4">&#167;15.4</a>, <a href="14-ds2.html#SP19_1">&#167;19.1</a>, <a href="14-ds2.html#SP19_2">&#167;19.2</a>, <a href="14-ds2.html#SP19_2_1">&#167;19.2.1</a>, <a href="14-ds2.html#SP19_5_3_2">&#167;19.5.3.2</a>, <a href="14-ds2.html#SP19_6_1_1">&#167;19.6.1.1</a>, <a href="14-ds2.html#SP19_6_2_1">&#167;19.6.2.1</a>, <a href="14-ds2.html#SP19_6_2_2">&#167;19.6.2.2</a><br/>Valued Properties - <a href="15-vp.html#SP5">&#167;5</a><br/>Condition Properties - <a href="15-cp.html#SP3">&#167;3</a><br/>The Provision Relation - <a href="15-tpr.html#SP5">&#167;5</a><br/>Setting Property Relation - <a href="15-spr2.html#SP9_1">&#167;9.1</a>, <a href="15-spr2.html#SP9_2">&#167;9.2</a><br/>Properties of Values - <a href="15-pov.html#SP4_1">&#167;4.1</a><br/>Inferences - <a href="16-in.html#SP14">&#167;14</a><br/>List Constants - <a href="18-lc.html#SP8_2_1">&#167;8.2.1</a><br/>Table Columns - <a href="19-tc.html#SP6_1">&#167;6.1</a>, <a href="19-tc.html#SP14_1">&#167;14.1</a>, <a href="19-tc.html#SP15">&#167;15</a>, <a href="19-tc.html#SP15_6">&#167;15.6</a><br/>Equations - <a href="20-eq.html#SP40_4_1">&#167;40.4.1</a>, <a href="20-eq.html#SP40_4_2">&#167;40.4.2</a>, <a href="20-eq.html#SP46_3_2">&#167;46.3.2</a><br/>Rules - <a href="21-rl.html#SP15">&#167;15</a>, <a href="21-rl.html#SP18">&#167;18</a><br/>Phrase Usage - <a href="22-pu.html#SP21_1_1_2">&#167;21.1.1.2</a><br/>Compile Invocations - <a href="25-ci.html#SP3_1_1_2">&#167;3.1.1.2</a><br/>Compile Invocations Inline - <a href="25-cii.html#SP3_2_1_1">&#167;3.2.1.1</a>, <a href="25-cii.html#SP3_1_1_4_7_1_2">&#167;3.1.1.4.7.1.2</a>, <a href="25-cii.html#SP3_5_3">&#167;3.5.3</a>, <a href="25-cii.html#SP3_5_4_3">&#167;3.5.4.3</a><br/>Compile Phrases - <a href="25-cp.html#SP5_3_5">&#167;5.3.5</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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::quote_kind</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">Problems::quote_kind</span></span>:<br/><a href="2-sq.html#SP4">&#167;4</a><br/>Define by Table Requests - <a href="4-dbtr.html#SP4_1_2">&#167;4.1.2</a>, <a href="4-dbtr.html#SP4_1_3_3">&#167;4.1.3.3</a><br/>The Creator - <a href="5-tc.html#SP5_4_2_6">&#167;5.4.2.6</a>, <a href="5-tc.html#SP5_4_2_7">&#167;5.4.2.7</a>, <a href="5-tc.html#SP5_4_2_8">&#167;5.4.2.8</a>, <a href="5-tc.html#SP8_1">&#167;8.1</a><br/>Make Assertions - <a href="5-ma.html#SP5_3_39_1">&#167;5.3.39.1</a><br/>Property Knowledge - <a href="5-pk.html#SP2_1">&#167;2.1</a>, <a href="5-pk.html#SP4_4">&#167;4.4</a><br/>Property Declarations - <a href="5-pd.html#SP5_6_1">&#167;5.6.1</a>, <a href="5-pd.html#SP7_1_3">&#167;7.1.3</a><br/>Literal Patterns - <a href="6-lp.html#SP31_4">&#167;31.4</a>, <a href="6-lp.html#SP31_5">&#167;31.5</a><br/>Instances - <a href="6-ins.html#SP19_1">&#167;19.1</a><br/>Nonlocal Variables - <a href="6-nv.html#SP7_1">&#167;7.1</a>, <a href="6-nv.html#SP23">&#167;23</a>, <a href="6-nv.html#SP25_2">&#167;25.2</a><br/>The Universal Relation - <a href="7-tur.html#SP5">&#167;5</a><br/>Tree Conversions - <a href="11-tc.html#SP7_1">&#167;7.1</a><br/>Type Check Propositions - <a href="11-tcp.html#SP6_9">&#167;6.9</a>, <a href="11-tcp.html#SP6_10">&#167;6.10</a>, <a href="11-tcp.html#SP6_11">&#167;6.11</a>, <a href="11-tcp.html#SP10">&#167;10</a>, <a href="11-tcp.html#SP11">&#167;11</a>, <a href="11-tcp.html#SP11_3">&#167;11.3</a>, <a href="11-tcp.html#SP12">&#167;12</a><br/>The Equality Relation - <a href="12-ter.html#SP5_1">&#167;5.1</a>, <a href="12-ter.html#SP8_4">&#167;8.4</a><br/>Quasinumeric Relations - <a href="12-qr.html#SP5">&#167;5</a><br/>Compile Atoms - <a href="12-ca.html#SP6_2">&#167;6.2</a><br/>Knowledge about Kinds - <a href="13-kak.html#SP7">&#167;7</a><br/>Runtime Support for Kinds - <a href="13-rsfk.html#SP5_1">&#167;5.1</a>, <a href="13-rsfk.html#SP5_2">&#167;5.2</a>, <a href="13-rsfk.html#SP17_2">&#167;17.2</a>, <a href="13-rsfk.html#SP27">&#167;27</a><br/>Dash - <a href="14-ds2.html#SP10_1_1_3_1">&#167;10.1.1.3.1</a>, <a href="14-ds2.html#SP11_8_1">&#167;11.8.1</a>, <a href="14-ds2.html#SP11_9_1_1_2_2_2">&#167;11.9.1.1.2.2.2</a>, <a href="14-ds2.html#SP11_9_1_1_3_1_1">&#167;11.9.1.1.3.1.1</a>, <a href="14-ds2.html#SP11_9_1_1_5_2">&#167;11.9.1.1.5.2</a>, <a href="14-ds2.html#SP11_9_1_2_3_3">&#167;11.9.1.2.3.3</a>, <a href="14-ds2.html#SP11_9_1_2_4">&#167;11.9.1.2.4</a>, <a href="14-ds2.html#SP15_4">&#167;15.4</a>, <a href="14-ds2.html#SP19_1">&#167;19.1</a>, <a href="14-ds2.html#SP19_2">&#167;19.2</a>, <a href="14-ds2.html#SP19_2_1">&#167;19.2.1</a>, <a href="14-ds2.html#SP19_5_3_2">&#167;19.5.3.2</a>, <a href="14-ds2.html#SP19_6_1_1">&#167;19.6.1.1</a>, <a href="14-ds2.html#SP19_6_2_1">&#167;19.6.2.1</a>, <a href="14-ds2.html#SP19_6_2_2">&#167;19.6.2.2</a><br/>Valued Properties - <a href="15-vp.html#SP5">&#167;5</a><br/>Condition Properties - <a href="15-cp.html#SP3">&#167;3</a><br/>The Provision Relation - <a href="15-tpr.html#SP5">&#167;5</a><br/>Setting Property Relation - <a href="15-spr2.html#SP9_1">&#167;9.1</a>, <a href="15-spr2.html#SP9_2">&#167;9.2</a><br/>Properties of Values - <a href="15-pov.html#SP4_1">&#167;4.1</a><br/>Inferences - <a href="16-in.html#SP14">&#167;14</a><br/>List Constants - <a href="18-lc.html#SP8_2_1">&#167;8.2.1</a><br/>Table Columns - <a href="19-tc.html#SP6_1">&#167;6.1</a>, <a href="19-tc.html#SP14_1">&#167;14.1</a>, <a href="19-tc.html#SP15">&#167;15</a>, <a href="19-tc.html#SP15_6">&#167;15.6</a><br/>Equations - <a href="20-eq.html#SP40_4_1">&#167;40.4.1</a>, <a href="20-eq.html#SP40_4_2">&#167;40.4.2</a>, <a href="20-eq.html#SP46_3_2">&#167;46.3.2</a><br/>Rules - <a href="21-rl.html#SP15">&#167;15</a>, <a href="21-rl.html#SP18">&#167;18</a><br/>Phrase Usage - <a href="22-pu.html#SP21_1_1_2">&#167;21.1.1.2</a><br/>Compile Invocations - <a href="25-ci.html#SP3_1_1_2">&#167;3.1.1.2</a><br/>Compile Invocations Inline - <a href="25-cii.html#SP3_2_1_1">&#167;3.2.1.1</a>, <a href="25-cii.html#SP3_1_1_4_7_1_2">&#167;3.1.1.4.7.1.2</a>, <a href="25-cii.html#SP3_5_3">&#167;3.5.3</a>, <a href="25-cii.html#SP3_5_4_3">&#167;3.5.4.3</a><br/>Compile Phrases - <a href="25-cp.html#SP5_3_5">&#167;5.3.5</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::Compare::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="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>

View file

@ -131,7 +131,7 @@ instance has its own <span class="extract"><span class="extract-syntax">equation
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">equation_symbol</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure equation_symbol is accessed in 2/sq, 2/si, 3/ptmn, 3/cs, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 4/tr2, 4/dbtr, 4/rpr, 5/rpt, 5/tc, 5/ma, 5/pk, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 6/nv, 7/rlt, 7/nv, 8/rs, 9/ef, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/pr, 15/ep, 15/vp, 15/ps, 15/cp, 15/spr, 16/is, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/rsft, 21/rl, 21/rl2, 21/fao, 21/sv, 21/ac, 22/ph, 22/pu, 22/dptd, 22/po, 22/pav, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 26/ts, 26/uoart, 27/cm and here.</li></ul>
<ul class="endnotetexts"><li>The structure equation_symbol is accessed in 2/sq, 2/si, 3/ptmn, 3/cs, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 4/tr2, 4/dbtr, 4/rpr, 4/nar, 4/nlpr, 4/nrr, 5/rpt, 5/tc, 5/ma, 5/pk, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 6/nv, 7/nv, 8/rs, 9/ef, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/pr, 15/ep, 15/vp, 15/ps, 15/cp, 15/spr, 16/is, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/rsft, 21/rl, 21/rl2, 21/fao, 21/sv, 21/ac, 22/ph, 22/pu, 22/dptd, 22/po, 22/pav, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 26/ts, 26/uoart, 27/cm and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP4"></a><b>&#167;4. </b>In addition, there are some standing symbols used by all equations: the
constant "pi", for example. They're stored in this linked list:
</p>

View file

@ -67,7 +67,7 @@ function togglePopup(material_id) {
<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#21">Chapter 21: Rules and Rulebooks</a></li><li><b>Activities</b></li></ul></div>
<p class="purpose">To create and manage activities, which are action-like bundles of rules controlling how the I6 runtime code carries out tasks such as "printing the name of something". Each has its own page in the I7 documentation. An activity list is a disjunction of actitivies.</p>
<ul class="toc"><li><a href="21-ac.html#SP1">&#167;1. Definitions</a></li><li><a href="21-ac.html#SP7">&#167;7. Activity variables</a></li><li><a href="21-ac.html#SP9">&#167;9. Activity indexing</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="21-ac.html#SP1">&#167;1. Definitions</a></li><li><a href="21-ac.html#SP5">&#167;5. Activity variables</a></li><li><a href="21-ac.html#SP7">&#167;7. Activity indexing</a></li></ul><hr class="tocbar">
<p class="commentary firstcommentary"><a id="SP1"></a><b>&#167;1. Definitions. </b></p>
@ -100,7 +100,7 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">activity_crossref</span><span class="plain-syntax"> *</span><span class="identifier-syntax">next</span><span class="plain-syntax">;</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">activity_crossref</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure activity is accessed in 2/sq, 2/si, 4/nuor, 4/dbtr, 4/rpr, 5/ma, 5/pk, 6/ins, 6/nv, 9/ef, 11/sm, 14/lv, 14/ds2, 15/pr, 15/ep, 15/vp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 20/eq, 21/rl, 21/rl2, 21/fao, 21/sv, 22/pu, 22/dptd, 22/po, 22/pav, 25/cii, 26/ts, 26/uoart and here.</li><li>The structure activity_list is accessed in 3/ptmn, 3/cs, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 4/tr2, 4/dbtr, 4/rpr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 20/eq, 21/rl, 21/rl2, 21/fao, 21/sv, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 27/cm and here.</li><li>The structure activity_crossref is accessed in 3/ptmn, 3/cs, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 4/tr2, 4/dbtr, 4/rpr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 20/eq, 21/rl, 21/rl2, 21/fao, 21/sv, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 27/cm and here.</li></ul>
<ul class="endnotetexts"><li>The structure activity is accessed in 2/sq, 2/si, 4/nuor, 4/dbtr, 4/rpr, 5/ma, 5/pk, 6/ins, 6/nv, 9/ef, 11/sm, 14/lv, 14/ds2, 15/pr, 15/ep, 15/vp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 20/eq, 21/rl, 21/rl2, 21/fao, 21/sv, 22/pu, 22/dptd, 22/po, 22/pav, 25/cii, 26/ts, 26/uoart and here.</li><li>The structure activity_list is accessed in 3/ptmn, 3/cs, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 4/tr2, 4/dbtr, 4/rpr, 4/nar, 4/nlpr, 4/nrr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 20/eq, 21/rl, 21/rl2, 21/fao, 21/sv, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 27/cm and here.</li><li>The structure activity_crossref is accessed in 3/ptmn, 3/cs, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 4/tr2, 4/dbtr, 4/rpr, 4/nar, 4/nlpr, 4/nrr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 20/eq, 21/rl, 21/rl2, 21/fao, 21/sv, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 27/cm and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP2"></a><b>&#167;2. </b></p>
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">STARTING_VIRTUAL_MACHINE_ACT</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span>
@ -138,41 +138,7 @@ function togglePopup(material_id) {
<span class="definition-keyword">define</span> <span class="constant-syntax">CHOOSING_NOTABLE_LOCALE_OBJ_ACT</span><span class="plain-syntax"> </span><span class="constant-syntax">32</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">PRINTING_LOCALE_PARAGRAPH_ACT</span><span class="plain-syntax"> </span><span class="constant-syntax">33</span>
</pre>
<p class="commentary firstcommentary"><a id="SP3"></a><b>&#167;3. </b>We give a special meaning to the sentence "X is an activity", where no kind
is specified, since this would otherwise not be legal Inform.
</p>
<pre class="Preform-displayed-code all-displayed-code code-font">
<span class="Preform-function-syntax">&lt;bare-activity-sentence-object&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;article&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">activity</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { TRUE, - }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">activity</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { TRUE, - }</span>
</pre>
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
<p class="commentary firstcommentary"><a id="SP4"></a><b>&#167;4. </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">Activities::new_activity_SMF</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">Activities::new_activity_SMF</span></span>:<br/>Booting Verbs - <a href="3-bv.html#SP1_3">&#167;1.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">task</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">V</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> *</span><span class="identifier-syntax">NPs</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">SW</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">[0]):</span><span class="identifier-syntax">EMPTY_WORDING</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">OW</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">[1]):</span><span class="identifier-syntax">EMPTY_WORDING</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">task</span><span class="plain-syntax">) { </span><span class="comment-syntax"> "Description is an activity."</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">ACCEPT_SMFT:</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax">&lt;bare-activity-sentence-object&gt;</span><span class="plain-syntax">(</span><span class="identifier-syntax">OW</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="function-syntax">&lt;np-unparsed&gt;</span><span class="plain-syntax">(</span><span class="identifier-syntax">SW</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">V</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax"> = </span><span class="function-syntax">&lt;&lt;rp&gt;&gt;</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="function-syntax">&lt;np-unparsed&gt;</span><span class="plain-syntax">(</span><span class="identifier-syntax">OW</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">V</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax"> = </span><span class="function-syntax">&lt;&lt;rp&gt;&gt;</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">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">PASS_1_SMFT:</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP6" class="function-link"><span class="function-syntax">Activities::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Kinds::unary_construction</span><span class="plain-syntax">(</span><span class="identifier-syntax">CON_activity</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_nil</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">V</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP5"></a><b>&#167;5. </b>Activities are much simpler to create than actions. For example,
<p class="commentary firstcommentary"><a id="SP3"></a><b>&#167;3. </b>Activities are much simpler to create than actions. For example,
</p>
<blockquote>
@ -193,7 +159,7 @@ something"):
<span class="Preform-function-syntax">&lt;activity-noted&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;activity-new-name&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">(</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">future</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">action</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">)</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { TRUE, -, &lt;&lt;future&gt;&gt; = TRUE }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;activity-new-name&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">(</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">)</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="21-ac.html#SP5_2" class="named-paragraph-link"><span class="named-paragraph">Issue PM_ActivityNoteUnknown problem</span><span class="named-paragraph-number">5.2</span></a></span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;activity-new-name&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">(</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">)</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="21-ac.html#SP3_2" class="named-paragraph-link"><span class="named-paragraph">Issue PM_ActivityNoteUnknown problem</span><span class="named-paragraph-number">3.2</span></a></span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;activity-new-name&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { TRUE, -, &lt;&lt;future&gt;&gt; = FALSE }</span>
<span class="Preform-function-syntax">&lt;activity-new-name&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
@ -202,7 +168,7 @@ something"):
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { 0, -, &lt;&lt;any&gt;&gt; = FALSE }</span>
</pre>
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
<p class="commentary firstcommentary"><a id="SP5_1"></a><b>&#167;5.1. </b>Once a new activity has been created, the following is used to make a
<p class="commentary firstcommentary"><a id="SP3_1"></a><b>&#167;3.1. </b>Once a new activity has been created, the following is used to make a
noun for it; for example, the "announcing activity".
</p>
@ -211,7 +177,7 @@ noun for it; for example, the "announcing activity".
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">activity</span>
</pre>
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
<p class="commentary firstcommentary"><a id="SP5_2"></a><b>&#167;5.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_ActivityNoteUnknown problem</span><span class="named-paragraph-number">5.2</span></span><span class="Preform-comment-syntax"> =</span>
<p class="commentary firstcommentary"><a id="SP3_2"></a><b>&#167;3.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_ActivityNoteUnknown problem</span><span class="named-paragraph-number">3.2</span></span><span class="Preform-comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -220,11 +186,11 @@ noun for it; for example, the "announcing activity".
<span class="plain-syntax"> </span><span class="string-syntax">"and should be either 'documented at SYMBOL' or 'future action'."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> ==&gt; { </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, - };</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="21-ac.html#SP5">&#167;5</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP6"></a><b>&#167;6. </b></p>
<ul class="endnotetexts"><li>This code is used in <a href="21-ac.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP4"></a><b>&#167;4. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">activity</span><span class="plain-syntax"> *</span><span class="function-syntax">Activities::new</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">Activities::new</span></span>:<br/><a href="21-ac.html#SP4">&#167;4</a><br/>The Creator - <a href="5-tc.html#SP5_4_2_5">&#167;5.4.2.5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">creation_kind</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">activity</span><span class="plain-syntax"> *</span><span class="function-syntax">Activities::new</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">Activities::new</span></span>:<br/>New Activity Requests - <a href="4-nar.html#SP2">&#167;2</a><br/>The Creator - <a href="5-tc.html#SP5_4_2_5">&#167;5.4.2.5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">creation_kind</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="reserved-syntax">activity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">av</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">activity</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">future_action_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="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">;</span>
@ -323,21 +289,21 @@ noun for it; for example, the "announcing activity".
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">av</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">Activities::to_kind</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">Activities::to_kind</span></span>:<br/>RValues - <a href="14-rv.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">activity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">av</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">Activities::to_kind</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Activities::to_kind</span></span>:<br/>RValues - <a href="14-rv.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">activity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">av</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">Kinds::unary_construction</span><span class="plain-syntax">(</span><span class="identifier-syntax">CON_activity</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">av</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">activity_on_what_kind</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP7"></a><b>&#167;7. Activity variables. </b>Any new activity variable name is vetted by being run through this:
<p class="commentary firstcommentary"><a id="SP5"></a><b>&#167;5. Activity variables. </b>Any new activity variable name is vetted by being run through this:
</p>
<pre class="Preform-displayed-code all-displayed-code code-font">
<span class="Preform-function-syntax">&lt;activity-variable-name&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;unfortunate-name&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="21-ac.html#SP7_1" class="named-paragraph-link"><span class="named-paragraph">Issue PM_ActivityVarAnd problem</span><span class="named-paragraph-number">7.1</span></a></span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;unfortunate-name&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="21-ac.html#SP5_1" class="named-paragraph-link"><span class="named-paragraph">Issue PM_ActivityVarAnd problem</span><span class="named-paragraph-number">5.1</span></a></span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { TRUE, - }</span>
</pre>
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
<p class="commentary firstcommentary"><a id="SP7_1"></a><b>&#167;7.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_ActivityVarAnd problem</span><span class="named-paragraph-number">7.1</span></span><span class="Preform-comment-syntax"> =</span>
<p class="commentary firstcommentary"><a id="SP5_1"></a><b>&#167;5.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_ActivityVarAnd problem</span><span class="named-paragraph-number">5.1</span></span><span class="Preform-comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -353,11 +319,11 @@ noun for it; for example, the "announcing activity".
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> ==&gt; { </span><span class="identifier-syntax">NOT_APPLICABLE</span><span class="plain-syntax">, - };</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="21-ac.html#SP7">&#167;7</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP8"></a><b>&#167;8. </b></p>
<ul class="endnotetexts"><li>This code is used in <a href="21-ac.html#SP5">&#167;5</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP6"></a><b>&#167;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">Activities::add_variable</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">Activities::add_variable</span></span>:<br/>Make Assertions - <a href="5-ma.html#SP5_3_25_1">&#167;5.3.25.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">activity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">av</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cnode</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Activities::add_variable</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">Activities::add_variable</span></span>:<br/>Make Assertions - <a href="5-ma.html#SP5_3_25_1">&#167;5.3.25.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">activity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">av</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cnode</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="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">cnode</span><span class="plain-syntax">) != </span><span class="constant-syntax">PROPERTYCALLED_NT</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">cnode</span><span class="plain-syntax">) != </span><span class="identifier-syntax">UNPARSED_NOUN_NT</span><span class="plain-syntax">)) {</span>
@ -435,7 +401,7 @@ noun for it; for example, the "announcing activity".
<span class="plain-syntax"> </span><a href="14-sp.html#SP1" class="function-link"><span class="function-syntax">Specifications::to_kind</span></a><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">void</span><span class="plain-syntax"> </span><span class="function-syntax">Activities::activity_var_creators</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">Activities::activity_var_creators</span></span>:<br/>How To Compile - <a href="1-htc.html#SP2_8">&#167;2.8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Activities::activity_var_creators</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">Activities::activity_var_creators</span></span>:<br/>How To Compile - <a href="1-htc.html#SP2_8">&#167;2.8</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">activity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">av</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">av</span><span class="plain-syntax">, </span><span class="reserved-syntax">activity</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="21-sv.html#SP3" class="function-link"><span class="function-syntax">StackedVariables::owner_empty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">av</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">owned_by_av</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) {</span>
@ -458,16 +424,16 @@ noun for it; for example, the "announcing activity".
<span class="plain-syntax"> </span><a href="27-hr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_available</span></a><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP9"></a><b>&#167;9. Activity indexing. </b></p>
<p class="commentary firstcommentary"><a id="SP7"></a><b>&#167;7. Activity indexing. </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">Activities::index_by_number</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">Activities::index_by_number</span></span>:<br/>Rulebooks - <a href="21-rl2.html#SP23_1">&#167;23.1</a>, <a href="21-rl2.html#SP23_3">&#167;23.3</a>, <a href="21-rl2.html#SP23_6">&#167;23.6</a>, <a href="21-rl2.html#SP23_8">&#167;23.8</a>, <a href="21-rl2.html#SP23_9">&#167;23.9</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">indent</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Activities::index_by_number</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">Activities::index_by_number</span></span>:<br/>Rulebooks - <a href="21-rl2.html#SP23_1">&#167;23.1</a>, <a href="21-rl2.html#SP23_3">&#167;23.3</a>, <a href="21-rl2.html#SP23_6">&#167;23.6</a>, <a href="21-rl2.html#SP23_8">&#167;23.8</a>, <a href="21-rl2.html#SP23_9">&#167;23.9</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">indent</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">activity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">av</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">av</span><span class="plain-syntax">, </span><span class="reserved-syntax">activity</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">av</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax"> == </span><span class="identifier-syntax">id</span><span class="plain-syntax">) </span><a href="21-ac.html#SP9" class="function-link"><span class="function-syntax">Activities::index</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">av</span><span class="plain-syntax">, </span><span class="identifier-syntax">indent</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">av</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax"> == </span><span class="identifier-syntax">id</span><span class="plain-syntax">) </span><a href="21-ac.html#SP7" class="function-link"><span class="function-syntax">Activities::index</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">av</span><span class="plain-syntax">, </span><span class="identifier-syntax">indent</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">Activities::index</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">Activities::index</span></span>:<br/>Rulebooks - <a href="21-rl2.html#SP23_10_1">&#167;23.10.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">activity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">av</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">indent</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Activities::index</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">Activities::index</span></span>:<br/>Rulebooks - <a href="21-rl2.html#SP23_10_1">&#167;23.10.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">activity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">av</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">indent</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">empty</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">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">text</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">av</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">activity_indexed</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
@ -485,7 +451,7 @@ noun for it; for example, the "announcing activity".
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">doc_link</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">Activities::no_rules</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">Activities::no_rules</span></span>:<br/>Rulebooks - <a href="21-rl2.html#SP24">&#167;24</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">activity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">av</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Activities::no_rules</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">Activities::no_rules</span></span>:<br/>Rulebooks - <a href="21-rl2.html#SP24">&#167;24</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">activity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">av</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">t</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax"> += </span><a href="21-rl2.html#SP12" class="function-link"><span class="function-syntax">Rulebooks::no_rules</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">av</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">before_rules</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax"> += </span><a href="21-rl2.html#SP12" class="function-link"><span class="function-syntax">Rulebooks::no_rules</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">av</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">for_rules</span><span class="plain-syntax">);</span>
@ -493,19 +459,19 @@ noun for it; for example, the "announcing activity".
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Activities::index_details</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">Activities::index_details</span></span>:<br/>Rulebooks - <a href="21-rl2.html#SP24">&#167;24</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">activity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">av</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Activities::index_details</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">Activities::index_details</span></span>:<br/>Rulebooks - <a href="21-rl2.html#SP24">&#167;24</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">activity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">av</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">ignore_me</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="21-rl2.html#SP15" class="function-link"><span class="function-syntax">Rulebooks::index</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">av</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">before_rules</span><span class="plain-syntax">, </span><span class="string-syntax">"before"</span><span class="plain-syntax">, </span><a href="21-rl2.html#SP15" class="function-link"><span class="function-syntax">Rulebooks::no_rule_context</span></a><span class="plain-syntax">(), &amp;</span><span class="identifier-syntax">ignore_me</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-rl2.html#SP15" class="function-link"><span class="function-syntax">Rulebooks::index</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">av</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">for_rules</span><span class="plain-syntax">, </span><span class="string-syntax">"for"</span><span class="plain-syntax">, </span><a href="21-rl2.html#SP15" class="function-link"><span class="function-syntax">Rulebooks::no_rule_context</span></a><span class="plain-syntax">(), &amp;</span><span class="identifier-syntax">ignore_me</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-rl2.html#SP15" class="function-link"><span class="function-syntax">Rulebooks::index</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">av</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">after_rules</span><span class="plain-syntax">, </span><span class="string-syntax">"after"</span><span class="plain-syntax">, </span><a href="21-rl2.html#SP15" class="function-link"><span class="function-syntax">Rulebooks::no_rule_context</span></a><span class="plain-syntax">(), &amp;</span><span class="identifier-syntax">ignore_me</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP14" class="function-link"><span class="function-syntax">Activities::index_cross_references</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">av</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP12" class="function-link"><span class="function-syntax">Activities::index_cross_references</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">av</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="function-syntax">Activities::iname</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">Activities::iname</span></span>:<br/>RValues - <a href="14-rv.html#SP24_3">&#167;24.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">activity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">av</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Activities::iname</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">Activities::iname</span></span>:<br/>RValues - <a href="14-rv.html#SP24_3">&#167;24.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">activity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">av</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">av</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">av_iname</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">Activities::count_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">Activities::count_list</span></span>:<br/>Phrase Runtime Context Data - <a href="22-prcd.html#SP8_4">&#167;8.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">activity_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">avl</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Activities::count_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">Activities::count_list</span></span>:<br/>Phrase Runtime Context Data - <a href="22-prcd.html#SP8_4">&#167;8.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">activity_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">avl</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">n</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">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">avl</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax"> += </span><span class="constant-syntax">10</span><span class="plain-syntax">;</span>
@ -515,7 +481,7 @@ noun for it; for example, the "announcing activity".
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP10"></a><b>&#167;10. </b>Run-time contexts are seen in the "while" clauses at the end of rules.
<p class="commentary firstcommentary"><a id="SP8"></a><b>&#167;8. </b>Run-time contexts are seen in the "while" clauses at the end of rules.
For example:
</p>
@ -539,12 +505,12 @@ it mentions no activities.
<pre class="Preform-displayed-code all-displayed-code code-font">
<span class="Preform-function-syntax">&lt;run-time-context&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">not</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;activity-list-unnegated&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { 0, RP[1] }; </span><span class="named-paragraph-container code-font"><a href="21-ac.html#SP10_2" class="named-paragraph-link"><span class="named-paragraph">Flip the activity list parities</span><span class="named-paragraph-number">10.2</span></a></span><span class="Preform-constant-syntax">;</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">not</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;activity-list-unnegated&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { 0, RP[1] }; </span><span class="named-paragraph-container code-font"><a href="21-ac.html#SP8_2" class="named-paragraph-link"><span class="named-paragraph">Flip the activity list parities</span><span class="named-paragraph-number">8.2</span></a></span><span class="Preform-constant-syntax">;</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;activity-list-unnegated&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { 0, RP[1] }</span>
<span class="Preform-function-syntax">&lt;activity-list-unnegated&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { lookahead }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;activity-list-entry&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;activity-tail&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="21-ac.html#SP10_3" class="named-paragraph-link"><span class="named-paragraph">Join the activity lists</span><span class="named-paragraph-number">10.3</span></a></span><span class="Preform-constant-syntax">;</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;activity-list-entry&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;activity-tail&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="21-ac.html#SP8_3" class="named-paragraph-link"><span class="named-paragraph">Join the activity lists</span><span class="named-paragraph-number">8.3</span></a></span><span class="Preform-constant-syntax">;</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;activity-list-entry&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { 0, RP[1] }</span>
<span class="Preform-function-syntax">&lt;activity-tail&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
@ -552,14 +518,14 @@ it mentions no activities.
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">_,/or</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;run-time-context&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { 0, RP[1] }</span>
<span class="Preform-function-syntax">&lt;activity-list-entry&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;activity-name&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="21-ac.html#SP10_4" class="named-paragraph-link"><span class="named-paragraph">Make one-entry AL without operand</span><span class="named-paragraph-number">10.4</span></a></span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;activity-name&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">of/for</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;activity-operand&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="21-ac.html#SP10_5" class="named-paragraph-link"><span class="named-paragraph">Make one-entry AL with operand</span><span class="named-paragraph-number">10.5</span></a></span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;activity-name&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;activity-operand&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="21-ac.html#SP10_5" class="named-paragraph-link"><span class="named-paragraph">Make one-entry AL with operand</span><span class="named-paragraph-number">10.5</span></a></span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">^&lt;if-parsing-al-conditions&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="21-ac.html#SP10_6" class="named-paragraph-link"><span class="named-paragraph">Make one-entry AL with unparsed text</span><span class="named-paragraph-number">10.6</span></a></span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;if-parsing-al-conditions&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;s-condition&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="21-ac.html#SP10_7" class="named-paragraph-link"><span class="named-paragraph">Make one-entry AL with condition</span><span class="named-paragraph-number">10.7</span></a></span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;activity-name&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="21-ac.html#SP8_4" class="named-paragraph-link"><span class="named-paragraph">Make one-entry AL without operand</span><span class="named-paragraph-number">8.4</span></a></span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;activity-name&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">of/for</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;activity-operand&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="21-ac.html#SP8_5" class="named-paragraph-link"><span class="named-paragraph">Make one-entry AL with operand</span><span class="named-paragraph-number">8.5</span></a></span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;activity-name&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;activity-operand&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="21-ac.html#SP8_5" class="named-paragraph-link"><span class="named-paragraph">Make one-entry AL with operand</span><span class="named-paragraph-number">8.5</span></a></span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">^&lt;if-parsing-al-conditions&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="21-ac.html#SP8_6" class="named-paragraph-link"><span class="named-paragraph">Make one-entry AL with unparsed text</span><span class="named-paragraph-number">8.6</span></a></span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;if-parsing-al-conditions&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;s-condition&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="21-ac.html#SP8_7" class="named-paragraph-link"><span class="named-paragraph">Make one-entry AL with condition</span><span class="named-paragraph-number">8.7</span></a></span>
</pre>
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
<p class="commentary firstcommentary"><a id="SP10_1"></a><b>&#167;10.1. </b>The optional operand handles "something" itself in productions (a) and (b)
<p class="commentary firstcommentary"><a id="SP8_1"></a><b>&#167;8.1. </b>The optional operand handles "something" itself in productions (a) and (b)
in order to prevent it from being read as a description at production (c). This
prevents "something" from being read as "some thing", that is, it prevents
Inform from thinking that the operand value must have kind "thing".
@ -576,7 +542,7 @@ values, of the kind to which the activity applies.
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;s-type-expression-or-value&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { TRUE, RP[1] }</span>
</pre>
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
<p class="commentary firstcommentary"><a id="SP10_2"></a><b>&#167;10.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Flip the activity list parities</span><span class="named-paragraph-number">10.2</span></span><span class="Preform-comment-syntax"> =</span>
<p class="commentary firstcommentary"><a id="SP8_2"></a><b>&#167;8.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Flip the activity list parities</span><span class="named-paragraph-number">8.2</span></span><span class="Preform-comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -585,8 +551,8 @@ values, of the kind to which the activity applies.
<span class="plain-syntax"> </span><span class="identifier-syntax">al</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">ACL_parity</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">al</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">ACL_parity</span><span class="plain-syntax">)?</span><span class="identifier-syntax">FALSE:TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="21-ac.html#SP10">&#167;10</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP10_3"></a><b>&#167;10.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Join the activity lists</span><span class="named-paragraph-number">10.3</span></span><span class="comment-syntax"> =</span>
<ul class="endnotetexts"><li>This code is used in <a href="21-ac.html#SP8">&#167;8</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP8_3"></a><b>&#167;8.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Join the activity lists</span><span class="named-paragraph-number">8.3</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -594,17 +560,17 @@ values, of the kind to which the activity applies.
<span class="plain-syntax"> </span><span class="identifier-syntax">al1</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax"> = </span><span class="identifier-syntax">al2</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> ==&gt; { -, </span><span class="identifier-syntax">al1</span><span class="plain-syntax"> };</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="21-ac.html#SP10">&#167;10</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP10_4"></a><b>&#167;10.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Make one-entry AL without operand</span><span class="named-paragraph-number">10.4</span></span><span class="comment-syntax"> =</span>
<ul class="endnotetexts"><li>This code is used in <a href="21-ac.html#SP8">&#167;8</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP8_4"></a><b>&#167;8.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Make one-entry AL without operand</span><span class="named-paragraph-number">8.4</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">activity_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">al</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="21-ac.html#SP10_4_1" class="named-paragraph-link"><span class="named-paragraph">Make one-entry AL</span><span class="named-paragraph-number">10.4.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="21-ac.html#SP8_4_1" class="named-paragraph-link"><span class="named-paragraph">Make one-entry AL</span><span class="named-paragraph-number">8.4.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">al</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">activity</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RP</span><span class="plain-syntax">[1];</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="21-ac.html#SP10">&#167;10</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP10_5"></a><b>&#167;10.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Make one-entry AL with operand</span><span class="named-paragraph-number">10.5</span></span><span class="comment-syntax"> =</span>
<ul class="endnotetexts"><li>This code is used in <a href="21-ac.html#SP8">&#167;8</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP8_5"></a><b>&#167;8.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Make one-entry AL with operand</span><span class="named-paragraph-number">8.5</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -613,33 +579,33 @@ values, of the kind to which the activity applies.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">R</span><span class="plain-syntax">[2]) &amp;&amp; (</span><a href="14-ds2.html#SP25" class="function-link"><span class="function-syntax">Dash::validate_parameter</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">RP</span><span class="plain-syntax">[2], </span><span class="identifier-syntax">an</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">activity_on_what_kind</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">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">activity_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">al</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="21-ac.html#SP10_4_1" class="named-paragraph-link"><span class="named-paragraph">Make one-entry AL</span><span class="named-paragraph-number">10.4.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="21-ac.html#SP8_4_1" class="named-paragraph-link"><span class="named-paragraph">Make one-entry AL</span><span class="named-paragraph-number">8.4.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">al</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">activity</span><span class="plain-syntax"> = </span><span class="identifier-syntax">an</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">al</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">acting_on</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RP</span><span class="plain-syntax">[2];</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="21-ac.html#SP10">&#167;10</a> (twice).</li></ul>
<p class="commentary firstcommentary"><a id="SP10_6"></a><b>&#167;10.6. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Make one-entry AL with unparsed text</span><span class="named-paragraph-number">10.6</span></span><span class="comment-syntax"> =</span>
<ul class="endnotetexts"><li>This code is used in <a href="21-ac.html#SP8">&#167;8</a> (twice).</li></ul>
<p class="commentary firstcommentary"><a id="SP8_6"></a><b>&#167;8.6. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Make one-entry AL with unparsed text</span><span class="named-paragraph-number">8.6</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">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cond</span><span class="plain-syntax"> = </span><a href="14-sp.html#SP8" class="function-link"><span class="function-syntax">Specifications::new_UNKNOWN</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">activity_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">al</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="21-ac.html#SP10_4_1" class="named-paragraph-link"><span class="named-paragraph">Make one-entry AL</span><span class="named-paragraph-number">10.4.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="21-ac.html#SP8_4_1" class="named-paragraph-link"><span class="named-paragraph">Make one-entry AL</span><span class="named-paragraph-number">8.4.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">al</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">only_when</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cond</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="21-ac.html#SP10">&#167;10</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP10_7"></a><b>&#167;10.7. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Make one-entry AL with condition</span><span class="named-paragraph-number">10.7</span></span><span class="comment-syntax"> =</span>
<ul class="endnotetexts"><li>This code is used in <a href="21-ac.html#SP8">&#167;8</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP8_7"></a><b>&#167;8.7. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Make one-entry AL with condition</span><span class="named-paragraph-number">8.7</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">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cond</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RP</span><span class="plain-syntax">[2];</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="14-ds2.html#SP24" class="function-link"><span class="function-syntax">Dash::validate_conditional_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cond</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</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">activity_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">al</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="21-ac.html#SP10_4_1" class="named-paragraph-link"><span class="named-paragraph">Make one-entry AL</span><span class="named-paragraph-number">10.4.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="21-ac.html#SP8_4_1" class="named-paragraph-link"><span class="named-paragraph">Make one-entry AL</span><span class="named-paragraph-number">8.4.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">al</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">only_when</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cond</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="21-ac.html#SP10">&#167;10</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP10_4_1"></a><b>&#167;10.4.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Make one-entry AL</span><span class="named-paragraph-number">10.4.1</span></span><span class="comment-syntax"> =</span>
<ul class="endnotetexts"><li>This code is used in <a href="21-ac.html#SP8">&#167;8</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP8_4_1"></a><b>&#167;8.4.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Make one-entry AL</span><span class="named-paragraph-number">8.4.1</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -651,8 +617,8 @@ values, of the kind to which the activity applies.
<span class="plain-syntax"> </span><span class="identifier-syntax">al</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">activity</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> ==&gt; { -, </span><span class="identifier-syntax">al</span><span class="plain-syntax"> };</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="21-ac.html#SP10_4">&#167;10.4</a>, <a href="21-ac.html#SP10_5">&#167;10.5</a>, <a href="21-ac.html#SP10_6">&#167;10.6</a>, <a href="21-ac.html#SP10_7">&#167;10.7</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP11"></a><b>&#167;11. </b>And this parses individual activity names.
<ul class="endnotetexts"><li>This code is used in <a href="21-ac.html#SP8_4">&#167;8.4</a>, <a href="21-ac.html#SP8_5">&#167;8.5</a>, <a href="21-ac.html#SP8_6">&#167;8.6</a>, <a href="21-ac.html#SP8_7">&#167;8.7</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP9"></a><b>&#167;9. </b>And this parses individual activity names.
</p>
<pre class="Preform-displayed-code all-displayed-code code-font">
@ -666,16 +632,16 @@ values, of the kind to which the activity applies.
<span class="Preform-plain-syntax">}</span>
</pre>
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
<p class="commentary firstcommentary"><a id="SP12"></a><b>&#167;12. </b></p>
<p class="commentary firstcommentary"><a id="SP10"></a><b>&#167;10. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">parsing_al_conditions</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">activity_list</span><span class="plain-syntax"> *</span><span class="function-syntax">Activities::parse_list</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">Activities::parse_list</span></span>:<br/>Phrase Runtime Context Data - <a href="22-prcd.html#SP9">&#167;9</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">return</span><span class="plain-syntax"> </span><a href="21-ac.html#SP14" class="function-link"><span class="function-syntax">Activities::parse_list_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
<span class="reserved-syntax">activity_list</span><span class="plain-syntax"> *</span><span class="function-syntax">Activities::parse_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">Activities::parse_list</span></span>:<br/>Phrase Runtime Context Data - <a href="22-prcd.html#SP9">&#167;9</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">return</span><span class="plain-syntax"> </span><a href="21-ac.html#SP12" class="function-link"><span class="function-syntax">Activities::parse_list_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</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="SP13"></a><b>&#167;13. </b>It's convenient not to look too closely at the condition sometimes.
<p class="commentary firstcommentary"><a id="SP11"></a><b>&#167;11. </b>It's convenient not to look too closely at the condition sometimes.
</p>
<pre class="Preform-displayed-code all-displayed-code code-font">
@ -685,11 +651,11 @@ values, of the kind to which the activity applies.
<span class="Preform-plain-syntax">}</span>
</pre>
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
<p class="commentary firstcommentary"><a id="SP14"></a><b>&#167;14. </b>All of which sets up the context for:
<p class="commentary firstcommentary"><a id="SP12"></a><b>&#167;12. </b>All of which sets up the context for:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">activity_list</span><span class="plain-syntax"> *</span><span class="function-syntax">Activities::parse_list_inner</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">Activities::parse_list_inner</span></span>:<br/><a href="21-ac.html#SP12">&#167;12</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">state</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">activity_list</span><span class="plain-syntax"> *</span><span class="function-syntax">Activities::parse_list_inner</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">Activities::parse_list_inner</span></span>:<br/><a href="21-ac.html#SP10">&#167;10</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">state</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">save_pac</span><span class="plain-syntax"> = </span><span class="identifier-syntax">parsing_al_conditions</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parsing_al_conditions</span><span class="plain-syntax"> = </span><span class="identifier-syntax">state</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">rv</span><span class="plain-syntax"> = </span><span class="function-syntax">&lt;run-time-context&gt;</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
@ -698,7 +664,7 @@ values, of the kind to which the activity applies.
<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">void</span><span class="plain-syntax"> </span><span class="function-syntax">Activities::emit_activity_list</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">Activities::emit_activity_list</span></span>:<br/>Phrase Runtime Context Data - <a href="22-prcd.html#SP10_5">&#167;10.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">activity_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">al</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Activities::emit_activity_list</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">Activities::emit_activity_list</span></span>:<br/>Phrase Runtime Context Data - <a href="22-prcd.html#SP10_5">&#167;10.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">activity_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">al</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">negate_me</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">downs</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">al</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">ACL_parity</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">negate_me</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">negate_me</span><span class="plain-syntax">) { </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">NOT_BIP</span><span class="plain-syntax">); </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">()); </span><span class="identifier-syntax">downs</span><span class="plain-syntax">++; }</span>
@ -732,10 +698,10 @@ values, of the kind to which the activity applies.
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">downs</span><span class="plain-syntax"> &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) { </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">()); </span><span class="identifier-syntax">downs</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">Activities::compile_activity_constants</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">Activities::compile_activity_constants</span></span>:<br/>How To Compile - <a href="1-htc.html#SP2_8">&#167;2.8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Activities::compile_activity_constants</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">Activities::compile_activity_constants</span></span>:<br/>How To Compile - <a href="1-htc.html#SP2_8">&#167;2.8</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">void</span><span class="plain-syntax"> </span><span class="function-syntax">Activities::Activity_before_rulebooks_array</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">Activities::Activity_before_rulebooks_array</span></span>:<br/>How To Compile - <a href="1-htc.html#SP2_8">&#167;2.8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Activities::Activity_before_rulebooks_array</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">Activities::Activity_before_rulebooks_array</span></span>:<br/>How To Compile - <a href="1-htc.html#SP2_8">&#167;2.8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="27-hr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">ACTIVITY_BEFORE_RULEBOOKS_HL</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><a href="27-em.html#SP3" class="function-link"><span class="function-syntax">Emit::named_array_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_number</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">activity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">av</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="constant-syntax">0</span><span class="plain-syntax">;</span>
@ -749,7 +715,7 @@ values, of the kind to which the activity applies.
<span class="plain-syntax"> </span><a href="27-hr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_available</span></a><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Activities::Activity_for_rulebooks_array</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">Activities::Activity_for_rulebooks_array</span></span>:<br/>How To Compile - <a href="1-htc.html#SP2_8">&#167;2.8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Activities::Activity_for_rulebooks_array</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">Activities::Activity_for_rulebooks_array</span></span>:<br/>How To Compile - <a href="1-htc.html#SP2_8">&#167;2.8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="27-hr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">ACTIVITY_FOR_RULEBOOKS_HL</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><a href="27-em.html#SP3" class="function-link"><span class="function-syntax">Emit::named_array_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_number</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">activity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">av</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="constant-syntax">0</span><span class="plain-syntax">;</span>
@ -763,7 +729,7 @@ values, of the kind to which the activity applies.
<span class="plain-syntax"> </span><a href="27-hr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_available</span></a><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Activities::Activity_after_rulebooks_array</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">Activities::Activity_after_rulebooks_array</span></span>:<br/>How To Compile - <a href="1-htc.html#SP2_8">&#167;2.8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Activities::Activity_after_rulebooks_array</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">Activities::Activity_after_rulebooks_array</span></span>:<br/>How To Compile - <a href="1-htc.html#SP2_8">&#167;2.8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="27-hr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">ACTIVITY_AFTER_RULEBOOKS_HL</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><a href="27-em.html#SP3" class="function-link"><span class="function-syntax">Emit::named_array_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_number</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">activity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">av</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="constant-syntax">0</span><span class="plain-syntax">;</span>
@ -777,7 +743,7 @@ values, of the kind to which the activity applies.
<span class="plain-syntax"> </span><a href="27-hr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_available</span></a><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Activities::Activity_atb_rulebooks_array</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">Activities::Activity_atb_rulebooks_array</span></span>:<br/>How To Compile - <a href="1-htc.html#SP2_8">&#167;2.8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Activities::Activity_atb_rulebooks_array</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">Activities::Activity_atb_rulebooks_array</span></span>:<br/>How To Compile - <a href="1-htc.html#SP2_8">&#167;2.8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="27-hr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">ACTIVITY_ATB_RULEBOOKS_HL</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><a href="27-em.html#SP3" class="function-link"><span class="function-syntax">Emit::named_byte_array_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_number</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">activity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">av</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="constant-syntax">0</span><span class="plain-syntax">;</span>
@ -791,7 +757,7 @@ values, of the kind to which the activity applies.
<span class="plain-syntax"> </span><a href="27-hr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_available</span></a><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Activities::annotate_list_for_cross_references</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">Activities::annotate_list_for_cross_references</span></span>:<br/>Phrase Runtime Context Data - <a href="22-prcd.html#SP10_5">&#167;10.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">activity_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">avl</span><span class="plain-syntax">, </span><span class="reserved-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Activities::annotate_list_for_cross_references</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">Activities::annotate_list_for_cross_references</span></span>:<br/>Phrase Runtime Context Data - <a href="22-prcd.html#SP10_5">&#167;10.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">activity_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">avl</span><span class="plain-syntax">, </span><span class="reserved-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (; </span><span class="identifier-syntax">avl</span><span class="plain-syntax">; </span><span class="identifier-syntax">avl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">avl</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</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">avl</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">activity</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">activity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">av</span><span class="plain-syntax"> = </span><span class="identifier-syntax">avl</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">activity</span><span class="plain-syntax">;</span>
@ -802,7 +768,7 @@ values, of the kind to which the activity applies.
<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">Activities::index_cross_references</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">Activities::index_cross_references</span></span>:<br/><a href="21-ac.html#SP9">&#167;9</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">activity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">av</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Activities::index_cross_references</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">Activities::index_cross_references</span></span>:<br/><a href="21-ac.html#SP7">&#167;7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">activity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">av</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">activity_crossref</span><span class="plain-syntax"> *</span><span class="identifier-syntax">acr</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">acr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">av</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">cross_references</span><span class="plain-syntax">; </span><span class="identifier-syntax">acr</span><span class="plain-syntax">; </span><span class="identifier-syntax">acr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">acr</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph</span><span class="plain-syntax"> = </span><span class="identifier-syntax">acr</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">rule_dependent</span><span class="plain-syntax">;</span>

View file

@ -150,7 +150,7 @@ its outcomes.
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">rulebook_outcome</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure named_rulebook_outcome is accessed in 2/sq, 2/si, 4/nuor, 4/dbtr, 4/rpr, 5/ma, 5/pk, 6/ins, 6/nv, 9/ef, 11/sm, 14/rv, 14/lv, 14/ds2, 15/pr, 15/ep, 15/vp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 20/eq, 21/rl, 21/rl2, 21/sv, 21/ac, 22/pu, 22/dptd, 22/po, 22/pav, 25/cii, 26/ts, 26/uoart and here.</li><li>The structure rulebook_outcome is accessed in 3/ptmn, 3/cs, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 4/tr2, 4/dbtr, 4/rpr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 20/eq, 21/rl, 21/rl2, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 27/cm and here.</li></ul>
<ul class="endnotetexts"><li>The structure named_rulebook_outcome is accessed in 2/sq, 2/si, 4/nuor, 4/dbtr, 4/rpr, 5/ma, 5/pk, 6/ins, 6/nv, 9/ef, 11/sm, 14/rv, 14/lv, 14/ds2, 15/pr, 15/ep, 15/vp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 20/eq, 21/rl, 21/rl2, 21/sv, 21/ac, 22/pu, 22/dptd, 22/po, 22/pav, 25/cii, 26/ts, 26/uoart and here.</li><li>The structure rulebook_outcome is accessed in 3/ptmn, 3/cs, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 4/tr2, 4/dbtr, 4/rpr, 4/nar, 4/nlpr, 4/nrr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 20/eq, 21/rl, 21/rl2, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 27/cm and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP5"></a><b>&#167;5. </b></p>
<pre class="displayed-code all-displayed-code code-font">

View file

@ -176,7 +176,7 @@ have affected it in this way:
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">placement_affecting</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure placement_affecting is accessed in 3/ptmn, 3/cs, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 4/tr2, 4/dbtr, 4/rpr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 20/eq, 21/rl, 21/fao, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 27/cm and here.</li></ul>
<ul class="endnotetexts"><li>The structure placement_affecting is accessed in 3/ptmn, 3/cs, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 4/tr2, 4/dbtr, 4/rpr, 4/nar, 4/nlpr, 4/nrr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 20/eq, 21/rl, 21/fao, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 27/cm and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP6"></a><b>&#167;6. </b>As rulebooks are declared, the first few are quietly copied into
a small array: that way, we can always obtain a pointer to, say, the
turn sequence rules by looking up <span class="extract"><span class="extract-syntax">built_in_rulebooks[TURN_SEQUENCE_RB]</span></span>.
@ -382,7 +382,7 @@ built (for instance, scene endings).
<span class="plain-syntax"> </span><a href="21-fao.html#SP5" class="function-link"><span class="function-syntax">Rulebooks::Outcomes::get_outcome_kind</span></a><span class="plain-syntax">(&amp;(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">my_outcomes</span><span class="plain-syntax">)));</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="function-syntax">Rulebooks::new_automatic</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">Rulebooks::new_automatic</span></span>:<br/>Activities - <a href="21-ac.html#SP6">&#167;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">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">basis</span><span class="plain-syntax">,</span>
<span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="function-syntax">Rulebooks::new_automatic</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">Rulebooks::new_automatic</span></span>:<br/>Activities - <a href="21-ac.html#SP4">&#167;4</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">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">basis</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">oc</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">ata</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">ubfaa</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">rda</span><span class="plain-syntax">, </span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax"> = </span><a href="21-rl2.html#SP10" class="function-link"><span class="function-syntax">Rulebooks::new</span></a><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Kinds::binary_construction</span><span class="plain-syntax">(</span><span class="identifier-syntax">CON_rulebook</span><span class="plain-syntax">, </span><span class="identifier-syntax">basis</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_nil</span><span class="plain-syntax">), </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">R</span><span class="plain-syntax">);</span>
@ -455,16 +455,16 @@ built (for instance, scene endings).
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="21-fao.html#SP12" class="function-link"><span class="function-syntax">Rulebooks::Outcomes::get_focus_parameter_kind</span></a><span class="plain-syntax">(&amp;(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">my_focus</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">Rulebooks::used_by_future_actions</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">Rulebooks::used_by_future_actions</span></span>:<br/>Activities - <a href="21-ac.html#SP14">&#167;14</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::used_by_future_actions</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">Rulebooks::used_by_future_actions</span></span>:<br/>Activities - <a href="21-ac.html#SP12">&#167;12</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</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">rb</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">used_by_future_action_activity</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">Rulebooks::is_empty</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">Rulebooks::is_empty</span></span>:<br/><a href="21-rl2.html#SP24">&#167;24</a><br/>Activities - <a href="21-ac.html#SP9">&#167;9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">, </span><span class="reserved-syntax">rule_context</span><span class="plain-syntax"> </span><span class="identifier-syntax">rc</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::is_empty</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">Rulebooks::is_empty</span></span>:<br/><a href="21-rl2.html#SP24">&#167;24</a><br/>Activities - <a href="21-ac.html#SP7">&#167;7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">, </span><span class="reserved-syntax">rule_context</span><span class="plain-syntax"> </span><span class="identifier-syntax">rc</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">rb</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">return</span><span class="plain-syntax"> </span><a href="21-rb.html#SP17" class="function-link"><span class="function-syntax">Rules::Bookings::list_is_empty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">rule_list</span><span class="plain-syntax">, </span><span class="identifier-syntax">rc</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">Rulebooks::no_rules</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">Rulebooks::no_rules</span></span>:<br/><a href="21-rl2.html#SP24">&#167;24</a><br/>Activities - <a href="21-ac.html#SP9">&#167;9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::no_rules</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">Rulebooks::no_rules</span></span>:<br/><a href="21-rl2.html#SP24">&#167;24</a><br/>Activities - <a href="21-ac.html#SP7">&#167;7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</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">rb</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="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="21-rb.html#SP17" class="function-link"><span class="function-syntax">Rules::Bookings::no_rules_in_list</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">rule_list</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
@ -592,7 +592,7 @@ built (for instance, scene endings).
<span class="plain-syntax"> </span><a href="21-sv.html#SP3" class="function-link"><span class="function-syntax">StackedVariables::add_empty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">owned_by_rb</span><span class="plain-syntax">, </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">cnode</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">down</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</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">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::make_stvs_accessible</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">Rulebooks::make_stvs_accessible</span></span>:<br/>Activities - <a href="21-ac.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">, </span><span class="reserved-syntax">stacked_variable_owner</span><span class="plain-syntax"> *</span><span class="identifier-syntax">stvo</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::make_stvs_accessible</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">Rulebooks::make_stvs_accessible</span></span>:<br/>Activities - <a href="21-ac.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">, </span><span class="reserved-syntax">stacked_variable_owner</span><span class="plain-syntax"> *</span><span class="identifier-syntax">stvo</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">accessible_from_rb</span><span class="plain-syntax"> = </span><a href="21-sv.html#SP3" class="function-link"><span class="function-syntax">StackedVariables::add_owner_to_list</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">accessible_from_rb</span><span class="plain-syntax">, </span><span class="identifier-syntax">stvo</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
@ -676,7 +676,7 @@ built (for instance, scene endings).
<span class="plain-syntax"> </span><a href="21-rb.html#SP16" class="function-link"><span class="function-syntax">Rules::Bookings::list_log</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">rule_list</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">rule_context</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::no_rule_context</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">Rulebooks::no_rule_context</span></span>:<br/><a href="21-rl2.html#SP24">&#167;24</a><br/>Activities - <a href="21-ac.html#SP9">&#167;9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">rule_context</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::no_rule_context</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">Rulebooks::no_rule_context</span></span>:<br/><a href="21-rl2.html#SP24">&#167;24</a><br/>Activities - <a href="21-ac.html#SP7">&#167;7</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">rule_context</span><span class="plain-syntax"> </span><span class="identifier-syntax">rc</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">rc</span><span class="plain-syntax">.</span><span class="element-syntax">action_context</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
@ -715,7 +715,7 @@ built (for instance, scene endings).
<span class="plain-syntax">}</span>
<span class="plain-syntax">#</span><span class="identifier-syntax">endif</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::index</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">Rulebooks::index</span></span>:<br/><a href="21-rl2.html#SP24">&#167;24</a><br/>Activities - <a href="21-ac.html#SP9">&#167;9</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">billing</span><span class="plain-syntax">, </span><span class="reserved-syntax">rule_context</span><span class="plain-syntax"> </span><span class="identifier-syntax">rc</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">resp_count</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::index</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">Rulebooks::index</span></span>:<br/><a href="21-rl2.html#SP24">&#167;24</a><br/>Activities - <a href="21-ac.html#SP7">&#167;7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">billing</span><span class="plain-syntax">, </span><span class="reserved-syntax">rule_context</span><span class="plain-syntax"> </span><span class="identifier-syntax">rc</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">resp_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">suppress_outcome</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">t</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rb</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="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">billing</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 billing for rb index"</span><span class="plain-syntax">);</span>
@ -1117,16 +1117,16 @@ popular rulebooks, showing their contents in logical order.
<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><a href="21-rl2.html#SP24" class="function-link"><span class="function-syntax">Rulebooks::index_rules_box</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"Startup rules"</span><span class="plain-syntax">, </span><span class="identifier-syntax">EMPTY_WORDING</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">built_in_rulebooks</span><span class="plain-syntax">[</span><span class="constant-syntax">STARTUP_RB</span><span class="plain-syntax">], </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP9" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">STARTING_VIRTUAL_MACHINE_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP9" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">PRINTING_BANNER_TEXT_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP7" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">STARTING_VIRTUAL_MACHINE_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP7" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">PRINTING_BANNER_TEXT_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-rl2.html#SP24" class="function-link"><span class="function-syntax">Rulebooks::index_rules_box</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"Turn sequence rules"</span><span class="plain-syntax">, </span><span class="identifier-syntax">EMPTY_WORDING</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">built_in_rulebooks</span><span class="plain-syntax">[</span><span class="constant-syntax">TURN_SEQUENCE_RB</span><span class="plain-syntax">], </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP9" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">CONSTRUCTING_STATUS_LINE_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP7" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">CONSTRUCTING_STATUS_LINE_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-rl2.html#SP24" class="function-link"><span class="function-syntax">Rulebooks::index_rules_box</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"Shutdown rules"</span><span class="plain-syntax">, </span><span class="identifier-syntax">EMPTY_WORDING</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">built_in_rulebooks</span><span class="plain-syntax">[</span><span class="constant-syntax">SHUTDOWN_RB</span><span class="plain-syntax">], </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP9" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">AMUSING_A_VICTORIOUS_PLAYER_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP9" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">PRINTING_PLAYERS_OBITUARY_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP9" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">DEALING_WITH_FINAL_QUESTION_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP7" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">AMUSING_A_VICTORIOUS_PLAYER_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP7" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">PRINTING_PLAYERS_OBITUARY_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP7" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">DEALING_WITH_FINAL_QUESTION_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="21-rl2.html#SP23">&#167;23</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP23_2"></a><b>&#167;23.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Index the segment for the sequence of play rulebooks</span><span class="named-paragraph-number">23.2</span></span><span class="comment-syntax"> =</span>
@ -1159,16 +1159,16 @@ popular rulebooks, showing their contents in logical order.
<span class="plain-syntax"> </span><span class="string-syntax">"of the following activities and rulebooks in its work."</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><a href="21-rl2.html#SP24" class="function-link"><span class="function-syntax">Rulebooks::index_rules_box</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"Does the player mean"</span><span class="plain-syntax">, </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"rules_dtpm"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">built_in_rulebooks</span><span class="plain-syntax">[</span><span class="constant-syntax">DOES_THE_PLAYER_MEAN_RB</span><span class="plain-syntax">], </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP9" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">READING_A_COMMAND_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP9" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">DECIDING_SCOPE_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP9" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">DECIDING_CONCEALED_POSSESS_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP9" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">DECIDING_WHETHER_ALL_INC_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP9" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">CLARIFYING_PARSERS_CHOICE_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP9" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">ASKING_WHICH_DO_YOU_MEAN_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP9" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">PRINTING_A_PARSER_ERROR_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP9" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">SUPPLYING_A_MISSING_NOUN_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP9" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">SUPPLYING_A_MISSING_SECOND_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP9" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">IMPLICITLY_TAKING_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP7" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">READING_A_COMMAND_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP7" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">DECIDING_SCOPE_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP7" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">DECIDING_CONCEALED_POSSESS_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP7" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">DECIDING_WHETHER_ALL_INC_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP7" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">CLARIFYING_PARSERS_CHOICE_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP7" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">ASKING_WHICH_DO_YOU_MEAN_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP7" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">PRINTING_A_PARSER_ERROR_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP7" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">SUPPLYING_A_MISSING_NOUN_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP7" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">SUPPLYING_A_MISSING_SECOND_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP7" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">IMPLICITLY_TAKING_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="21-rl2.html#SP23">&#167;23</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP23_4"></a><b>&#167;23.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Index the segment for the main action rulebooks</span><span class="named-paragraph-number">23.4</span></span><span class="comment-syntax"> =</span>
@ -1225,7 +1225,7 @@ popular rulebooks, showing their contents in logical order.
<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="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&lt;b&gt;How responses are printed&lt;/b&gt;"</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_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">); </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"The Standard Rules, and some extensions, reply to the player's "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"commands with messages which are able to be modified."</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><a href="21-ac.html#SP9" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">PRINTING_RESPONSE_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP7" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">PRINTING_RESPONSE_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="21-rl2.html#SP23">&#167;23</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP23_7"></a><b>&#167;23.7. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Index the segment for the accessibility rulebooks</span><span class="named-paragraph-number">23.7</span></span><span class="comment-syntax"> =</span>
@ -1249,11 +1249,11 @@ popular rulebooks, showing their contents in logical order.
<pre class="displayed-code all-displayed-code code-font">
<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="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&lt;b&gt;Light and darkness&lt;/b&gt;"</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_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">); </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"These activities control how we describe darkness."</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><a href="21-ac.html#SP9" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">PRINTING_NAME_OF_DARK_ROOM_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP9" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">PRINTING_DESC_OF_DARK_ROOM_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP9" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">PRINTING_NEWS_OF_DARKNESS_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP9" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">PRINTING_NEWS_OF_LIGHT_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP9" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">REFUSAL_TO_ACT_IN_DARK_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP7" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">PRINTING_NAME_OF_DARK_ROOM_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP7" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">PRINTING_DESC_OF_DARK_ROOM_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP7" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">PRINTING_NEWS_OF_DARKNESS_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP7" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">PRINTING_NEWS_OF_LIGHT_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP7" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">REFUSAL_TO_ACT_IN_DARK_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="21-rl2.html#SP23">&#167;23</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP23_9"></a><b>&#167;23.9. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Index the segment for the description rulebooks</span><span class="named-paragraph-number">23.9</span></span><span class="comment-syntax"> =</span>
@ -1263,18 +1263,18 @@ popular rulebooks, showing their contents in logical order.
<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="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&lt;b&gt;How things are described&lt;/b&gt;"</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_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">); </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"These activities control what is printed when naming rooms or "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"things, and their descriptions."</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><a href="21-ac.html#SP9" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">PRINTING_THE_NAME_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP9" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">PRINTING_THE_PLURAL_NAME_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP9" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">PRINTING_A_NUMBER_OF_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP9" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">PRINTING_ROOM_DESC_DETAILS_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP9" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">PRINTING_INVENTORY_DETAILS_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP9" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">LISTING_CONTENTS_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP9" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">GROUPING_TOGETHER_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP9" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">WRITING_A_PARAGRAPH_ABOUT_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP9" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">LISTING_NONDESCRIPT_ITEMS_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP9" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">PRINTING_LOCALE_DESCRIPTION_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP9" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">CHOOSING_NOTABLE_LOCALE_OBJ_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP9" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">PRINTING_LOCALE_PARAGRAPH_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP7" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">PRINTING_THE_NAME_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP7" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">PRINTING_THE_PLURAL_NAME_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP7" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">PRINTING_A_NUMBER_OF_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP7" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">PRINTING_ROOM_DESC_DETAILS_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP7" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">PRINTING_INVENTORY_DETAILS_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP7" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">LISTING_CONTENTS_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP7" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">GROUPING_TOGETHER_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP7" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">WRITING_A_PARAGRAPH_ABOUT_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP7" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">LISTING_NONDESCRIPT_ITEMS_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP7" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">PRINTING_LOCALE_DESCRIPTION_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP7" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">CHOOSING_NOTABLE_LOCALE_OBJ_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP7" class="function-link"><span class="function-syntax">Activities::index_by_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">PRINTING_LOCALE_PARAGRAPH_ACT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="21-rl2.html#SP23">&#167;23</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP23_10"></a><b>&#167;23.10. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Index the segment for new rulebooks and activities</span><span class="named-paragraph-number">23.10</span></span><span class="comment-syntax"> =</span>
@ -1313,7 +1313,7 @@ popular rulebooks, showing their contents in logical order.
<span class="plain-syntax"> </span><span class="identifier-syntax">source_file</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sf</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Lexer::file_of_origin</span><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">av</span><span class="plain-syntax">-&gt;</span><span class="element-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">E</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">sf</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">Extensions::corresponding_to</span><span class="plain-syntax">(</span><span class="identifier-syntax">sf</span><span class="plain-syntax">) == </span><span class="identifier-syntax">E</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP9" class="function-link"><span class="function-syntax">Activities::index</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">av</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP7" class="function-link"><span class="function-syntax">Activities::index</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">av</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="21-rl2.html#SP23_10">&#167;23.10</a>, <a href="21-rl2.html#SP23_11">&#167;23.11</a>.</li></ul>
@ -1345,7 +1345,7 @@ popular rulebooks, showing their contents in logical order.
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">unique_xtra_no</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::index_rules_box</span><button class="popup" onclick="togglePopup('usagePopup36')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup36">Usage of <span class="code-font"><span class="function-syntax">Rulebooks::index_rules_box</span></span>:<br/><a href="21-rl2.html#SP23_1">&#167;23.1</a>, <a href="21-rl2.html#SP23_2">&#167;23.2</a>, <a href="21-rl2.html#SP23_3">&#167;23.3</a>, <a href="21-rl2.html#SP23_4">&#167;23.4</a>, <a href="21-rl2.html#SP23_5">&#167;23.5</a>, <a href="21-rl2.html#SP23_7">&#167;23.7</a>, <a href="21-rl2.html#SP23_10_1">&#167;23.10.1</a><br/>Activities - <a href="21-ac.html#SP9">&#167;9</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">name</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">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">doc_link</span><span class="plain-syntax">,</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::index_rules_box</span><button class="popup" onclick="togglePopup('usagePopup36')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup36">Usage of <span class="code-font"><span class="function-syntax">Rulebooks::index_rules_box</span></span>:<br/><a href="21-rl2.html#SP23_1">&#167;23.1</a>, <a href="21-rl2.html#SP23_2">&#167;23.2</a>, <a href="21-rl2.html#SP23_3">&#167;23.3</a>, <a href="21-rl2.html#SP23_4">&#167;23.4</a>, <a href="21-rl2.html#SP23_5">&#167;23.5</a>, <a href="21-rl2.html#SP23_7">&#167;23.7</a>, <a href="21-rl2.html#SP23_10_1">&#167;23.10.1</a><br/>Activities - <a href="21-ac.html#SP7">&#167;7</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">name</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">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">doc_link</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">, </span><span class="reserved-syntax">activity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">av</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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">indent</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">hide_behind_plus</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">xtra_no</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">rb</span><span class="plain-syntax">) </span><span class="identifier-syntax">xtra_no</span><span class="plain-syntax"> = </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">;</span>
@ -1357,7 +1357,7 @@ popular rulebooks, showing their contents in logical order.
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</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">rb</span><span class="plain-syntax">) </span><span class="identifier-syntax">n</span><span class="plain-syntax"> = </span><a href="21-rl2.html#SP12" class="function-link"><span class="function-syntax">Rulebooks::no_rules</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</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">av</span><span class="plain-syntax">) </span><span class="identifier-syntax">n</span><span class="plain-syntax"> = </span><a href="21-ac.html#SP9" class="function-link"><span class="function-syntax">Activities::no_rules</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">av</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">av</span><span class="plain-syntax">) </span><span class="identifier-syntax">n</span><span class="plain-syntax"> = </span><a href="21-ac.html#SP7" class="function-link"><span class="function-syntax">Activities::no_rules</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">av</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">textual_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">name</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">textual_name</span><span class="plain-syntax">, </span><span class="string-syntax">"%s"</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
@ -1428,7 +1428,7 @@ popular rulebooks, showing their contents in logical order.
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">ignore_me</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="21-rl2.html#SP15" class="function-link"><span class="function-syntax">Rulebooks::index</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">rb</span><span class="plain-syntax">, </span><span class="string-syntax">""</span><span class="plain-syntax">, </span><a href="21-rl2.html#SP15" class="function-link"><span class="function-syntax">Rulebooks::no_rule_context</span></a><span class="plain-syntax">(), &amp;</span><span class="identifier-syntax">ignore_me</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">av</span><span class="plain-syntax">) </span><a href="21-ac.html#SP9" class="function-link"><span class="function-syntax">Activities::index_details</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">av</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">av</span><span class="plain-syntax">) </span><a href="21-ac.html#SP7" class="function-link"><span class="function-syntax">Activities::index_details</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">av</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">hide_behind_plus</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Index::extra_div_close</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">col</span><span class="plain-syntax">);</span>

View file

@ -101,7 +101,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">stacked_variable_owner_list</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure stacked_variable is accessed in 2/sq, 2/si, 4/nuor, 4/dbtr, 4/rpr, 5/ma, 5/pk, 6/ins, 6/nv, 9/ef, 11/sm, 14/lv, 14/ds2, 15/pr, 15/ep, 15/vp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 20/eq, 21/rl, 21/rl2, 21/fao, 21/ac, 22/pu, 22/dptd, 22/po, 22/pav, 25/cii, 26/ts, 26/uoart and here.</li><li>The structure stacked_variable_list is accessed in 3/ptmn, 3/cs, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 4/tr2, 4/dbtr, 4/rpr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 20/eq, 21/rl, 21/rl2, 21/fao, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 27/cm and here.</li><li>The structure stacked_variable_owner is private to this section.</li><li>The structure stacked_variable_owner_list is accessed in 3/ptmn, 3/cs, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 4/tr2, 4/dbtr, 4/rpr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 20/eq, 21/rl, 21/rl2, 21/fao, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 27/cm and here.</li></ul>
<ul class="endnotetexts"><li>The structure stacked_variable is accessed in 2/sq, 2/si, 4/nuor, 4/dbtr, 4/rpr, 5/ma, 5/pk, 6/ins, 6/nv, 9/ef, 11/sm, 14/lv, 14/ds2, 15/pr, 15/ep, 15/vp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 20/eq, 21/rl, 21/rl2, 21/fao, 21/ac, 22/pu, 22/dptd, 22/po, 22/pav, 25/cii, 26/ts, 26/uoart and here.</li><li>The structure stacked_variable_list is accessed in 3/ptmn, 3/cs, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 4/tr2, 4/dbtr, 4/rpr, 4/nar, 4/nlpr, 4/nrr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 20/eq, 21/rl, 21/rl2, 21/fao, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 27/cm and here.</li><li>The structure stacked_variable_owner is private to this section.</li><li>The structure stacked_variable_owner_list is accessed in 3/ptmn, 3/cs, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 4/tr2, 4/dbtr, 4/rpr, 4/nar, 4/nlpr, 4/nrr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 20/eq, 21/rl, 21/rl2, 21/fao, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 27/cm and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP2"></a><b>&#167;2. </b></p>
<pre class="displayed-code all-displayed-code code-font">
@ -158,7 +158,7 @@ function togglePopup(material_id) {
<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">stacked_variable_owner</span><span class="plain-syntax"> *</span><span class="function-syntax">StackedVariables::new_owner</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">StackedVariables::new_owner</span></span>:<br/>Rulebooks - <a href="21-rl2.html#SP10">&#167;10</a><br/>Activities - <a href="21-ac.html#SP6">&#167;6</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">stacked_variable_owner</span><span class="plain-syntax"> *</span><span class="function-syntax">StackedVariables::new_owner</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">StackedVariables::new_owner</span></span>:<br/>Rulebooks - <a href="21-rl2.html#SP10">&#167;10</a><br/>Activities - <a href="21-ac.html#SP4">&#167;4</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="plain-syntax"> </span><span class="reserved-syntax">stacked_variable_owner</span><span class="plain-syntax"> *</span><span class="identifier-syntax">stvo</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">stacked_variable_owner</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">stvo</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">recognition_id</span><span class="plain-syntax"> = </span><span class="identifier-syntax">id</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">stvo</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">no_stvs</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
@ -167,12 +167,12 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">stvo</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">StackedVariables::owner_empty</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">StackedVariables::owner_empty</span></span>:<br/>Rulebooks - <a href="21-rl2.html#SP14">&#167;14</a>, <a href="21-rl2.html#SP14_1">&#167;14.1</a><br/>Activities - <a href="21-ac.html#SP8">&#167;8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">stacked_variable_owner</span><span class="plain-syntax"> *</span><span class="identifier-syntax">stvo</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">StackedVariables::owner_empty</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">StackedVariables::owner_empty</span></span>:<br/>Rulebooks - <a href="21-rl2.html#SP14">&#167;14</a>, <a href="21-rl2.html#SP14_1">&#167;14.1</a><br/>Activities - <a href="21-ac.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">stacked_variable_owner</span><span class="plain-syntax"> *</span><span class="identifier-syntax">stvo</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">stvo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">no_stvs</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">stacked_variable</span><span class="plain-syntax"> *</span><span class="function-syntax">StackedVariables::add_empty</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">StackedVariables::add_empty</span></span>:<br/>Rulebooks - <a href="21-rl2.html#SP14">&#167;14</a><br/>Activities - <a href="21-ac.html#SP8">&#167;8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">stacked_variable_owner</span><span class="plain-syntax"> *</span><span class="identifier-syntax">stvo</span><span class="plain-syntax">,</span>
<span class="reserved-syntax">stacked_variable</span><span class="plain-syntax"> *</span><span class="function-syntax">StackedVariables::add_empty</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">StackedVariables::add_empty</span></span>:<br/>Rulebooks - <a href="21-rl2.html#SP14">&#167;14</a><br/>Activities - <a href="21-ac.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">stacked_variable_owner</span><span class="plain-syntax"> *</span><span class="identifier-syntax">stvo</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">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">stacked_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">stv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">stacked_variable</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">q</span><span class="plain-syntax">;</span>
@ -272,7 +272,7 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ostvl</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">StackedVariables::compile_frame_creator</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">StackedVariables::compile_frame_creator</span></span>:<br/>Rulebooks - <a href="21-rl2.html#SP14">&#167;14</a><br/>Activities - <a href="21-ac.html#SP8">&#167;8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">stacked_variable_owner</span><span class="plain-syntax"> *</span><span class="identifier-syntax">stvo</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">StackedVariables::compile_frame_creator</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">StackedVariables::compile_frame_creator</span></span>:<br/>Rulebooks - <a href="21-rl2.html#SP14">&#167;14</a><br/>Activities - <a href="21-ac.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">stacked_variable_owner</span><span class="plain-syntax"> *</span><span class="identifier-syntax">stvo</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">stvo</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="constant-syntax">0</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><a href="26-rt.html#SP1" class="function-link"><span class="function-syntax">Routines::begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
@ -363,7 +363,7 @@ function togglePopup(material_id) {
<p class="commentary firstcommentary"><a id="SP4"></a><b>&#167;4. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">StackedVariables::frame_creator</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">StackedVariables::frame_creator</span></span>:<br/>Rulebooks - <a href="21-rl2.html#SP14">&#167;14</a><br/>Activities - <a href="21-ac.html#SP8">&#167;8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">stacked_variable_owner</span><span class="plain-syntax"> *</span><span class="identifier-syntax">stvo</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">StackedVariables::frame_creator</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">StackedVariables::frame_creator</span></span>:<br/>Rulebooks - <a href="21-rl2.html#SP14">&#167;14</a><br/>Activities - <a href="21-ac.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">stacked_variable_owner</span><span class="plain-syntax"> *</span><span class="identifier-syntax">stvo</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">stvo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">stvo_iname</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>

View file

@ -354,8 +354,8 @@ all of them fail to decide, we return 0.
<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">AL1W</span><span class="plain-syntax">)) &amp;&amp; (</span><span class="identifier-syntax">Wordings::empty</span><span class="plain-syntax">(</span><span class="identifier-syntax">AL2W</span><span class="plain-syntax">))) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Wordings::empty</span><span class="plain-syntax">(</span><span class="identifier-syntax">AL1W</span><span class="plain-syntax">)) &amp;&amp; (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">AL2W</span><span class="plain-syntax">))) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -1;</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">AL1W</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">n1</span><span class="plain-syntax"> = </span><a href="21-ac.html#SP9" class="function-link"><span class="function-syntax">Activities::count_list</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rcd1</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">avl</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">n2</span><span class="plain-syntax"> = </span><a href="21-ac.html#SP9" class="function-link"><span class="function-syntax">Activities::count_list</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rcd2</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">avl</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">n1</span><span class="plain-syntax"> = </span><a href="21-ac.html#SP7" class="function-link"><span class="function-syntax">Activities::count_list</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rcd1</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">avl</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">n2</span><span class="plain-syntax"> = </span><a href="21-ac.html#SP7" class="function-link"><span class="function-syntax">Activities::count_list</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rcd2</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">avl</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">n1</span><span class="plain-syntax"> &gt; </span><span class="identifier-syntax">n2</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">n2</span><span class="plain-syntax"> &gt; </span><span class="identifier-syntax">n1</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -1;</span>
<span class="plain-syntax"> }</span>
@ -412,7 +412,7 @@ process.
<span class="plain-syntax"> </span><a href="24-sf.html#SP8" class="function-link"><span class="function-syntax">Frames::make_current</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">phsf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="24-sf.html#SP11" class="function-link"><span class="function-syntax">Frames::set_stvol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">phsf</span><span class="plain-syntax">, </span><span class="identifier-syntax">R</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">listed_stv_owners</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rcd</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">avl</span><span class="plain-syntax"> = </span><a href="21-ac.html#SP12" class="function-link"><span class="function-syntax">Activities::parse_list</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rcd</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">activity_context</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rcd</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">avl</span><span class="plain-syntax"> = </span><a href="21-ac.html#SP10" class="function-link"><span class="function-syntax">Activities::parse_list</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rcd</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">activity_context</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">save_cs</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
@ -585,7 +585,7 @@ with the default outcome return (see above).
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">activity_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">avl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">phrcd</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">avl</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">avl</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP14" class="function-link"><span class="function-syntax">Activities::emit_activity_list</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">avl</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP12" class="function-link"><span class="function-syntax">Activities::emit_activity_list</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">avl</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">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP5" 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_BadWhenWhile</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="string-syntax">"I don't understand the 'when/while' clause"</span><span class="plain-syntax">,</span>
@ -595,7 +595,7 @@ with the default outcome return (see above).
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::code</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP14" class="function-link"><span class="function-syntax">Activities::annotate_list_for_cross_references</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">avl</span><span class="plain-syntax">, </span><span class="identifier-syntax">ph</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP12" class="function-link"><span class="function-syntax">Activities::annotate_list_for_cross_references</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">avl</span><span class="plain-syntax">, </span><span class="identifier-syntax">ph</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">tests</span><span class="plain-syntax">++;</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="22-prcd.html#SP10">&#167;10</a>.</li></ul>

View file

@ -90,7 +90,7 @@ defined as "At 9:00 AM: ..." But two values are special:
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">use_as_event</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure use_as_event is accessed in 3/ptmn, 3/cs, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 4/tr2, 4/dbtr, 4/rpr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 20/eq, 21/rl, 21/rl2, 21/fao, 21/sv, 21/ac, 22/ph, 22/tp, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 27/cm and here.</li></ul>
<ul class="endnotetexts"><li>The structure use_as_event is accessed in 3/ptmn, 3/cs, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 4/tr2, 4/dbtr, 4/rpr, 4/nar, 4/nlpr, 4/nrr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 20/eq, 21/rl, 21/rl2, 21/fao, 21/sv, 21/ac, 22/ph, 22/tp, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 27/cm and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP4"></a><b>&#167;4. </b>Timed events are stored in two simple arrays, processed by run-time code.
</p>

View file

@ -144,7 +144,7 @@ marks it as deallocated.
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">local_variable</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure local_variable is accessed in 3/ptmn, 3/cs, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 4/tr2, 4/dbtr, 4/rpr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 20/eq, 21/rl, 21/rl2, 21/fao, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 27/cm and here.</li></ul>
<ul class="endnotetexts"><li>The structure local_variable is accessed in 3/ptmn, 3/cs, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 4/tr2, 4/dbtr, 4/rpr, 4/nar, 4/nlpr, 4/nrr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 20/eq, 21/rl, 21/rl2, 21/fao, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 27/cm and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP4"></a><b>&#167;4. </b>A local variable needs to be stored somewhere at run-time. The obvious
correspondence is to put these into I6 local variables, which are, in effect,
CPU registers. We won't need to do much in the way of register-allocation,
@ -393,12 +393,12 @@ scratch work-space which can be used in the compiled code.
<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="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">LocalVariables::add_named_call_as_symbol</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">LocalVariables::add_named_call_as_symbol</span></span>:<br/>Literal Patterns - <a href="6-lp.html#SP27">&#167;27</a><br/>Adjective Meanings - <a href="7-am.html#SP44">&#167;44</a><br/>Relations - <a href="7-rlt.html#SP15_2">&#167;15.2</a>, <a href="7-rlt.html#SP17">&#167;17</a>, <a href="7-rlt.html#SP29_1">&#167;29.1</a><br/>New Verbs - <a href="7-nv.html#SP17_1">&#167;17.1</a>, <a href="7-nv.html#SP17_2">&#167;17.2</a><br/>Extension Files - <a href="9-ef.html#SP6">&#167;6</a><br/>Cinders and Deferrals - <a href="12-cad.html#SP5">&#167;5</a><br/>Compile Deferred Propositions - <a href="12-cdp.html#SP2_1_5">&#167;2.1.5</a>, <a href="12-cdp.html#SP2_1_5_2">&#167;2.1.5.2</a><br/>Runtime Support for Kinds - <a href="13-rsfk.html#SP17_3">&#167;17.3</a>, <a href="13-rsfk.html#SP25_1">&#167;25.1</a>, <a href="13-rsfk.html#SP25_2">&#167;25.2</a>, <a href="13-rsfk.html#SP25_3">&#167;25.3</a>, <a href="13-rsfk.html#SP25_5">&#167;25.5</a>, <a href="13-rsfk.html#SP25_6_1">&#167;25.6.1</a>, <a href="13-rsfk.html#SP25_6_2">&#167;25.6.2</a>, <a href="13-rsfk.html#SP25_6_5">&#167;25.6.5</a>, <a href="13-rsfk.html#SP25_6_6">&#167;25.6.6</a>, <a href="13-rsfk.html#SP26">&#167;26</a><br/>Responses - <a href="17-rs.html#SP6_2">&#167;6.2</a>, <a href="17-rs.html#SP7_2">&#167;7.2</a><br/>Table Columns - <a href="19-tc.html#SP8">&#167;8</a><br/>Runtime Support for Tables - <a href="19-rsft.html#SP2">&#167;2</a><br/>Rules - <a href="21-rl.html#SP20">&#167;20</a><br/>Rule Bookings - <a href="21-rb.html#SP24_1_1">&#167;24.1.1</a><br/>Rulebooks - <a href="21-rl2.html#SP14_1">&#167;14.1</a><br/>Focus and Outcome - <a href="21-fao.html#SP10">&#167;10</a><br/>Stacked Variables - <a href="21-sv.html#SP3">&#167;3</a><br/>Chronology - <a href="24-ch.html#SP7">&#167;7</a><br/>Use Options at Run Time - <a href="26-uoart.html#SP1_1">&#167;1.1</a>, <a href="26-uoart.html#SP1_2">&#167;1.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">LocalVariables::add_named_call_as_symbol</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">LocalVariables::add_named_call_as_symbol</span></span>:<br/>Literal Patterns - <a href="6-lp.html#SP27">&#167;27</a><br/>Adjective Meanings - <a href="7-am.html#SP44">&#167;44</a><br/>Relations - <a href="7-rlt.html#SP9_2">&#167;9.2</a>, <a href="7-rlt.html#SP11">&#167;11</a>, <a href="7-rlt.html#SP23_1">&#167;23.1</a><br/>New Verbs - <a href="7-nv.html#SP17_1">&#167;17.1</a>, <a href="7-nv.html#SP17_2">&#167;17.2</a><br/>Extension Files - <a href="9-ef.html#SP6">&#167;6</a><br/>Cinders and Deferrals - <a href="12-cad.html#SP5">&#167;5</a><br/>Compile Deferred Propositions - <a href="12-cdp.html#SP2_1_5">&#167;2.1.5</a>, <a href="12-cdp.html#SP2_1_5_2">&#167;2.1.5.2</a><br/>Runtime Support for Kinds - <a href="13-rsfk.html#SP17_3">&#167;17.3</a>, <a href="13-rsfk.html#SP25_1">&#167;25.1</a>, <a href="13-rsfk.html#SP25_2">&#167;25.2</a>, <a href="13-rsfk.html#SP25_3">&#167;25.3</a>, <a href="13-rsfk.html#SP25_5">&#167;25.5</a>, <a href="13-rsfk.html#SP25_6_1">&#167;25.6.1</a>, <a href="13-rsfk.html#SP25_6_2">&#167;25.6.2</a>, <a href="13-rsfk.html#SP25_6_5">&#167;25.6.5</a>, <a href="13-rsfk.html#SP25_6_6">&#167;25.6.6</a>, <a href="13-rsfk.html#SP26">&#167;26</a><br/>Responses - <a href="17-rs.html#SP6_2">&#167;6.2</a>, <a href="17-rs.html#SP7_2">&#167;7.2</a><br/>Table Columns - <a href="19-tc.html#SP8">&#167;8</a><br/>Runtime Support for Tables - <a href="19-rsft.html#SP2">&#167;2</a><br/>Rules - <a href="21-rl.html#SP20">&#167;20</a><br/>Rule Bookings - <a href="21-rb.html#SP24_1_1">&#167;24.1.1</a><br/>Rulebooks - <a href="21-rl2.html#SP14_1">&#167;14.1</a><br/>Focus and Outcome - <a href="21-fao.html#SP10">&#167;10</a><br/>Stacked Variables - <a href="21-sv.html#SP3">&#167;3</a><br/>Chronology - <a href="24-ch.html#SP7">&#167;7</a><br/>Use Options at Run Time - <a href="26-uoart.html#SP1_1">&#167;1.1</a>, <a href="26-uoart.html#SP1_2">&#167;1.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</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">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">v</span><span class="plain-syntax"> = </span><a href="24-lv.html#SP11" class="function-link"><span class="function-syntax">LocalVariables::add_named_call</span></a><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">return</span><span class="plain-syntax"> </span><a href="24-lv.html#SP47" class="function-link"><span class="function-syntax">LocalVariables::declare_this</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">v</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="constant-syntax">8</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">LocalVariables::add_named_call_as_symbol_noting</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">LocalVariables::add_named_call_as_symbol_noting</span></span>:<br/>Relations - <a href="7-rlt.html#SP15_2">&#167;15.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> **</span><span class="identifier-syntax">lv</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">LocalVariables::add_named_call_as_symbol_noting</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">LocalVariables::add_named_call_as_symbol_noting</span></span>:<br/>Relations - <a href="7-rlt.html#SP9_2">&#167;9.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> **</span><span class="identifier-syntax">lv</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">v</span><span class="plain-syntax"> = </span><a href="24-lv.html#SP11" class="function-link"><span class="function-syntax">LocalVariables::add_named_call</span></a><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">lv</span><span class="plain-syntax">) *</span><span class="identifier-syntax">lv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">v</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="24-lv.html#SP47" class="function-link"><span class="function-syntax">LocalVariables::declare_this</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">v</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="constant-syntax">8</span><span class="plain-syntax">);</span>
@ -416,12 +416,12 @@ scratch work-space which can be used in the compiled code.
<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="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">LocalVariables::add_internal_local_c_as_symbol</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">LocalVariables::add_internal_local_c_as_symbol</span></span>:<br/>Relations - <a href="7-rlt.html#SP15">&#167;15</a><br/>Rule Bookings - <a href="21-rb.html#SP24_1_1">&#167;24.1.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">comment</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">LocalVariables::add_internal_local_c_as_symbol</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">LocalVariables::add_internal_local_c_as_symbol</span></span>:<br/>Relations - <a href="7-rlt.html#SP9">&#167;9</a><br/>Rule Bookings - <a href="21-rb.html#SP24_1_1">&#167;24.1.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">comment</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">v</span><span class="plain-syntax"> = </span><a href="24-lv.html#SP11" class="function-link"><span class="function-syntax">LocalVariables::add_internal_local_c</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">comment</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="24-lv.html#SP47" class="function-link"><span class="function-syntax">LocalVariables::declare_this</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">v</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="constant-syntax">8</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">LocalVariables::add_internal_local_c_as_symbol_noting</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">LocalVariables::add_internal_local_c_as_symbol_noting</span></span>:<br/>Relations - <a href="7-rlt.html#SP15_2">&#167;15.2</a>, <a href="7-rlt.html#SP29_2">&#167;29.2</a>, <a href="7-rlt.html#SP29_3">&#167;29.3</a>, <a href="7-rlt.html#SP29_4">&#167;29.4</a>, <a href="7-rlt.html#SP29_5">&#167;29.5</a>, <a href="7-rlt.html#SP29_6">&#167;29.6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">comment</span><span class="plain-syntax">, </span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> **</span><span class="identifier-syntax">lv</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">LocalVariables::add_internal_local_c_as_symbol_noting</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">LocalVariables::add_internal_local_c_as_symbol_noting</span></span>:<br/>Relations - <a href="7-rlt.html#SP9_2">&#167;9.2</a>, <a href="7-rlt.html#SP23_2">&#167;23.2</a>, <a href="7-rlt.html#SP23_3">&#167;23.3</a>, <a href="7-rlt.html#SP23_4">&#167;23.4</a>, <a href="7-rlt.html#SP23_5">&#167;23.5</a>, <a href="7-rlt.html#SP23_6">&#167;23.6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">comment</span><span class="plain-syntax">, </span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> **</span><span class="identifier-syntax">lv</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">v</span><span class="plain-syntax"> = </span><a href="24-lv.html#SP11" class="function-link"><span class="function-syntax">LocalVariables::add_internal_local_c</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">comment</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">lv</span><span class="plain-syntax">) *</span><span class="identifier-syntax">lv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">v</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="24-lv.html#SP47" class="function-link"><span class="function-syntax">LocalVariables::declare_this</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">v</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="constant-syntax">8</span><span class="plain-syntax">);</span>
@ -741,7 +741,7 @@ fake up a call parameter pro tem.)
<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">void</span><span class="plain-syntax"> </span><span class="function-syntax">LocalVariables::enable_possessive_form_of_it</span><button class="popup" onclick="togglePopup('usagePopup39')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup39">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::enable_possessive_form_of_it</span></span>:<br/>Adjective Meanings - <a href="7-am.html#SP35_2_1">&#167;35.2.1</a><br/>Relations - <a href="7-rlt.html#SP30">&#167;30</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">LocalVariables::enable_possessive_form_of_it</span><button class="popup" onclick="togglePopup('usagePopup39')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup39">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::enable_possessive_form_of_it</span></span>:<br/>Adjective Meanings - <a href="7-am.html#SP35_2_1">&#167;35.2.1</a><br/>Relations - <a href="7-rlt.html#SP24">&#167;24</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">ph_stack_frame</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phsf</span><span class="plain-syntax"> = </span><a href="24-sf.html#SP8" class="function-link"><span class="function-syntax">Frames::current_stack_frame</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">phsf</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 stack frame exists"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">phsf</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">local_value_variables</span><span class="plain-syntax">.</span><span class="element-syntax">its_form_allowed</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>

View file

@ -183,7 +183,7 @@ if that's active, and otherwise must be set as needed.
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">ph_stack_frame</span><span class="plain-syntax"> *</span><span class="identifier-syntax">current_frame</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">ph_stack_frame</span><span class="plain-syntax"> *</span><span class="function-syntax">Frames::current_stack_frame</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">Frames::current_stack_frame</span></span>:<br/><a href="24-sf.html#SP9">&#167;9</a>, <a href="24-sf.html#SP10">&#167;10</a>, <a href="24-sf.html#SP11">&#167;11</a>, <a href="24-sf.html#SP12">&#167;12</a>, <a href="24-sf.html#SP14">&#167;14</a>, <a href="24-sf.html#SP15">&#167;15</a><br/>Adjective Meanings - <a href="7-am.html#SP35_2">&#167;35.2</a>, <a href="7-am.html#SP35_2_1">&#167;35.2.1</a><br/>Relations - <a href="7-rlt.html#SP30">&#167;30</a><br/>Constants and Descriptions - <a href="10-cad.html#SP19_2">&#167;19.2</a><br/>Type Expressions and Values - <a href="10-teav.html#SP15">&#167;15</a>, <a href="10-teav.html#SP16">&#167;16</a><br/>Measurement Adjectives - <a href="15-ma.html#SP13">&#167;13</a><br/>Text Substitutions - <a href="17-ts.html#SP5">&#167;5</a>, <a href="17-ts.html#SP8">&#167;8</a>, <a href="17-ts.html#SP10">&#167;10</a>, <a href="17-ts.html#SP12">&#167;12</a><br/>Responses - <a href="17-rs.html#SP12_1_1">&#167;12.1.1</a><br/>Equations - <a href="20-eq.html#SP46_3">&#167;46.3</a><br/>Phrase Usage - <a href="22-pu.html#SP21_1_1">&#167;21.1.1</a><br/>Local Variables - <a href="24-lv.html#SP10">&#167;10</a>, <a href="24-lv.html#SP11">&#167;11</a>, <a href="24-lv.html#SP20">&#167;20</a>, <a href="24-lv.html#SP21">&#167;21</a>, <a href="24-lv.html#SP22">&#167;22</a>, <a href="24-lv.html#SP23">&#167;23</a>, <a href="24-lv.html#SP26">&#167;26</a>, <a href="24-lv.html#SP27">&#167;27</a>, <a href="24-lv.html#SP30">&#167;30</a>, <a href="24-lv.html#SP31">&#167;31</a>, <a href="24-lv.html#SP33">&#167;33</a>, <a href="24-lv.html#SP33_3">&#167;33.3</a>, <a href="24-lv.html#SP41">&#167;41</a>, <a href="24-lv.html#SP42">&#167;42</a><br/>Phrase Blocks - <a href="24-pb.html#SP8">&#167;8</a>, <a href="24-pb.html#SP18">&#167;18</a>, <a href="24-pb.html#SP19">&#167;19</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">ph_stack_frame</span><span class="plain-syntax"> *</span><span class="function-syntax">Frames::current_stack_frame</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">Frames::current_stack_frame</span></span>:<br/><a href="24-sf.html#SP9">&#167;9</a>, <a href="24-sf.html#SP10">&#167;10</a>, <a href="24-sf.html#SP11">&#167;11</a>, <a href="24-sf.html#SP12">&#167;12</a>, <a href="24-sf.html#SP14">&#167;14</a>, <a href="24-sf.html#SP15">&#167;15</a><br/>Adjective Meanings - <a href="7-am.html#SP35_2">&#167;35.2</a>, <a href="7-am.html#SP35_2_1">&#167;35.2.1</a><br/>Relations - <a href="7-rlt.html#SP24">&#167;24</a><br/>Constants and Descriptions - <a href="10-cad.html#SP19_2">&#167;19.2</a><br/>Type Expressions and Values - <a href="10-teav.html#SP15">&#167;15</a>, <a href="10-teav.html#SP16">&#167;16</a><br/>Measurement Adjectives - <a href="15-ma.html#SP13">&#167;13</a><br/>Text Substitutions - <a href="17-ts.html#SP5">&#167;5</a>, <a href="17-ts.html#SP8">&#167;8</a>, <a href="17-ts.html#SP10">&#167;10</a>, <a href="17-ts.html#SP12">&#167;12</a><br/>Responses - <a href="17-rs.html#SP12_1_1">&#167;12.1.1</a><br/>Equations - <a href="20-eq.html#SP46_3">&#167;46.3</a><br/>Phrase Usage - <a href="22-pu.html#SP21_1_1">&#167;21.1.1</a><br/>Local Variables - <a href="24-lv.html#SP10">&#167;10</a>, <a href="24-lv.html#SP11">&#167;11</a>, <a href="24-lv.html#SP20">&#167;20</a>, <a href="24-lv.html#SP21">&#167;21</a>, <a href="24-lv.html#SP22">&#167;22</a>, <a href="24-lv.html#SP23">&#167;23</a>, <a href="24-lv.html#SP26">&#167;26</a>, <a href="24-lv.html#SP27">&#167;27</a>, <a href="24-lv.html#SP30">&#167;30</a>, <a href="24-lv.html#SP31">&#167;31</a>, <a href="24-lv.html#SP33">&#167;33</a>, <a href="24-lv.html#SP33_3">&#167;33.3</a>, <a href="24-lv.html#SP41">&#167;41</a>, <a href="24-lv.html#SP42">&#167;42</a><br/>Phrase Blocks - <a href="24-pb.html#SP8">&#167;8</a>, <a href="24-pb.html#SP18">&#167;18</a>, <a href="24-pb.html#SP19">&#167;19</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">current_frame</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>

View file

@ -451,7 +451,7 @@ exceptional case.
<span class="plain-syntax"> </span><a href="26-ct.html#SP5" class="function-link"><span class="function-syntax">CompiledText::from_text_with_options</span></a><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="constant-syntax">0</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">CompiledText::from_text</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">CompiledText::from_text</span></span>:<br/>Relations - <a href="7-rlt.html#SP15_1_5">&#167;15.1.5</a><br/>Rules - <a href="21-rl.html#SP20_2_1">&#167;20.2.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</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">CompiledText::from_text</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">CompiledText::from_text</span></span>:<br/>Relations - <a href="7-rlt.html#SP9_1_5">&#167;9.1.5</a><br/>Rules - <a href="21-rl.html#SP20_2_1">&#167;20.2.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</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><a href="26-ct.html#SP5" class="function-link"><span class="function-syntax">CompiledText::from_text_with_options</span></a><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="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>

View file

@ -118,7 +118,7 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">plugin_call</span><span class="plain-syntax"> *</span><span class="identifier-syntax">next</span><span class="plain-syntax">;</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">plugin_call</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure plugin_call is accessed in 3/ptmn, 3/cs, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 4/tr2, 4/dbtr, 4/rpr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 20/eq, 21/rl, 21/rl2, 21/fao, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 27/cm and here.</li></ul>
<ul class="endnotetexts"><li>The structure plugin_call is accessed in 3/ptmn, 3/cs, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 4/tr2, 4/dbtr, 4/rpr, 4/nar, 4/nlpr, 4/nrr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 20/eq, 21/rl, 21/rl2, 21/fao, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 27/cm and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP4"></a><b>&#167;4. </b></p>
<pre class="displayed-code all-displayed-code code-font">

View file

@ -75,7 +75,7 @@ already been set up, or not. Here's not:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="function-syntax">Routines::begin</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">Routines::begin</span></span>:<br/>Literal Patterns - <a href="6-lp.html#SP27">&#167;27</a><br/>Nonlocal Variables - <a href="6-nv.html#SP16">&#167;16</a><br/>Adjective Meanings - <a href="7-am.html#SP35_2">&#167;35.2</a>, <a href="7-am.html#SP44">&#167;44</a><br/>Binary Predicates - <a href="7-bp.html#SP33">&#167;33</a><br/>Relations - <a href="7-rlt.html#SP15">&#167;15</a>, <a href="7-rlt.html#SP15_2">&#167;15.2</a>, <a href="7-rlt.html#SP17">&#167;17</a>, <a href="7-rlt.html#SP29_1">&#167;29.1</a>, <a href="7-rlt.html#SP29_2">&#167;29.2</a>, <a href="7-rlt.html#SP29_3">&#167;29.3</a>, <a href="7-rlt.html#SP29_4">&#167;29.4</a>, <a href="7-rlt.html#SP29_5">&#167;29.5</a>, <a href="7-rlt.html#SP29_6">&#167;29.6</a>, <a href="7-rlt.html#SP30">&#167;30</a><br/>New Verbs - <a href="7-nv.html#SP17_1">&#167;17.1</a>, <a href="7-nv.html#SP17_2">&#167;17.2</a><br/>Extension Files - <a href="9-ef.html#SP6">&#167;6</a><br/>Compile Deferred Propositions - <a href="12-cdp.html#SP2_1">&#167;2.1</a><br/>Runtime Support for Kinds - <a href="13-rsfk.html#SP17_3">&#167;17.3</a>, <a href="13-rsfk.html#SP25_1">&#167;25.1</a>, <a href="13-rsfk.html#SP25_2">&#167;25.2</a>, <a href="13-rsfk.html#SP25_3">&#167;25.3</a>, <a href="13-rsfk.html#SP25_4">&#167;25.4</a>, <a href="13-rsfk.html#SP25_5">&#167;25.5</a>, <a href="13-rsfk.html#SP25_6_1">&#167;25.6.1</a>, <a href="13-rsfk.html#SP25_6_2">&#167;25.6.2</a>, <a href="13-rsfk.html#SP25_6_3">&#167;25.6.3</a>, <a href="13-rsfk.html#SP25_6_4">&#167;25.6.4</a>, <a href="13-rsfk.html#SP25_6_5">&#167;25.6.5</a>, <a href="13-rsfk.html#SP25_6_6">&#167;25.6.6</a>, <a href="13-rsfk.html#SP26">&#167;26</a><br/>Measurement Adjectives - <a href="15-ma.html#SP13">&#167;13</a><br/>Text Literals - <a href="17-tl.html#SP14_2">&#167;14.2</a><br/>Text Substitutions - <a href="17-ts.html#SP12">&#167;12</a><br/>Responses - <a href="17-rs.html#SP6_1">&#167;6.1</a>, <a href="17-rs.html#SP6_2">&#167;6.2</a>, <a href="17-rs.html#SP7_2">&#167;7.2</a><br/>Table Columns - <a href="19-tc.html#SP8">&#167;8</a><br/>Runtime Support for Tables - <a href="19-rsft.html#SP2">&#167;2</a><br/>Equations - <a href="20-eq.html#SP42">&#167;42</a><br/>Rules - <a href="21-rl.html#SP20">&#167;20</a>, <a href="21-rl.html#SP22_1">&#167;22.1</a><br/>Rule Bookings - <a href="21-rb.html#SP23">&#167;23</a>, <a href="21-rb.html#SP24_1_1">&#167;24.1.1</a><br/>Rulebooks - <a href="21-rl2.html#SP14_1">&#167;14.1</a><br/>Focus and Outcome - <a href="21-fao.html#SP10">&#167;10</a><br/>Stacked Variables - <a href="21-sv.html#SP3">&#167;3</a><br/>Phrases - <a href="22-ph.html#SP13">&#167;13</a><br/>Phrases as Values - <a href="22-pav.html#SP9_2">&#167;9.2</a><br/>Chronology - <a href="24-ch.html#SP6">&#167;6</a>, <a href="24-ch.html#SP7">&#167;7</a><br/>List Together - <a href="26-lt.html#SP4_1">&#167;4.1</a><br/>Test Scripts - <a href="26-ts.html#SP3">&#167;3</a><br/>Internal Test Cases - <a href="26-itc.html#SP4">&#167;4</a><br/>Use Options at Run Time - <a href="26-uoart.html#SP1_1">&#167;1.1</a>, <a href="26-uoart.html#SP1_2">&#167;1.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="function-syntax">Routines::begin</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">Routines::begin</span></span>:<br/>Literal Patterns - <a href="6-lp.html#SP27">&#167;27</a><br/>Nonlocal Variables - <a href="6-nv.html#SP16">&#167;16</a><br/>Adjective Meanings - <a href="7-am.html#SP35_2">&#167;35.2</a>, <a href="7-am.html#SP44">&#167;44</a><br/>Binary Predicates - <a href="7-bp.html#SP33">&#167;33</a><br/>Relations - <a href="7-rlt.html#SP9">&#167;9</a>, <a href="7-rlt.html#SP9_2">&#167;9.2</a>, <a href="7-rlt.html#SP11">&#167;11</a>, <a href="7-rlt.html#SP23_1">&#167;23.1</a>, <a href="7-rlt.html#SP23_2">&#167;23.2</a>, <a href="7-rlt.html#SP23_3">&#167;23.3</a>, <a href="7-rlt.html#SP23_4">&#167;23.4</a>, <a href="7-rlt.html#SP23_5">&#167;23.5</a>, <a href="7-rlt.html#SP23_6">&#167;23.6</a>, <a href="7-rlt.html#SP24">&#167;24</a><br/>New Verbs - <a href="7-nv.html#SP17_1">&#167;17.1</a>, <a href="7-nv.html#SP17_2">&#167;17.2</a><br/>Extension Files - <a href="9-ef.html#SP6">&#167;6</a><br/>Compile Deferred Propositions - <a href="12-cdp.html#SP2_1">&#167;2.1</a><br/>Runtime Support for Kinds - <a href="13-rsfk.html#SP17_3">&#167;17.3</a>, <a href="13-rsfk.html#SP25_1">&#167;25.1</a>, <a href="13-rsfk.html#SP25_2">&#167;25.2</a>, <a href="13-rsfk.html#SP25_3">&#167;25.3</a>, <a href="13-rsfk.html#SP25_4">&#167;25.4</a>, <a href="13-rsfk.html#SP25_5">&#167;25.5</a>, <a href="13-rsfk.html#SP25_6_1">&#167;25.6.1</a>, <a href="13-rsfk.html#SP25_6_2">&#167;25.6.2</a>, <a href="13-rsfk.html#SP25_6_3">&#167;25.6.3</a>, <a href="13-rsfk.html#SP25_6_4">&#167;25.6.4</a>, <a href="13-rsfk.html#SP25_6_5">&#167;25.6.5</a>, <a href="13-rsfk.html#SP25_6_6">&#167;25.6.6</a>, <a href="13-rsfk.html#SP26">&#167;26</a><br/>Measurement Adjectives - <a href="15-ma.html#SP13">&#167;13</a><br/>Text Literals - <a href="17-tl.html#SP14_2">&#167;14.2</a><br/>Text Substitutions - <a href="17-ts.html#SP12">&#167;12</a><br/>Responses - <a href="17-rs.html#SP6_1">&#167;6.1</a>, <a href="17-rs.html#SP6_2">&#167;6.2</a>, <a href="17-rs.html#SP7_2">&#167;7.2</a><br/>Table Columns - <a href="19-tc.html#SP8">&#167;8</a><br/>Runtime Support for Tables - <a href="19-rsft.html#SP2">&#167;2</a><br/>Equations - <a href="20-eq.html#SP42">&#167;42</a><br/>Rules - <a href="21-rl.html#SP20">&#167;20</a>, <a href="21-rl.html#SP22_1">&#167;22.1</a><br/>Rule Bookings - <a href="21-rb.html#SP23">&#167;23</a>, <a href="21-rb.html#SP24_1_1">&#167;24.1.1</a><br/>Rulebooks - <a href="21-rl2.html#SP14_1">&#167;14.1</a><br/>Focus and Outcome - <a href="21-fao.html#SP10">&#167;10</a><br/>Stacked Variables - <a href="21-sv.html#SP3">&#167;3</a><br/>Phrases - <a href="22-ph.html#SP13">&#167;13</a><br/>Phrases as Values - <a href="22-pav.html#SP9_2">&#167;9.2</a><br/>Chronology - <a href="24-ch.html#SP6">&#167;6</a>, <a href="24-ch.html#SP7">&#167;7</a><br/>List Together - <a href="26-lt.html#SP4_1">&#167;4.1</a><br/>Test Scripts - <a href="26-ts.html#SP3">&#167;3</a><br/>Internal Test Cases - <a href="26-itc.html#SP4">&#167;4</a><br/>Use Options at Run Time - <a href="26-uoart.html#SP1_1">&#167;1.1</a>, <a href="26-uoart.html#SP1_2">&#167;1.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_name</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">return</span><span class="plain-syntax"> </span><a href="26-rt.html#SP3" class="function-link"><span class="function-syntax">Routines::begin_framed</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
@ -134,7 +134,7 @@ did 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">Routines::end</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">Routines::end</span></span>:<br/>Literal Patterns - <a href="6-lp.html#SP27">&#167;27</a><br/>Nonlocal Variables - <a href="6-nv.html#SP16">&#167;16</a><br/>Adjective Meanings - <a href="7-am.html#SP35_2">&#167;35.2</a>, <a href="7-am.html#SP44">&#167;44</a><br/>Binary Predicates - <a href="7-bp.html#SP33">&#167;33</a><br/>Relations - <a href="7-rlt.html#SP15">&#167;15</a>, <a href="7-rlt.html#SP15_2">&#167;15.2</a>, <a href="7-rlt.html#SP17">&#167;17</a>, <a href="7-rlt.html#SP29_1">&#167;29.1</a>, <a href="7-rlt.html#SP29_2">&#167;29.2</a>, <a href="7-rlt.html#SP29_3">&#167;29.3</a>, <a href="7-rlt.html#SP29_4">&#167;29.4</a>, <a href="7-rlt.html#SP29_5">&#167;29.5</a>, <a href="7-rlt.html#SP29_6">&#167;29.6</a>, <a href="7-rlt.html#SP30">&#167;30</a><br/>New Verbs - <a href="7-nv.html#SP17_1">&#167;17.1</a>, <a href="7-nv.html#SP17_2">&#167;17.2</a><br/>Extension Files - <a href="9-ef.html#SP6">&#167;6</a><br/>Compile Deferred Propositions - <a href="12-cdp.html#SP2_1">&#167;2.1</a><br/>Runtime Support for Kinds - <a href="13-rsfk.html#SP17_3">&#167;17.3</a>, <a href="13-rsfk.html#SP25_1">&#167;25.1</a>, <a href="13-rsfk.html#SP25_2">&#167;25.2</a>, <a href="13-rsfk.html#SP25_3">&#167;25.3</a>, <a href="13-rsfk.html#SP25_4">&#167;25.4</a>, <a href="13-rsfk.html#SP25_5">&#167;25.5</a>, <a href="13-rsfk.html#SP25_6_1">&#167;25.6.1</a>, <a href="13-rsfk.html#SP25_6_2">&#167;25.6.2</a>, <a href="13-rsfk.html#SP25_6_3">&#167;25.6.3</a>, <a href="13-rsfk.html#SP25_6_4">&#167;25.6.4</a>, <a href="13-rsfk.html#SP25_6_5">&#167;25.6.5</a>, <a href="13-rsfk.html#SP25_6_6">&#167;25.6.6</a>, <a href="13-rsfk.html#SP26">&#167;26</a><br/>Measurement Adjectives - <a href="15-ma.html#SP13">&#167;13</a><br/>Text Literals - <a href="17-tl.html#SP14_2">&#167;14.2</a><br/>Text Substitutions - <a href="17-ts.html#SP12">&#167;12</a><br/>Responses - <a href="17-rs.html#SP6_1">&#167;6.1</a>, <a href="17-rs.html#SP6_2">&#167;6.2</a>, <a href="17-rs.html#SP7_2">&#167;7.2</a><br/>Table Columns - <a href="19-tc.html#SP8">&#167;8</a><br/>Runtime Support for Tables - <a href="19-rsft.html#SP2">&#167;2</a><br/>Equations - <a href="20-eq.html#SP42">&#167;42</a><br/>Rules - <a href="21-rl.html#SP20">&#167;20</a>, <a href="21-rl.html#SP22_1">&#167;22.1</a><br/>Rule Bookings - <a href="21-rb.html#SP23">&#167;23</a>, <a href="21-rb.html#SP24_1_5">&#167;24.1.5</a><br/>Rulebooks - <a href="21-rl2.html#SP14_1">&#167;14.1</a><br/>Focus and Outcome - <a href="21-fao.html#SP10">&#167;10</a><br/>Stacked Variables - <a href="21-sv.html#SP3">&#167;3</a><br/>Phrases - <a href="22-ph.html#SP13">&#167;13</a><br/>Phrases as Values - <a href="22-pav.html#SP9_2">&#167;9.2</a><br/>Chronology - <a href="24-ch.html#SP6">&#167;6</a>, <a href="24-ch.html#SP7">&#167;7</a><br/>Compile Phrases - <a href="25-cp.html#SP3">&#167;3</a><br/>List Together - <a href="26-lt.html#SP4_1">&#167;4.1</a><br/>Test Scripts - <a href="26-ts.html#SP3">&#167;3</a><br/>Internal Test Cases - <a href="26-itc.html#SP4">&#167;4</a><br/>Use Options at Run Time - <a href="26-uoart.html#SP1_1">&#167;1.1</a>, <a href="26-uoart.html#SP1_2">&#167;1.2</a></span></button><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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Routines::end</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">Routines::end</span></span>:<br/>Literal Patterns - <a href="6-lp.html#SP27">&#167;27</a><br/>Nonlocal Variables - <a href="6-nv.html#SP16">&#167;16</a><br/>Adjective Meanings - <a href="7-am.html#SP35_2">&#167;35.2</a>, <a href="7-am.html#SP44">&#167;44</a><br/>Binary Predicates - <a href="7-bp.html#SP33">&#167;33</a><br/>Relations - <a href="7-rlt.html#SP9">&#167;9</a>, <a href="7-rlt.html#SP9_2">&#167;9.2</a>, <a href="7-rlt.html#SP11">&#167;11</a>, <a href="7-rlt.html#SP23_1">&#167;23.1</a>, <a href="7-rlt.html#SP23_2">&#167;23.2</a>, <a href="7-rlt.html#SP23_3">&#167;23.3</a>, <a href="7-rlt.html#SP23_4">&#167;23.4</a>, <a href="7-rlt.html#SP23_5">&#167;23.5</a>, <a href="7-rlt.html#SP23_6">&#167;23.6</a>, <a href="7-rlt.html#SP24">&#167;24</a><br/>New Verbs - <a href="7-nv.html#SP17_1">&#167;17.1</a>, <a href="7-nv.html#SP17_2">&#167;17.2</a><br/>Extension Files - <a href="9-ef.html#SP6">&#167;6</a><br/>Compile Deferred Propositions - <a href="12-cdp.html#SP2_1">&#167;2.1</a><br/>Runtime Support for Kinds - <a href="13-rsfk.html#SP17_3">&#167;17.3</a>, <a href="13-rsfk.html#SP25_1">&#167;25.1</a>, <a href="13-rsfk.html#SP25_2">&#167;25.2</a>, <a href="13-rsfk.html#SP25_3">&#167;25.3</a>, <a href="13-rsfk.html#SP25_4">&#167;25.4</a>, <a href="13-rsfk.html#SP25_5">&#167;25.5</a>, <a href="13-rsfk.html#SP25_6_1">&#167;25.6.1</a>, <a href="13-rsfk.html#SP25_6_2">&#167;25.6.2</a>, <a href="13-rsfk.html#SP25_6_3">&#167;25.6.3</a>, <a href="13-rsfk.html#SP25_6_4">&#167;25.6.4</a>, <a href="13-rsfk.html#SP25_6_5">&#167;25.6.5</a>, <a href="13-rsfk.html#SP25_6_6">&#167;25.6.6</a>, <a href="13-rsfk.html#SP26">&#167;26</a><br/>Measurement Adjectives - <a href="15-ma.html#SP13">&#167;13</a><br/>Text Literals - <a href="17-tl.html#SP14_2">&#167;14.2</a><br/>Text Substitutions - <a href="17-ts.html#SP12">&#167;12</a><br/>Responses - <a href="17-rs.html#SP6_1">&#167;6.1</a>, <a href="17-rs.html#SP6_2">&#167;6.2</a>, <a href="17-rs.html#SP7_2">&#167;7.2</a><br/>Table Columns - <a href="19-tc.html#SP8">&#167;8</a><br/>Runtime Support for Tables - <a href="19-rsft.html#SP2">&#167;2</a><br/>Equations - <a href="20-eq.html#SP42">&#167;42</a><br/>Rules - <a href="21-rl.html#SP20">&#167;20</a>, <a href="21-rl.html#SP22_1">&#167;22.1</a><br/>Rule Bookings - <a href="21-rb.html#SP23">&#167;23</a>, <a href="21-rb.html#SP24_1_5">&#167;24.1.5</a><br/>Rulebooks - <a href="21-rl2.html#SP14_1">&#167;14.1</a><br/>Focus and Outcome - <a href="21-fao.html#SP10">&#167;10</a><br/>Stacked Variables - <a href="21-sv.html#SP3">&#167;3</a><br/>Phrases - <a href="22-ph.html#SP13">&#167;13</a><br/>Phrases as Values - <a href="22-pav.html#SP9_2">&#167;9.2</a><br/>Chronology - <a href="24-ch.html#SP6">&#167;6</a>, <a href="24-ch.html#SP7">&#167;7</a><br/>Compile Phrases - <a href="25-cp.html#SP3">&#167;3</a><br/>List Together - <a href="26-lt.html#SP4_1">&#167;4.1</a><br/>Test Scripts - <a href="26-ts.html#SP3">&#167;3</a><br/>Internal Test Cases - <a href="26-itc.html#SP4">&#167;4</a><br/>Use Options at Run Time - <a href="26-uoart.html#SP1_1">&#167;1.1</a>, <a href="26-uoart.html#SP1_2">&#167;1.2</a></span></button><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="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R_kind</span><span class="plain-syntax"> = </span><a href="24-lv.html#SP46" class="function-link"><span class="function-syntax">LocalVariables::deduced_function_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">currently_compiling_in_frame</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">kernel_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, *</span><span class="identifier-syntax">public_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">currently_compiling_iname</span><span class="plain-syntax">;</span>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -154,7 +154,7 @@ be a single word, and are hyphenated.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="7-rlt.html#SP6" class="function-link"><span class="function-syntax">Relations::new_relation_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"new-relation"</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">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="4-nrr.html#SP2" class="function-link"><span class="function-syntax">RelationRequests::new_relation_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"new-relation"</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">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="4-rpr.html#SP5" class="function-link"><span class="function-syntax">Rules::Placement::substitutes_for_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"rule-substitutes-for"</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">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="4-rpr.html#SP9" class="function-link"><span class="function-syntax">Rules::Placement::does_nothing_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"rule-does-nothing"</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">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="4-rpr.html#SP10" class="function-link"><span class="function-syntax">Rules::Placement::does_nothing_if_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"rule-does-nothing-if"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
@ -165,7 +165,7 @@ be a single word, and are hyphenated.
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="7-nv.html#SP12" class="function-link"><span class="function-syntax">NewVerbs::new_verb_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"new-verb"</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">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="4-pr.html#SP2" class="function-link"><span class="function-syntax">Plurals::plural_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"new-plural"</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">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="21-ac.html#SP4" class="function-link"><span class="function-syntax">Activities::new_activity_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"new-activity"</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">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="4-nar.html#SP2" class="function-link"><span class="function-syntax">ActivityRequests::new_activity_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"new-activity"</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">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="7-nv.html#SP20" class="function-link"><span class="function-syntax">NewVerbs::new_adjective_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"new-adjective"</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">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="5-pd.html#SP2" class="function-link"><span class="function-syntax">Assertions::Property::either_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"new-either-or"</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">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="4-dbtr.html#SP3" class="function-link"><span class="function-syntax">DefineByTable::defined_by_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"defined-by-table"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
@ -174,7 +174,7 @@ be a single word, and are hyphenated.
<span class="plain-syntax"> </span><span class="identifier-syntax">meaning_of_mean</span><span class="plain-syntax"> = </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="7-nv.html#SP14" class="function-link"><span class="function-syntax">NewVerbs::verb_means_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"verb-means"</span><span class="plain-syntax">, </span><span class="constant-syntax">3</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="6-lp.html#SP31" class="function-link"><span class="function-syntax">LiteralPatterns::specifies_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"specifies-notation"</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="4-nlpr.html#SP2" class="function-link"><span class="function-syntax">LPRequests::specifies_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"specifies-notation"</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="4-nuor.html#SP3" class="function-link"><span class="function-syntax">NewUseOptions::use_translates_as_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"use-translates"</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="4-uor.html#SP1" class="function-link"><span class="function-syntax">UseOptions::use_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"use"</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="4-dlr.html#SP2" class="function-link"><span class="function-syntax">Sentences::DLRs::include_in_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"include-in"</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">);</span>

View file

@ -611,7 +611,7 @@ also ordinary sentences about the property value, and the former won't.
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-dbtr.html#SP4_2_3">&#167;4.2.3</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-tr2.html">&#10094;</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="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-dlr.html">dlr</a></li><li class="progresssection"><a href="4-pr.html">pr</a></li><li class="progresssection"><a href="4-tr.html">tr</a></li><li class="progresssection"><a href="4-nuor.html">nuor</a></li><li class="progresssection"><a href="4-uor.html">uor</a></li><li class="progresssection"><a href="4-tr2.html">tr2</a></li><li class="progresscurrent">dbtr</li><li class="progresssection"><a href="4-rpr.html">rpr</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="4-rpr.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="4-tr2.html">&#10094;</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="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-dlr.html">dlr</a></li><li class="progresssection"><a href="4-pr.html">pr</a></li><li class="progresssection"><a href="4-tr.html">tr</a></li><li class="progresssection"><a href="4-nuor.html">nuor</a></li><li class="progresssection"><a href="4-uor.html">uor</a></li><li class="progresssection"><a href="4-tr2.html">tr2</a></li><li class="progresscurrent">dbtr</li><li class="progresssection"><a href="4-rpr.html">rpr</a></li><li class="progresssection"><a href="4-nar.html">nar</a></li><li class="progresssection"><a href="4-nlpr.html">nlpr</a></li><li class="progresssection"><a href="4-nrr.html">nrr</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="4-rpr.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -178,7 +178,7 @@ modifiers and a pointer to a Preform nonterminal if one has been named.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="3-cs.html">&#10094;</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="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresscurrent">dlr</li><li class="progresssection"><a href="4-pr.html">pr</a></li><li class="progresssection"><a href="4-tr.html">tr</a></li><li class="progresssection"><a href="4-nuor.html">nuor</a></li><li class="progresssection"><a href="4-uor.html">uor</a></li><li class="progresssection"><a href="4-tr2.html">tr2</a></li><li class="progresssection"><a href="4-dbtr.html">dbtr</a></li><li class="progresssection"><a href="4-rpr.html">rpr</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="4-pr.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="3-cs.html">&#10094;</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="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresscurrent">dlr</li><li class="progresssection"><a href="4-pr.html">pr</a></li><li class="progresssection"><a href="4-tr.html">tr</a></li><li class="progresssection"><a href="4-nuor.html">nuor</a></li><li class="progresssection"><a href="4-uor.html">uor</a></li><li class="progresssection"><a href="4-tr2.html">tr2</a></li><li class="progresssection"><a href="4-dbtr.html">dbtr</a></li><li class="progresssection"><a href="4-rpr.html">rpr</a></li><li class="progresssection"><a href="4-nar.html">nar</a></li><li class="progresssection"><a href="4-nlpr.html">nlpr</a></li><li class="progresssection"><a href="4-nrr.html">nrr</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="4-pr.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

128
docs/core-module/4-nar.html Normal file
View file

@ -0,0 +1,128 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>New Activity Requests</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">
<link href="../docs-assets/Preform-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="../kinds-module/index.html">kinds</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="../syntax-module/index.html">syntax</a></li>
<li><a href="../words-module/index.html">words</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="../linguistics-module/index.html">linguistics</a></li>
<li><a href="../problems-module/index.html">problems</a></li>
<li><a href="../../../inweb/docs/foundation-module/index.html">foundation</a></li>
</ul>
</nav>
<main role="main">
<!--Weave of 'New Activity Requests' 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#4">Chapter 4: Requests</a></li><li><b>New Activity Requests</b></li></ul></div>
<p class="purpose">Special sentences creating new activities.</p>
<p class="commentary firstcommentary"><a id="SP1"></a><b>&#167;1. </b>This special meaning is only needed for one case. If activities are created
by the sentence
</p>
<blockquote>
<p>Counting is an activity on numbers.</p>
</blockquote>
<p class="commentary">then this happens via the regular meaning of "to be", because "activity on
numbers" is a valid kind of value. But this:
</p>
<blockquote>
<p>Describing is an activity.</p>
</blockquote>
<p class="commentary">can't be handled that way because "activity" is not a valid kind. And so we
handle this case through a special case of "X is Y" which applies only if Y
matches:
</p>
<pre class="Preform-displayed-code all-displayed-code code-font">
<span class="Preform-function-syntax">&lt;bare-activity-sentence-object&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;article&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">activity</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">activity</span>
</pre>
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
<p class="commentary firstcommentary"><a id="SP2"></a><b>&#167;2. </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">ActivityRequests::new_activity_SMF</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">ActivityRequests::new_activity_SMF</span></span>:<br/>Booting Verbs - <a href="3-bv.html#SP1_3">&#167;1.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">task</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">V</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> *</span><span class="identifier-syntax">NPs</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">SW</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">[0]):</span><span class="identifier-syntax">EMPTY_WORDING</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">OW</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">[1]):</span><span class="identifier-syntax">EMPTY_WORDING</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">task</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">ACCEPT_SMFT:</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax">&lt;bare-activity-sentence-object&gt;</span><span class="plain-syntax">(</span><span class="identifier-syntax">OW</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="function-syntax">&lt;np-unparsed&gt;</span><span class="plain-syntax">(</span><span class="identifier-syntax">SW</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">V</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax"> = </span><span class="function-syntax">&lt;&lt;rp&gt;&gt;</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="function-syntax">&lt;np-unparsed&gt;</span><span class="plain-syntax">(</span><span class="identifier-syntax">OW</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">V</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax"> = </span><span class="function-syntax">&lt;&lt;rp&gt;&gt;</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">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">PASS_1_SMFT:</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP4" class="function-link"><span class="function-syntax">Activities::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Kinds::unary_construction</span><span class="plain-syntax">(</span><span class="identifier-syntax">CON_activity</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_nil</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">V</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</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="4-rpr.html">&#10094;</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="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-dlr.html">dlr</a></li><li class="progresssection"><a href="4-pr.html">pr</a></li><li class="progresssection"><a href="4-tr.html">tr</a></li><li class="progresssection"><a href="4-nuor.html">nuor</a></li><li class="progresssection"><a href="4-uor.html">uor</a></li><li class="progresssection"><a href="4-tr2.html">tr2</a></li><li class="progresssection"><a href="4-dbtr.html">dbtr</a></li><li class="progresssection"><a href="4-rpr.html">rpr</a></li><li class="progresscurrent">nar</li><li class="progresssection"><a href="4-nlpr.html">nlpr</a></li><li class="progresssection"><a href="4-nrr.html">nrr</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="4-nlpr.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>
</body>
</html>

View file

@ -0,0 +1,475 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>New Literal Pattern Requests</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">
<link href="../docs-assets/Preform-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="../kinds-module/index.html">kinds</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="../syntax-module/index.html">syntax</a></li>
<li><a href="../words-module/index.html">words</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="../linguistics-module/index.html">linguistics</a></li>
<li><a href="../problems-module/index.html">problems</a></li>
<li><a href="../../../inweb/docs/foundation-module/index.html">foundation</a></li>
</ul>
</nav>
<main role="main">
<!--Weave of 'New Literal Pattern Requests' 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#4">Chapter 4: Requests</a></li><li><b>New Literal Pattern Requests</b></li></ul></div>
<p class="purpose">Special sentences creating new notations for literal values.</p>
<p class="commentary firstcommentary"><a id="SP1"></a><b>&#167;1. </b>The ability to create new ways to write literal values is one of the best
features of Inform, but it is complex to parse, and has around 30 problem
messages associated with it. The <span class="extract"><span class="extract-syntax">:literals</span></span> set of test cases may be useful
when tweaking the code below.
</p>
<p class="commentary">The first point to note is that "X specifies Y" sentences have two different
uses, but that both are covered below. First, they create literal patterns,
and the syntax for that can be quite involved:
</p>
<blockquote>
<p>1 tonne (in metric units, in tonnes, singular) specifies a mass scaled up by 1000.</p>
</blockquote>
<p class="commentary">Second, they can gives dimensional instructions about kinds:
</p>
<blockquote>
<p>A length times a length specifies an area.</p>
</blockquote>
<p class="commentary">This is a slightly unhappy ambiguity, but the potential for confusion is low.
Nobody who defines a literal pattern with the word "times" in can expect good
results anyway, given that "times" will usually be interpreted as
multiplication when Inform eventually parses such a literal.
</p>
<p class="commentary firstcommentary"><a id="SP2"></a><b>&#167;2. </b>We create new literal pattenrs during pass 1, which imposes two timing
constraints:
</p>
<ul class="items"><li>(a) The specification sentence must come after the sentence creating the
kind of value being specified; but
</li><li>(b) It must come before any sentences using constants written in this
notation.
</li></ul>
<p class="commentary">In practice both constraints seem to be accepted by users as reasonable,
and this causes no trouble.
</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">LPRequests::specifies_SMF</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">LPRequests::specifies_SMF</span></span>:<br/>Booting Verbs - <a href="3-bv.html#SP1_3">&#167;1.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">task</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">V</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> *</span><span class="identifier-syntax">NPs</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">SW</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">[0]):</span><span class="identifier-syntax">EMPTY_WORDING</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">OW</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">[1]):</span><span class="identifier-syntax">EMPTY_WORDING</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">task</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">ACCEPT_SMFT:</span><span class="plain-syntax"> </span><span class="comment-syntax"> "10'23 specifies a running time."</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax">&lt;np-alternative-list&gt;</span><span class="plain-syntax">(</span><span class="identifier-syntax">SW</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">S</span><span class="plain-syntax"> = </span><span class="function-syntax">&lt;&lt;rp&gt;&gt;</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">&lt;np-unparsed&gt;</span><span class="plain-syntax">(</span><span class="identifier-syntax">OW</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">O</span><span class="plain-syntax"> = </span><span class="function-syntax">&lt;&lt;rp&gt;&gt;</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">V</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax"> = </span><span class="identifier-syntax">S</span><span class="plain-syntax">; </span><span class="identifier-syntax">V</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax"> = </span><span class="identifier-syntax">O</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="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">PASS_1_SMFT:</span>
<span class="plain-syntax"> </span><a href="4-nlpr.html#SP4" class="function-link"><span class="function-syntax">LPRequests::new_list</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">V</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">, </span><span class="identifier-syntax">V</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</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">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP3"></a><b>&#167;3. </b>The code in this section parses sentences which set up new literal patterns,
puts the (quite complicated) result into a <a href="4-nlpr.html#SP3" class="internal">lp_specification</a> object, and
sends that to <a href="6-lp.html" class="internal">Literal Patterns</a>.
</p>
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">LP_SCALED_UP</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">LP_SCALED_DOWN</span><span class="plain-syntax"> -1</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">LP_SCALED_AT</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">SINGULAR_LPN</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">PLURAL_LPN</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">ABANDON_LPN</span><span class="plain-syntax"> </span><span class="constant-syntax">4</span><span class="plain-syntax"> </span><span class="comment-syntax"> for error recovery only</span>
</pre>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">lp_specification</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">notation_wording</span><span class="plain-syntax">; </span><span class="comment-syntax"> the actual notation, e.g., "2 tonnes"</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kind_specified</span><span class="plain-syntax">; </span><span class="comment-syntax"> what kind this sentence specifies</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">scaled_dir</span><span class="plain-syntax">; </span><span class="comment-syntax"> one of the </span><span class="extract"><span class="extract-syntax">LP_SCALED_*</span></span><span class="comment-syntax"> constants above</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">scale_factor</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">double</span><span class="plain-syntax"> </span><span class="identifier-syntax">scale_factor_as_double</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">equivalent_value</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">double</span><span class="plain-syntax"> </span><span class="identifier-syntax">equivalent_value_as_double</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">offset_value</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">double</span><span class="plain-syntax"> </span><span class="identifier-syntax">offset_value_as_double</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">uses_real_arithmetic</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">notation_options</span><span class="plain-syntax">; </span><span class="comment-syntax"> a bitmap of the </span><span class="extract"><span class="extract-syntax">*_LPN</span></span><span class="comment-syntax"> values</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">literal_pattern_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">notation_groups</span><span class="plain-syntax">; </span><span class="comment-syntax"> "in metric units", and so on</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">part_np_list</span><span class="plain-syntax">;</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">lp_specification</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">lp_specification</span><span class="plain-syntax"> </span><span class="identifier-syntax">glps</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">LPRequests::initialise</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">LPRequests::initialise</span></span>:<br/><a href="4-nlpr.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">lp_specification</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lps</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">lps</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">scaled_dir</span><span class="plain-syntax"> = </span><span class="constant-syntax">LP_SCALED_UP</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">lps</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">scale_factor</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">lps</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">scale_factor_as_double</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">.0;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">lps</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">equivalent_value_as_double</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">.0;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">lps</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">equivalent_value</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">lps</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">offset_value_as_double</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">.0;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">lps</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">offset_value</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">lps</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">uses_real_arithmetic</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">lps</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">notation_options</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">lps</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">notation_groups</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">lps</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">notation_wording</span><span class="plain-syntax"> = </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">lps</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">part_np_list</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<ul class="endnotetexts"><li>The structure lp_specification is accessed in 6/lp and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP4"></a><b>&#167;4. </b>One can define LPs with a list of alternatives, of which the first is the
"primary alternative" and said to be the "owner" of the rest. For instance:
</p>
<blockquote>
<p>1 tonne (in metric units, in tonnes, singular) or 2 tonnes (in metric units,</p>
</blockquote>
<p class="commentary">in tonnes, plural) specifies a mass scale_factor up by 1000.
</p>
<p class="commentary">Here "1 tonne" is the primary alternative, and it owns "2 tonnes".
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">literal_pattern</span><span class="plain-syntax"> *</span><span class="function-syntax">LPRequests::new_list</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">LPRequests::new_list</span></span>:<br/><a href="4-nlpr.html#SP2">&#167;2</a></span></button><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">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">q</span><span class="plain-syntax">, </span><span class="reserved-syntax">literal_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">m</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_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">) == </span><span class="identifier-syntax">AND_NT</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">m</span><span class="plain-syntax"> = </span><a href="4-nlpr.html#SP4" class="function-link"><span class="function-syntax">LPRequests::new_list</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">down</span><span class="plain-syntax">, </span><span class="identifier-syntax">q</span><span class="plain-syntax">, </span><span class="identifier-syntax">m</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-nlpr.html#SP4" class="function-link"><span class="function-syntax">LPRequests::new_list</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">down</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">, </span><span class="identifier-syntax">q</span><span class="plain-syntax">, </span><span class="identifier-syntax">m</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><a href="4-nlpr.html#SP3" class="function-link"><span class="function-syntax">LPRequests::initialise</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">glps</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-nlpr.html#SP4_2" class="named-paragraph-link"><span class="named-paragraph">Parse the object noun phrase of the specifies sentence</span><span class="named-paragraph-number">4.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-nlpr.html#SP4_1" class="named-paragraph-link"><span class="named-paragraph">Parse the subject noun phrase of the specifies sentence</span><span class="named-paragraph-number">4.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="6-lp.html#SP31" class="function-link"><span class="function-syntax">LiteralPatterns::new_literal_specification_inner</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">glps</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">q</span><span class="plain-syntax">, </span><span class="identifier-syntax">m</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP4_1"></a><b>&#167;4.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse the subject noun phrase of the specifies sentence</span><span class="named-paragraph-number">4.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="function-syntax">&lt;specifies-sentence-subject&gt;</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</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">glps</span><span class="plain-syntax">.</span><span class="element-syntax">notation_wording</span><span class="plain-syntax"> = </span><span class="identifier-syntax">GET_RW</span><span class="plain-syntax">(</span><span class="function-syntax">&lt;specifies-sentence-subject&gt;</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">glps</span><span class="plain-syntax">.</span><span class="element-syntax">notation_options</span><span class="plain-syntax"> = </span><span class="function-syntax">&lt;&lt;r&gt;&gt;</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">glps</span><span class="plain-syntax">.</span><span class="element-syntax">notation_groups</span><span class="plain-syntax"> = </span><span class="function-syntax">&lt;&lt;rp&gt;&gt;</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">glps</span><span class="plain-syntax">.</span><span class="element-syntax">notation_options</span><span class="plain-syntax"> &amp; </span><span class="constant-syntax">ABANDON_LPN</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">m</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-nlpr.html#SP4">&#167;4</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP5"></a><b>&#167;5. </b>The following grammar is used to parse the new literal patterns defined
in a "specifies" sentence.
</p>
<p class="commentary">Formally, the subject noun phrase of a "specifies" sentence must be a list
of alternatives each of which matches the following:
</p>
<pre class="Preform-displayed-code all-displayed-code code-font">
<span class="Preform-function-syntax">&lt;specifies-sentence-subject&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">(</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">{&lt;lp-group-list&gt;}</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">)</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { pass 1 }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;k-kind-articled&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">times</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;k-kind-articled&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-nlpr.html#SP5_1" class="named-paragraph-link"><span class="named-paragraph">Store left and right kinds</span><span class="named-paragraph-number">5.1</span></a></span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;s-type-expression&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">times</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;s-type-expression&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-nlpr.html#SP5_2" class="named-paragraph-link"><span class="named-paragraph">Issue PM_MultiplyingNonKOVs problem</span><span class="named-paragraph-number">5.2</span></a></span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { 0, NULL }</span>
<span class="Preform-function-syntax">&lt;lp-group-list&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;lp-group&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;lp-group-tail&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { R[1] | R[2], LPRequests::compose(RP[1], RP[2]) }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;lp-group&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { pass 1 }</span>
<span class="Preform-function-syntax">&lt;lp-group-tail&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">,</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">and</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;lp-group-list&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { pass 1 }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">,/and</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;lp-group-list&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { pass 1 }</span>
<span class="Preform-function-syntax">&lt;lp-group&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">singular</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { SINGULAR_LPN, NULL }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">plural</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { PLURAL_LPN, NULL }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;lp-group-name&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { 0, LiteralPatterns::new_lpn(EMPTY_WORDING, RP[1]) }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">in</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">......</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { 0, LiteralPatterns::new_lpn(W, NULL) }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">......</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-nlpr.html#SP5_3" class="named-paragraph-link"><span class="named-paragraph">Issue PM_BadLPNameOption problem</span><span class="named-paragraph-number">5.3</span></a></span>
</pre>
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
<p class="commentary firstcommentary"><a id="SP5_1"></a><b>&#167;5.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Store left and right kinds</span><span class="named-paragraph-number">5.1</span></span><span class="Preform-comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">Kinds::Dimensions::dim_set_multiplication</span><span class="plain-syntax">(</span><span class="identifier-syntax">RP</span><span class="plain-syntax">[1], </span><span class="identifier-syntax">RP</span><span class="plain-syntax">[2], </span><span class="identifier-syntax">glps</span><span class="plain-syntax">.</span><span class="element-syntax">kind_specified</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> ==&gt; { </span><span class="constant-syntax">ABANDON_LPN</span><span class="plain-syntax">, - };</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-nlpr.html#SP5">&#167;5</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP5_2"></a><b>&#167;5.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_MultiplyingNonKOVs problem</span><span class="named-paragraph-number">5.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">preform_lookahead_mode</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP5" 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_MultiplyingNonKOVs</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="string-syntax">"only kinds of value can be multiplied here"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"and only in a sentence like 'A length times a length specifies an area.'"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> ==&gt; { </span><span class="constant-syntax">ABANDON_LPN</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-nlpr.html#SP5">&#167;5</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP5_3"></a><b>&#167;5.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_BadLPNameOption problem</span><span class="named-paragraph-number">5.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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">preform_lookahead_mode</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="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">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP5" 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_BadLPNameOption</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 specification %1, I was expecting that '%2' would be an optional "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"note about one of the notations: it should have been one of 'singular', "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"'plural' or 'in ...'."</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"> ==&gt; { </span><span class="constant-syntax">ABANDON_LPN</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-nlpr.html#SP5">&#167;5</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP4_2"></a><b>&#167;4.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse the object noun phrase of the specifies sentence</span><span class="named-paragraph-number">4.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="identifier-syntax">glps</span><span class="plain-syntax">.</span><span class="element-syntax">offset_value</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="function-syntax">&lt;specifies-sentence-object&gt;</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">q</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="function-syntax">&lt;&lt;r&gt;&gt;</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">PARTS_LPC:</span><span class="plain-syntax"> </span><span class="identifier-syntax">glps</span><span class="plain-syntax">.</span><span class="element-syntax">part_np_list</span><span class="plain-syntax"> = </span><span class="function-syntax">&lt;&lt;rp&gt;&gt;</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">SCALING_LPC:</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">glps</span><span class="plain-syntax">.</span><span class="element-syntax">kind_specified</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">m</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-nlpr.html#SP4">&#167;4</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP6"></a><b>&#167;6. </b>The object noun phrase of a "specifies" sentence is required to match
the following grammar. Note that the tails are mutually exclusive; you
can't set both scaling and an equivalent, for instance.
</p>
<pre class="Preform-displayed-code all-displayed-code code-font">
<span class="Preform-function-syntax">&lt;specifies-sentence-object&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;kind-specified&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;lp-specification-tail&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { pass 2 }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;kind-specified&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { 0, NULL }</span>
<span class="Preform-function-syntax">&lt;kind-specified&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;k-kind-articled&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { 0, NULL }; glps.kind_specified = RP[1];</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-nlpr.html#SP6_6" class="named-paragraph-link"><span class="named-paragraph">Issue PM_LPNotKOV problem</span><span class="named-paragraph-number">6.6</span></a></span>
<span class="Preform-function-syntax">&lt;lp-specification-tail&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">with</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">parts</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;lp-part-list&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { PARTS_LPC, RP[1] }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;scaling-instruction&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { SCALING_LPC, - }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;scaling-instruction&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">offset</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">by</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;s-literal&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-nlpr.html#SP6_1" class="named-paragraph-link"><span class="named-paragraph">Scaling together with offset</span><span class="named-paragraph-number">6.1</span></a></span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">offset</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">by</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;s-literal&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-nlpr.html#SP6_2" class="named-paragraph-link"><span class="named-paragraph">Offset alone</span><span class="named-paragraph-number">6.2</span></a></span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">equivalent</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">to</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;s-literal&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-nlpr.html#SP6_3" class="named-paragraph-link"><span class="named-paragraph">Equivalency</span><span class="named-paragraph-number">6.3</span></a></span>
<span class="Preform-function-syntax">&lt;scaling-instruction&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">scaled</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">up</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">by</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;scaling-amount&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { SCALING_LPC, - }; glps.scaled_dir = LP_SCALED_UP</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">scaled</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">down</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">by</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;scaling-amount&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { SCALING_LPC, - }; glps.scaled_dir = LP_SCALED_DOWN</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">scaled</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">at</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;scaling-amount&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { SCALING_LPC, - }; glps.scaled_dir = LP_SCALED_AT</span>
<span class="Preform-function-syntax">&lt;scaling-amount&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;cardinal-number&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-nlpr.html#SP6_4" class="named-paragraph-link"><span class="named-paragraph">Accept an integer scale factor</span><span class="named-paragraph-number">6.4</span></a></span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;s-literal-real-number&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-nlpr.html#SP6_5" class="named-paragraph-link"><span class="named-paragraph">Accept a real scale factor</span><span class="named-paragraph-number">6.5</span></a></span>
</pre>
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
<p class="commentary firstcommentary"><a id="SP6_1"></a><b>&#167;6.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Scaling together with offset</span><span class="named-paragraph-number">6.1</span></span><span class="Preform-comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">glps</span><span class="plain-syntax">.</span><span class="element-syntax">offset_value_as_double</span><span class="plain-syntax"> = </span><a href="6-lp.html#SP18" class="function-link"><span class="function-syntax">LiteralPatterns::get_latest_real</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">glps</span><span class="plain-syntax">.</span><span class="element-syntax">offset_value</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RP</span><span class="plain-syntax">[2];</span>
<span class="plain-syntax"> ==&gt; { </span><span class="constant-syntax">SCALING_LPC</span><span class="plain-syntax">, - };</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-nlpr.html#SP6">&#167;6</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP6_2"></a><b>&#167;6.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Offset alone</span><span class="named-paragraph-number">6.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="identifier-syntax">glps</span><span class="plain-syntax">.</span><span class="element-syntax">offset_value_as_double</span><span class="plain-syntax"> = </span><a href="6-lp.html#SP18" class="function-link"><span class="function-syntax">LiteralPatterns::get_latest_real</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">glps</span><span class="plain-syntax">.</span><span class="element-syntax">offset_value</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RP</span><span class="plain-syntax">[1];</span>
<span class="plain-syntax"> ==&gt; { </span><span class="constant-syntax">OFFSET_LPC</span><span class="plain-syntax">, - };</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-nlpr.html#SP6">&#167;6</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP6_3"></a><b>&#167;6.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Equivalency</span><span class="named-paragraph-number">6.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">glps</span><span class="plain-syntax">.</span><span class="element-syntax">equivalent_value_as_double</span><span class="plain-syntax"> = </span><a href="6-lp.html#SP18" class="function-link"><span class="function-syntax">LiteralPatterns::get_latest_real</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">glps</span><span class="plain-syntax">.</span><span class="element-syntax">equivalent_value</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RP</span><span class="plain-syntax">[1];</span>
<span class="plain-syntax"> ==&gt; { </span><span class="constant-syntax">EQUIVALENT_LPC</span><span class="plain-syntax">, - };</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-nlpr.html#SP6">&#167;6</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP6_4"></a><b>&#167;6.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Accept an integer scale factor</span><span class="named-paragraph-number">6.4</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">glps</span><span class="plain-syntax">.</span><span class="element-syntax">scale_factor</span><span class="plain-syntax"> = </span><span class="identifier-syntax">R</span><span class="plain-syntax">[1];</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">glps</span><span class="plain-syntax">.</span><span class="element-syntax">scale_factor_as_double</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">double</span><span class="plain-syntax">) </span><span class="identifier-syntax">R</span><span class="plain-syntax">[1];</span>
<span class="plain-syntax"> ==&gt; { -, - };</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-nlpr.html#SP6">&#167;6</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP6_5"></a><b>&#167;6.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Accept a real scale factor</span><span class="named-paragraph-number">6.5</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">glps</span><span class="plain-syntax">.</span><span class="element-syntax">scale_factor</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">glps</span><span class="plain-syntax">.</span><span class="element-syntax">scale_factor_as_double</span><span class="plain-syntax"> = </span><a href="6-lp.html#SP18" class="function-link"><span class="function-syntax">LiteralPatterns::get_latest_real</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">glps</span><span class="plain-syntax">.</span><span class="element-syntax">uses_real_arithmetic</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> ==&gt; { -, - };</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-nlpr.html#SP6">&#167;6</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP6_6"></a><b>&#167;6.6. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_LPNotKOV problem</span><span class="named-paragraph-number">6.6</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">preform_lookahead_mode</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP5" 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_LPNotKOV</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="string-syntax">"you can only specify ways to write kinds of value"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"as created with sentences like 'A weight is a kind of value.'"</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-nlpr.html#SP6">&#167;6</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP7"></a><b>&#167;7. </b>Of the optional tails, the only tricky one is the part list, which has the
following rather extensive grammar. This handles text like:
</p>
<blockquote>
<p>dollars and cents (optional, preamble optional)</p>
</blockquote>
<p class="commentary">The text is a list of part-names, each of which can optionally be followed
by a bracketed list of up to three options in any order.
</p>
<pre class="Preform-displayed-code all-displayed-code code-font">
<span class="Preform-function-syntax">&lt;lp-part-list&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;lp-part&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">,</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">and</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;lp-part-list&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { 0, Node::compose(RP[1], RP[2]) }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;lp-part&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">,</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;lp-part-list&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { 0, Node::compose(RP[1], RP[2]) }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;lp-part&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">and</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;lp-part-list&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { 0, Node::compose(RP[1], RP[2]) }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;lp-part&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { 0, RP[1] }</span>
<span class="Preform-function-syntax">&lt;lp-part&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;np-unparsed-bal&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">(</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;lp-part-option-list&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">)</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { 0, LPRequests::mark(RP[1], R[2]) }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;np-unparsed-bal&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { 0, RP[1] }</span>
<span class="Preform-function-syntax">&lt;lp-part-option-list&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;lp-part-option&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;lp-part-option-tail&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { R[1] | R[2], - }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;lp-part-option&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { pass 1 }</span>
<span class="Preform-function-syntax">&lt;lp-part-option-tail&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">,</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">and</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;lp-part-option-list&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { pass 1 }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">,/and</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;lp-part-option-list&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { pass 1 }</span>
<span class="Preform-function-syntax">&lt;lp-part-option&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">optional</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { OPTIONAL_LSO, - }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">preamble</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">optional</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { PREAMBLE_OPTIONAL_LSO, - }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">without</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">leading</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">zeros</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { WITHOUT_LEADING_ZEROS_LSO, - }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">......</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-nlpr.html#SP7_1" class="named-paragraph-link"><span class="named-paragraph">Issue PM_BadLPPartOption problem</span><span class="named-paragraph-number">7.1</span></a></span>
</pre>
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
<p class="commentary firstcommentary"><a id="SP7_1"></a><b>&#167;7.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_BadLPPartOption problem</span><span class="named-paragraph-number">7.1</span></span><span class="Preform-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">preform_lookahead_mode</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="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">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP5" 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_BadLPPartOption</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 specification %1, I was expecting that '%2' would be an optional "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"note about one of the parts: it should have been one of 'optional', "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"'preamble optional' or 'without leading zeros'."</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"> ==&gt; { </span><span class="constant-syntax">0</span><span class="plain-syntax">, - };</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-nlpr.html#SP7">&#167;7</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP8"></a><b>&#167;8. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">literal_pattern_name</span><span class="plain-syntax"> *</span><span class="function-syntax">LPRequests::compose</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">LPRequests::compose</span></span>:<br/><a href="4-nlpr.html#SP5">&#167;5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">literal_pattern_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">A</span><span class="plain-syntax">, </span><span class="reserved-syntax">literal_pattern_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</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="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</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">A</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next_with_rp</span><span class="plain-syntax"> = </span><span class="identifier-syntax">B</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">A</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP9"></a><b>&#167;9. </b>Nodes used as "parts" of a notation are annotated with a bitmap of these:
</p>
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">OPTIONAL_LSO</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">PREAMBLE_OPTIONAL_LSO</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">WITHOUT_LEADING_ZEROS_LSO</span><span class="plain-syntax"> </span><span class="constant-syntax">4</span>
</pre>
<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">LPRequests::mark</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">LPRequests::mark</span></span>:<br/><a href="4-nlpr.html#SP7">&#167;7</a></span></button><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="reserved-syntax">int</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">A</span><span class="plain-syntax">) </span><span class="identifier-syntax">Annotations::write_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">, </span><span class="constant-syntax">lpe_options_ANNOT</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">A</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="4-nar.html">&#10094;</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="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-dlr.html">dlr</a></li><li class="progresssection"><a href="4-pr.html">pr</a></li><li class="progresssection"><a href="4-tr.html">tr</a></li><li class="progresssection"><a href="4-nuor.html">nuor</a></li><li class="progresssection"><a href="4-uor.html">uor</a></li><li class="progresssection"><a href="4-tr2.html">tr2</a></li><li class="progresssection"><a href="4-dbtr.html">dbtr</a></li><li class="progresssection"><a href="4-rpr.html">rpr</a></li><li class="progresssection"><a href="4-nar.html">nar</a></li><li class="progresscurrent">nlpr</li><li class="progresssection"><a href="4-nrr.html">nrr</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="4-nrr.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>
</body>
</html>

458
docs/core-module/4-nrr.html Normal file
View file

@ -0,0 +1,458 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>New Relation Requests</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">
<script>
MathJax = {
tex: {
inlineMath: '$', '$'], ['\\(', '\\)'
},
svg: {
fontCache: 'global'
}
};
</script>
<script type="text/javascript" id="MathJax-script" async
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js">
</script>
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Preform-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="../kinds-module/index.html">kinds</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="../syntax-module/index.html">syntax</a></li>
<li><a href="../words-module/index.html">words</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="../linguistics-module/index.html">linguistics</a></li>
<li><a href="../problems-module/index.html">problems</a></li>
<li><a href="../../../inweb/docs/foundation-module/index.html">foundation</a></li>
</ul>
</nav>
<main role="main">
<!--Weave of 'New Relation Requests' 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#4">Chapter 4: Requests</a></li><li><b>New Relation Requests</b></li></ul></div>
<p class="purpose">Special sentences for creating new relations.</p>
<p class="commentary firstcommentary"><a id="SP1"></a><b>&#167;1. </b>The following reads sentences like:
</p>
<blockquote>
<p>Acquaintance relates people to each other.</p>
</blockquote>
<p class="commentary">Note that we take at least minimal action on this as soon as we detect it,
in the pre-pass: this is important because it may affect the classification
of subsequent sentences, which also happens in the pre-pass.
</p>
<p class="commentary">The <span class="extract"><span class="extract-syntax">:relations</span></span> set of test cases may be useful when tweaking the code below.
</p>
<pre class="Preform-displayed-code all-displayed-code code-font">
<span class="Preform-function-syntax">&lt;new-relation-sentence-object&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;np-unparsed&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">to</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;np-unparsed&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { TRUE, Node::compose(RP[1], RP[2]) }</span>
</pre>
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
<p class="commentary firstcommentary"><a id="SP2"></a><b>&#167;2. </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">RelationRequests::new_relation_SMF</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">RelationRequests::new_relation_SMF</span></span>:<br/>Booting Verbs - <a href="3-bv.html#SP1_3">&#167;1.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">task</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">V</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> *</span><span class="identifier-syntax">NPs</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">SW</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">[0]):</span><span class="identifier-syntax">EMPTY_WORDING</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">OW</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">[1]):</span><span class="identifier-syntax">EMPTY_WORDING</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">task</span><span class="plain-syntax">) { </span><span class="comment-syntax"> "Knowledge relates various people to various things."</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">ACCEPT_SMFT:</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax">&lt;new-relation-sentence-object&gt;</span><span class="plain-syntax">(</span><span class="identifier-syntax">OW</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">O</span><span class="plain-syntax"> = </span><span class="function-syntax">&lt;&lt;rp&gt;&gt;</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="function-syntax">&lt;np-unparsed&gt;</span><span class="plain-syntax">(</span><span class="identifier-syntax">SW</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">V</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax"> = </span><span class="function-syntax">&lt;&lt;rp&gt;&gt;</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">V</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax"> = </span><span class="identifier-syntax">O</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">RW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">V</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</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">&lt;relation-name&gt;</span><span class="plain-syntax">(</span><span class="identifier-syntax">RW</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#SP5" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(),</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_RelationExists</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="string-syntax">"that relation already exists"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"and cannot have its definition amended now."</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">Wordings::length</span><span class="plain-syntax">(</span><span class="identifier-syntax">RW</span><span class="plain-syntax">) &gt; </span><span class="identifier-syntax">MAX_WORDS_IN_ASSEMBLAGE</span><span class="plain-syntax">-4)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP5" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(),</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_RelationNameTooLong</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="string-syntax">"this is too long a name for a single relation to have"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"and would become unwieldy."</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">Node::set_new_relation_here</span><span class="plain-syntax">(</span><span class="identifier-syntax">V</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="7-bp.html#SP29" class="function-link"><span class="function-syntax">BinaryPredicates::make_pair_sketchily</span></a><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WordAssemblages::from_wording</span><span class="plain-syntax">(</span><span class="identifier-syntax">RW</span><span class="plain-syntax">), </span><span class="constant-syntax">Relation_OtoO</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">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">PASS_1_SMFT:</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_new_relation_here</span><span class="plain-syntax">(</span><span class="identifier-syntax">V</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</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">bp</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="4-nrr.html#SP2_3" class="named-paragraph-link"><span class="named-paragraph">Make the request</span><span class="named-paragraph-number">2.3</span></a></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="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP2_1"></a><b>&#167;2.1. </b>We won't create the relation here, only submit a request in the form of
the following object. The terms 0 and 1 represent the part before the "to"
and after; in "relates people to each other", they would derive from "people"
and "each other" respectively.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">relation_request</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">RW</span><span class="plain-syntax">; </span><span class="comment-syntax"> name of the relation</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">relation_request_term</span><span class="plain-syntax"> </span><span class="identifier-syntax">terms</span><span class="plain-syntax">[2];</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">CONW</span><span class="plain-syntax">; </span><span class="comment-syntax"> condition text</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">frf</span><span class="plain-syntax">; </span><span class="comment-syntax"> has fast route-finding</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">symmetric</span><span class="plain-syntax">; </span><span class="comment-syntax"> a symmetric relation?</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">equivalence</span><span class="plain-syntax">; </span><span class="comment-syntax"> an equivalence ("in groups") relation?</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">relation_request</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">relation_request_term</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">domain</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">CALLW</span><span class="plain-syntax">; </span><span class="comment-syntax"> "calling" name</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">unique</span><span class="plain-syntax">; </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">TRUE</span></span><span class="comment-syntax"> for one, </span><span class="extract"><span class="extract-syntax">FALSE</span></span><span class="comment-syntax"> for various, </span><span class="extract"><span class="extract-syntax">NOT_APPLICABLE</span></span><span class="comment-syntax"> if not yet known</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">relation_request_term</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure relation_request is accessed in 7/rlt, 11/ap, 11/pr, 11/bas, 11/sm, 11/tcp, 12/ap, 12/ca, 12/cad, 12/cdp and here.</li><li>The structure relation_request_term is accessed in 7/rlt and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_2"></a><b>&#167;2.2. </b>Syntax on the left (term 0) and right (term 1) slightly differs. The integer
result is a bitmap of these:
</p>
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">FRF_RBIT</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">ONE_RBIT</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">VAR_RBIT</span><span class="plain-syntax"> </span><span class="constant-syntax">4</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">ANOTHER_RBIT</span><span class="plain-syntax"> </span><span class="constant-syntax">8</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">EACHOTHER_RBIT</span><span class="plain-syntax"> </span><span class="constant-syntax">16</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">GROUPS_RBIT</span><span class="plain-syntax"> </span><span class="constant-syntax">32</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">WHEN_RBIT</span><span class="plain-syntax"> </span><span class="constant-syntax">64</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">CALLED_RBIT</span><span class="plain-syntax"> </span><span class="constant-syntax">128</span>
</pre>
<pre class="Preform-displayed-code all-displayed-code code-font">
<span class="Preform-function-syntax">&lt;relates-sentence-left-object&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;relation-term-basic&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">(</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">called</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">)</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { R[1] | CALLED_RBIT, - }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;relation-term-basic&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { pass 1 }</span>
<span class="Preform-function-syntax">&lt;relates-sentence-right-object&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;relation-term-right-named&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">with</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">fast</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">route-finding</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { R[1] | FRF_RBIT, - }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;relation-term-right-named&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">when</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { R[1] | WHEN_RBIT, - }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;relation-term-right-named&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { pass 1 }</span>
<span class="Preform-function-syntax">&lt;relation-term-right-named&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;relation-term-right&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">(</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">called</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">)</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { R[1] | CALLED_RBIT, - }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;relation-term-right&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { pass 1 }</span>
<span class="Preform-function-syntax">&lt;relation-term-right&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">{another}</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { ANOTHER_RBIT, - }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">{each</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">other}</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { EACHOTHER_RBIT, - }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">{each</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">other</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">in</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">groups}</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { GROUPS_RBIT, - }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;relation-term-basic&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { pass 1 }</span>
<span class="Preform-function-syntax">&lt;relation-term-basic&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">one</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { ONE_RBIT, - }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">various</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { VAR_RBIT, - }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { 0, - }</span>
</pre>
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_3"></a><b>&#167;2.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Make the request</span><span class="named-paragraph-number">2.3</span></span><span class="Preform-comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">relation_request</span><span class="plain-syntax"> </span><span class="identifier-syntax">RR</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="element-syntax">RW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">V</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">); </span><span class="comment-syntax"> relation name</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="element-syntax">CONW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="element-syntax">frf</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">RR</span><span class="plain-syntax">.</span><span class="element-syntax">symmetric</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">RR</span><span class="plain-syntax">.</span><span class="element-syntax">equivalence</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">TW</span><span class="plain-syntax">[2];</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">bitmap</span><span class="plain-syntax">[2]; </span><span class="comment-syntax"> bitmap of the </span><span class="extract"><span class="extract-syntax">*_RBIT</span></span><span class="comment-syntax"> values</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-nrr.html#SP2_3_1" class="named-paragraph-link"><span class="named-paragraph">Parse left and right object phrases</span><span class="named-paragraph-number">2.3.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-nrr.html#SP2_3_2" class="named-paragraph-link"><span class="named-paragraph">Find term multiplicities and use of fast route-finding</span><span class="named-paragraph-number">2.3.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-nrr.html#SP2_3_3" class="named-paragraph-link"><span class="named-paragraph">Detect use of symmetry in definition of second term</span><span class="named-paragraph-number">2.3.3</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-nrr.html#SP2_3_4" class="named-paragraph-link"><span class="named-paragraph">Detect use of a condition for a test-only relation</span><span class="named-paragraph-number">2.3.4</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-nrr.html#SP2_3_5" class="named-paragraph-link"><span class="named-paragraph">Vet the use of callings for the terms of the relation</span><span class="named-paragraph-number">2.3.5</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-nrr.html#SP2_3_6" class="named-paragraph-link"><span class="named-paragraph">Find the left and right domain kinds</span><span class="named-paragraph-number">2.3.6</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-nrr.html#SP2_3_7" class="named-paragraph-link"><span class="named-paragraph">Infer uniqueness if not specified</span><span class="named-paragraph-number">2.3.7</span></a></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">RELATION_DEFINITIONS</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"Relation defn: '%W' %s %s %s (%s $u, %s $u)\n"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="element-syntax">RW</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="element-syntax">symmetric</span><span class="plain-syntax">)?</span><span class="string-syntax">"symmetric"</span><span class="plain-syntax">:</span><span class="string-syntax">"asymmetric"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="element-syntax">equivalence</span><span class="plain-syntax">)?</span><span class="string-syntax">"equivalence"</span><span class="plain-syntax">:</span><span class="string-syntax">"non-equivalence"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="element-syntax">frf</span><span class="plain-syntax">)?</span><span class="string-syntax">"frf"</span><span class="plain-syntax">:</span><span class="string-syntax">"no-frf"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="element-syntax">terms</span><span class="plain-syntax">[0].</span><span class="element-syntax">unique</span><span class="plain-syntax">)?</span><span class="string-syntax">"one"</span><span class="plain-syntax">:</span><span class="string-syntax">"various"</span><span class="plain-syntax">, </span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="element-syntax">terms</span><span class="plain-syntax">[0].</span><span class="element-syntax">domain</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="element-syntax">terms</span><span class="plain-syntax">[1].</span><span class="element-syntax">unique</span><span class="plain-syntax">)?</span><span class="string-syntax">"one"</span><span class="plain-syntax">:</span><span class="string-syntax">"various"</span><span class="plain-syntax">, </span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="element-syntax">terms</span><span class="plain-syntax">[1].</span><span class="element-syntax">domain</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="7-rlt.html#SP4" class="function-link"><span class="function-syntax">Relations::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">RR</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-nrr.html#SP2">&#167;2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_3_1"></a><b>&#167;2.3.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse left and right object phrases</span><span class="named-paragraph-number">2.3.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="function-syntax">&lt;relates-sentence-left-object&gt;(Node::get_text(V-&gt;next-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">bitmap</span><span class="plain-syntax">[0] = </span><span class="function-syntax">&lt;&lt;r&gt;&gt;</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="element-syntax">terms</span><span class="plain-syntax">[0].</span><span class="element-syntax">CALLW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">; </span><span class="comment-syntax"> left term "calling" name</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">bitmap</span><span class="plain-syntax">[0] &amp; </span><span class="constant-syntax">CALLED_RBIT</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="identifier-syntax">terms</span><span class="plain-syntax">[0].</span><span class="element-syntax">CALLW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">GET_RW</span><span class="plain-syntax">(</span><span class="function-syntax">&lt;relates-sentence-left-object&gt;</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">TW</span><span class="plain-syntax">[0] = </span><span class="identifier-syntax">GET_RW</span><span class="plain-syntax">(</span><span class="function-syntax">&lt;relation-term-basic&gt;</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">RR</span><span class="plain-syntax">.</span><span class="element-syntax">terms</span><span class="plain-syntax">[0].</span><span class="element-syntax">unique</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NOT_APPLICABLE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="element-syntax">terms</span><span class="plain-syntax">[0].</span><span class="element-syntax">domain</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="function-syntax">&lt;relates-sentence-right-object&gt;(Node::get_text(V-&gt;next-&gt;next-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">bitmap</span><span class="plain-syntax">[1] = </span><span class="function-syntax">&lt;&lt;r&gt;&gt;</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="element-syntax">terms</span><span class="plain-syntax">[1].</span><span class="element-syntax">CALLW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">; </span><span class="comment-syntax"> right term "calling" name</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">bitmap</span><span class="plain-syntax">[1] &amp; </span><span class="constant-syntax">CALLED_RBIT</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="identifier-syntax">terms</span><span class="plain-syntax">[1].</span><span class="element-syntax">CALLW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">GET_RW</span><span class="plain-syntax">(</span><span class="function-syntax">&lt;relation-term-right-named&gt;</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">TW</span><span class="plain-syntax">[1] = </span><span class="identifier-syntax">GET_RW</span><span class="plain-syntax">(</span><span class="function-syntax">&lt;relation-term-basic&gt;</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">RR</span><span class="plain-syntax">.</span><span class="element-syntax">terms</span><span class="plain-syntax">[1].</span><span class="element-syntax">unique</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NOT_APPLICABLE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="element-syntax">terms</span><span class="plain-syntax">[1].</span><span class="element-syntax">domain</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">bitmap</span><span class="plain-syntax">[1] &amp; </span><span class="constant-syntax">WHEN_RBIT</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="identifier-syntax">CONW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">GET_RW</span><span class="plain-syntax">(</span><span class="function-syntax">&lt;relates-sentence-right-object&gt;</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-nrr.html#SP2_3">&#167;2.3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_3_2"></a><b>&#167;2.3.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Find term multiplicities and use of fast route-finding</span><span class="named-paragraph-number">2.3.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">bitmap</span><span class="plain-syntax">[0] &amp; </span><span class="constant-syntax">ONE_RBIT</span><span class="plain-syntax">) </span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="identifier-syntax">terms</span><span class="plain-syntax">[0].</span><span class="element-syntax">unique</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">bitmap</span><span class="plain-syntax">[0] &amp; </span><span class="constant-syntax">VAR_RBIT</span><span class="plain-syntax">) </span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="identifier-syntax">terms</span><span class="plain-syntax">[0].</span><span class="element-syntax">unique</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">bitmap</span><span class="plain-syntax">[1] &amp; </span><span class="constant-syntax">ONE_RBIT</span><span class="plain-syntax">) </span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="identifier-syntax">terms</span><span class="plain-syntax">[1].</span><span class="element-syntax">unique</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">bitmap</span><span class="plain-syntax">[1] &amp; </span><span class="constant-syntax">VAR_RBIT</span><span class="plain-syntax">) </span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="identifier-syntax">terms</span><span class="plain-syntax">[1].</span><span class="element-syntax">unique</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">bitmap</span><span class="plain-syntax">[1] &amp; </span><span class="constant-syntax">FRF_RBIT</span><span class="plain-syntax">) </span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="identifier-syntax">frf</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">RR</span><span class="plain-syntax">.</span><span class="identifier-syntax">frf</span><span class="plain-syntax"> &amp;&amp; (</span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="element-syntax">terms</span><span class="plain-syntax">[0].</span><span class="element-syntax">unique</span><span class="plain-syntax"> != </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="element-syntax">terms</span><span class="plain-syntax">[1].</span><span class="element-syntax">unique</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">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP5" 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_FRFUnavailable</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="string-syntax">"fast route-finding is only possible with various-to-various "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"relations"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"though this doesn't matter because with other relations the "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"standard route-finding algorithm is efficient already."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-nrr.html#SP2_3">&#167;2.3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_3_3"></a><b>&#167;2.3.3. </b>The second term can be given in several special ways to indicate symmetry
between the two terms. This is more than a declaration that the left and
right terms belong to the same domain set (though that is true): it says
that \(R(x, y)\) is true if and only if \(R(y, x)\) is true.
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Detect use of symmetry in definition of second term</span><span class="named-paragraph-number">2.3.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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">specified_one</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="element-syntax">terms</span><span class="plain-syntax">[0].</span><span class="element-syntax">unique</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">bitmap</span><span class="plain-syntax">[1] &amp; </span><span class="constant-syntax">ANOTHER_RBIT</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="identifier-syntax">symmetric</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; </span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="element-syntax">terms</span><span class="plain-syntax">[0].</span><span class="element-syntax">unique</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; </span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="element-syntax">terms</span><span class="plain-syntax">[1].</span><span class="element-syntax">unique</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">bitmap</span><span class="plain-syntax">[1] &amp; </span><span class="constant-syntax">EACHOTHER_RBIT</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="identifier-syntax">symmetric</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; </span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="element-syntax">terms</span><span class="plain-syntax">[0].</span><span class="element-syntax">unique</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">; </span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="element-syntax">terms</span><span class="plain-syntax">[1].</span><span class="element-syntax">unique</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</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">bitmap</span><span class="plain-syntax">[1] &amp; </span><span class="constant-syntax">GROUPS_RBIT</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="identifier-syntax">symmetric</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; </span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="element-syntax">terms</span><span class="plain-syntax">[0].</span><span class="element-syntax">unique</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">; </span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="element-syntax">terms</span><span class="plain-syntax">[1].</span><span class="element-syntax">unique</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">RR</span><span class="plain-syntax">.</span><span class="identifier-syntax">equivalence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">specified_one</span><span class="plain-syntax"> == </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="element-syntax">terms</span><span class="plain-syntax">[0].</span><span class="element-syntax">unique</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">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP5" 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_BothOneAndMany</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="string-syntax">"the left-hand term in this relation seems to be both 'one' thing "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"and also many things"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"given the mention of 'each other'. Try removing the 'one'."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-nrr.html#SP2_3">&#167;2.3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_3_4"></a><b>&#167;2.3.4. </b>When a relation is said to hold depending on a condition to be tested at
run-time, it is meaningless to tell Inform anything about the uniqueness of
terms in the domain: a relation might be one-to-one at the start of play
but become various-to-various later on, as the outcomes of these tests
change. So we reject any such misleading syntax.
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Detect use of a condition for a test-only relation</span><span class="named-paragraph-number">2.3.4</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">bitmap</span><span class="plain-syntax">[1] &amp; </span><span class="constant-syntax">WHEN_RBIT</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">RR</span><span class="plain-syntax">.</span><span class="element-syntax">terms</span><span class="plain-syntax">[0].</span><span class="element-syntax">unique</span><span class="plain-syntax"> != </span><span class="identifier-syntax">NOT_APPLICABLE</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="element-syntax">terms</span><span class="plain-syntax">[1].</span><span class="element-syntax">unique</span><span class="plain-syntax"> != </span><span class="identifier-syntax">NOT_APPLICABLE</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#SP5" 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_OneOrVariousWithWhen</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="string-syntax">"this relation is a mixture of different syntaxes"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"and must be simplified. If it is going to specify 'one' or "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"'various' then it cannot also say 'when' the relation holds."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-nrr.html#SP2_3">&#167;2.3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_3_5"></a><b>&#167;2.3.5. </b>To give a name to one term implies some degree of uniqueness about it.
But that only makes sense if there is indeed some uniqueness involved,
because otherwise it is unclear what the name refers to. Who is "the
greeter of the Queen of Sheba" given the following definition?
</p>
<blockquote>
<p>Acquaintance relates various people (called the greeter) to various people.</p>
</blockquote>
<p class="commentary">Because of that, callings are only allowed in certain circumstances. An
exception is made &mdash; that is, they are always allowed &mdash; where the relation
tests a given condition, because then the names identify the terms, e.g.,
</p>
<blockquote>
<p>Divisibility relates a number (called N) to a number (called M) when the remainder after dividing M by N is 0.</p>
</blockquote>
<p class="commentary">Here the names "N" and "M" unambiguously refer to the terms being tested
at this moment, and have no currency beyond that context.
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Vet the use of callings for the terms of the relation</span><span class="named-paragraph-number">2.3.5</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">Wordings::empty</span><span class="plain-syntax">(</span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="element-syntax">CONW</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">RR</span><span class="plain-syntax">.</span><span class="element-syntax">terms</span><span class="plain-syntax">[0].</span><span class="element-syntax">unique</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="element-syntax">terms</span><span class="plain-syntax">[0].</span><span class="element-syntax">CALLW</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#SP5" 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_CantCallLeft</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="string-syntax">"the left-hand term of this relation is not unique"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"so you cannot assign a name to it using 'called'."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="element-syntax">terms</span><span class="plain-syntax">[1].</span><span class="element-syntax">unique</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="element-syntax">terms</span><span class="plain-syntax">[1].</span><span class="element-syntax">CALLW</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#SP5" 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_CantCallRight</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="string-syntax">"the right-hand term of this relation is not unique"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"so you cannot assign a name to it using 'called'."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<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">RR</span><span class="plain-syntax">.</span><span class="element-syntax">terms</span><span class="plain-syntax">[0].</span><span class="element-syntax">CALLW</span><span class="plain-syntax">)) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="element-syntax">terms</span><span class="plain-syntax">[1].</span><span class="element-syntax">CALLW</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#SP5" 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_CantCallBoth</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="string-syntax">"the terms of the relation can't be named on both sides at once"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"and because of that it's best to use a single even-handed name: "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"for instance, 'Marriage relates one person to another (called "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"the spouse).' rather than 'Employment relates one person (called "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"the boss) to one person (called the underling).'"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="element-syntax">symmetric</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="element-syntax">terms</span><span class="plain-syntax">[0].</span><span class="element-syntax">unique</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="element-syntax">terms</span><span class="plain-syntax">[1].</span><span class="element-syntax">unique</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="element-syntax">terms</span><span class="plain-syntax">[1].</span><span class="element-syntax">CALLW</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#SP5" 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_OneToOneMiscalled</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="string-syntax">"with a one-to-one relation which is not symmetrical "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"only the left-hand item can be given a name using 'called'"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"so this needs rephrasing to name the left in terms of the right "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"rather than vice versa. For instance, 'Transmission relates "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"one remote to one gadget (called the target).' should be "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"rephrased as 'Transmission relates one gadget (called the "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"target) to one remote.' It will then be possible to talk about "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"'the gadget of' any given remote."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-nrr.html#SP2_3">&#167;2.3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_3_6"></a><b>&#167;2.3.6. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Find the left and right domain kinds</span><span class="named-paragraph-number">2.3.6</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">RR</span><span class="plain-syntax">.</span><span class="element-syntax">terms</span><span class="plain-syntax">[0].</span><span class="element-syntax">domain</span><span class="plain-syntax"> = </span><a href="4-nrr.html#SP3" class="function-link"><span class="function-syntax">RelationRequests::parse_term</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">TW</span><span class="plain-syntax">[0], </span><span class="string-syntax">"left"</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">RR</span><span class="plain-syntax">.</span><span class="identifier-syntax">symmetric</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="identifier-syntax">terms</span><span class="plain-syntax">[1].</span><span class="element-syntax">domain</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="element-syntax">terms</span><span class="plain-syntax">[0].</span><span class="element-syntax">domain</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">RR</span><span class="plain-syntax">.</span><span class="identifier-syntax">terms</span><span class="plain-syntax">[1].</span><span class="element-syntax">domain</span><span class="plain-syntax"> = </span><a href="4-nrr.html#SP3" class="function-link"><span class="function-syntax">RelationRequests::parse_term</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">TW</span><span class="plain-syntax">[1], </span><span class="string-syntax">"right"</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">RR</span><span class="plain-syntax">.</span><span class="element-syntax">terms</span><span class="plain-syntax">[0].</span><span class="element-syntax">domain</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="element-syntax">terms</span><span class="plain-syntax">[1].</span><span class="element-syntax">domain</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>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-nrr.html#SP2_3">&#167;2.3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_3_7"></a><b>&#167;2.3.7. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Infer uniqueness if not specified</span><span class="named-paragraph-number">2.3.7</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">RR</span><span class="plain-syntax">.</span><span class="identifier-syntax">terms</span><span class="plain-syntax">[0].</span><span class="element-syntax">unique</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NOT_APPLICABLE</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="identifier-syntax">terms</span><span class="plain-syntax">[0].</span><span class="element-syntax">unique</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">RR</span><span class="plain-syntax">.</span><span class="element-syntax">terms</span><span class="plain-syntax">[0].</span><span class="element-syntax">CALLW</span><span class="plain-syntax">)) || (</span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="element-syntax">terms</span><span class="plain-syntax">[1].</span><span class="element-syntax">unique</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">RR</span><span class="plain-syntax">.</span><span class="element-syntax">terms</span><span class="plain-syntax">[0].</span><span class="element-syntax">unique</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="identifier-syntax">terms</span><span class="plain-syntax">[1].</span><span class="element-syntax">unique</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NOT_APPLICABLE</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="identifier-syntax">terms</span><span class="plain-syntax">[1].</span><span class="element-syntax">unique</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">RR</span><span class="plain-syntax">.</span><span class="element-syntax">terms</span><span class="plain-syntax">[1].</span><span class="element-syntax">CALLW</span><span class="plain-syntax">)) || (</span><span class="identifier-syntax">RR</span><span class="plain-syntax">.</span><span class="element-syntax">terms</span><span class="plain-syntax">[0].</span><span class="element-syntax">unique</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">RR</span><span class="plain-syntax">.</span><span class="element-syntax">terms</span><span class="plain-syntax">[1].</span><span class="element-syntax">unique</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-nrr.html#SP2_3">&#167;2.3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3"></a><b>&#167;3. </b>A term is specified as a kind:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">RelationRequests::parse_term</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">RelationRequests::parse_term</span></span>:<br/><a href="4-nrr.html#SP2_3_6">&#167;2.3.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="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">side</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">&lt;k-kind-articled&gt;</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">&lt;&lt;rp&gt;&gt;</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_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">side</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#SP5" 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_RelatedKindsUnknown</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 relation definition %1, I am unable to understand the %3-hand "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"side -- I was expecting that %2 would be either the name of a kind, "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"or the name of a kind of value, but it wasn't either of those."</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</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="4-nlpr.html">&#10094;</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="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-dlr.html">dlr</a></li><li class="progresssection"><a href="4-pr.html">pr</a></li><li class="progresssection"><a href="4-tr.html">tr</a></li><li class="progresssection"><a href="4-nuor.html">nuor</a></li><li class="progresssection"><a href="4-uor.html">uor</a></li><li class="progresssection"><a href="4-tr2.html">tr2</a></li><li class="progresssection"><a href="4-dbtr.html">dbtr</a></li><li class="progresssection"><a href="4-rpr.html">rpr</a></li><li class="progresssection"><a href="4-nar.html">nar</a></li><li class="progresssection"><a href="4-nlpr.html">nlpr</a></li><li class="progresscurrent">nrr</li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="5-ita.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>
</body>
</html>

View file

@ -382,7 +382,7 @@ by hand with a sentence in the source text.
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-nuor.html#SP10">&#167;10</a> (twice).</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-tr.html">&#10094;</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="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-dlr.html">dlr</a></li><li class="progresssection"><a href="4-pr.html">pr</a></li><li class="progresssection"><a href="4-tr.html">tr</a></li><li class="progresscurrent">nuor</li><li class="progresssection"><a href="4-uor.html">uor</a></li><li class="progresssection"><a href="4-tr2.html">tr2</a></li><li class="progresssection"><a href="4-dbtr.html">dbtr</a></li><li class="progresssection"><a href="4-rpr.html">rpr</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="4-uor.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="4-tr.html">&#10094;</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="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-dlr.html">dlr</a></li><li class="progresssection"><a href="4-pr.html">pr</a></li><li class="progresssection"><a href="4-tr.html">tr</a></li><li class="progresscurrent">nuor</li><li class="progresssection"><a href="4-uor.html">uor</a></li><li class="progresssection"><a href="4-tr2.html">tr2</a></li><li class="progresssection"><a href="4-dbtr.html">dbtr</a></li><li class="progresssection"><a href="4-rpr.html">rpr</a></li><li class="progresssection"><a href="4-nar.html">nar</a></li><li class="progresssection"><a href="4-nlpr.html">nlpr</a></li><li class="progresssection"><a href="4-nrr.html">nrr</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="4-uor.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -143,7 +143,7 @@ text anyway, so the following problem messages are not too gratuitous.
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-pr.html#SP2">&#167;2</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-dlr.html">&#10094;</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="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-dlr.html">dlr</a></li><li class="progresscurrent">pr</li><li class="progresssection"><a href="4-tr.html">tr</a></li><li class="progresssection"><a href="4-nuor.html">nuor</a></li><li class="progresssection"><a href="4-uor.html">uor</a></li><li class="progresssection"><a href="4-tr2.html">tr2</a></li><li class="progresssection"><a href="4-dbtr.html">dbtr</a></li><li class="progresssection"><a href="4-rpr.html">rpr</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="4-tr.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="4-dlr.html">&#10094;</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="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-dlr.html">dlr</a></li><li class="progresscurrent">pr</li><li class="progresssection"><a href="4-tr.html">tr</a></li><li class="progresssection"><a href="4-nuor.html">nuor</a></li><li class="progresssection"><a href="4-uor.html">uor</a></li><li class="progresssection"><a href="4-tr2.html">tr2</a></li><li class="progresssection"><a href="4-dbtr.html">dbtr</a></li><li class="progresssection"><a href="4-rpr.html">rpr</a></li><li class="progresssection"><a href="4-nar.html">nar</a></li><li class="progresssection"><a href="4-nlpr.html">nlpr</a></li><li class="progresssection"><a href="4-nrr.html">nrr</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="4-tr.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -553,7 +553,7 @@ a given rule appears in, and (within limits) where. A simple example:
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-rpr.html#SP15_1">&#167;15.1</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-dbtr.html">&#10094;</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="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-dlr.html">dlr</a></li><li class="progresssection"><a href="4-pr.html">pr</a></li><li class="progresssection"><a href="4-tr.html">tr</a></li><li class="progresssection"><a href="4-nuor.html">nuor</a></li><li class="progresssection"><a href="4-uor.html">uor</a></li><li class="progresssection"><a href="4-tr2.html">tr2</a></li><li class="progresssection"><a href="4-dbtr.html">dbtr</a></li><li class="progresscurrent">rpr</li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="5-ita.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="4-dbtr.html">&#10094;</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="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-dlr.html">dlr</a></li><li class="progresssection"><a href="4-pr.html">pr</a></li><li class="progresssection"><a href="4-tr.html">tr</a></li><li class="progresssection"><a href="4-nuor.html">nuor</a></li><li class="progresssection"><a href="4-uor.html">uor</a></li><li class="progresssection"><a href="4-tr2.html">tr2</a></li><li class="progresssection"><a href="4-dbtr.html">dbtr</a></li><li class="progresscurrent">rpr</li><li class="progresssection"><a href="4-nar.html">nar</a></li><li class="progresssection"><a href="4-nlpr.html">nlpr</a></li><li class="progresssection"><a href="4-nrr.html">nrr</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="4-nar.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -507,7 +507,7 @@ will be required to pass <span class="extract"><span class="extract-syntax">&lt;
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-tr.html#SP7">&#167;7</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-pr.html">&#10094;</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="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-dlr.html">dlr</a></li><li class="progresssection"><a href="4-pr.html">pr</a></li><li class="progresscurrent">tr</li><li class="progresssection"><a href="4-nuor.html">nuor</a></li><li class="progresssection"><a href="4-uor.html">uor</a></li><li class="progresssection"><a href="4-tr2.html">tr2</a></li><li class="progresssection"><a href="4-dbtr.html">dbtr</a></li><li class="progresssection"><a href="4-rpr.html">rpr</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="4-nuor.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="4-pr.html">&#10094;</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="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-dlr.html">dlr</a></li><li class="progresssection"><a href="4-pr.html">pr</a></li><li class="progresscurrent">tr</li><li class="progresssection"><a href="4-nuor.html">nuor</a></li><li class="progresssection"><a href="4-uor.html">uor</a></li><li class="progresssection"><a href="4-tr2.html">tr2</a></li><li class="progresssection"><a href="4-dbtr.html">dbtr</a></li><li class="progresssection"><a href="4-rpr.html">rpr</a></li><li class="progresssection"><a href="4-nar.html">nar</a></li><li class="progresssection"><a href="4-nlpr.html">nlpr</a></li><li class="progresssection"><a href="4-nrr.html">nrr</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="4-nuor.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -231,7 +231,7 @@ more elaborate:
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-tr2.html#SP3">&#167;3</a> (three times).</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-uor.html">&#10094;</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="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-dlr.html">dlr</a></li><li class="progresssection"><a href="4-pr.html">pr</a></li><li class="progresssection"><a href="4-tr.html">tr</a></li><li class="progresssection"><a href="4-nuor.html">nuor</a></li><li class="progresssection"><a href="4-uor.html">uor</a></li><li class="progresscurrent">tr2</li><li class="progresssection"><a href="4-dbtr.html">dbtr</a></li><li class="progresssection"><a href="4-rpr.html">rpr</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="4-dbtr.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="4-uor.html">&#10094;</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="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-dlr.html">dlr</a></li><li class="progresssection"><a href="4-pr.html">pr</a></li><li class="progresssection"><a href="4-tr.html">tr</a></li><li class="progresssection"><a href="4-nuor.html">nuor</a></li><li class="progresssection"><a href="4-uor.html">uor</a></li><li class="progresscurrent">tr2</li><li class="progresssection"><a href="4-dbtr.html">dbtr</a></li><li class="progresssection"><a href="4-rpr.html">rpr</a></li><li class="progresssection"><a href="4-nar.html">nar</a></li><li class="progresssection"><a href="4-nlpr.html">nlpr</a></li><li class="progresssection"><a href="4-nrr.html">nrr</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="4-dbtr.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -205,7 +205,7 @@ since the compiler next down the chain may no longer be I6.
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-uor.html#SP2_2">&#167;2.2</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-nuor.html">&#10094;</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="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-dlr.html">dlr</a></li><li class="progresssection"><a href="4-pr.html">pr</a></li><li class="progresssection"><a href="4-tr.html">tr</a></li><li class="progresssection"><a href="4-nuor.html">nuor</a></li><li class="progresscurrent">uor</li><li class="progresssection"><a href="4-tr2.html">tr2</a></li><li class="progresssection"><a href="4-dbtr.html">dbtr</a></li><li class="progresssection"><a href="4-rpr.html">rpr</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="4-tr2.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="4-nuor.html">&#10094;</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="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-dlr.html">dlr</a></li><li class="progresssection"><a href="4-pr.html">pr</a></li><li class="progresssection"><a href="4-tr.html">tr</a></li><li class="progresssection"><a href="4-nuor.html">nuor</a></li><li class="progresscurrent">uor</li><li class="progresssection"><a href="4-tr2.html">tr2</a></li><li class="progresssection"><a href="4-dbtr.html">dbtr</a></li><li class="progresssection"><a href="4-rpr.html">rpr</a></li><li class="progresssection"><a href="4-nar.html">nar</a></li><li class="progresssection"><a href="4-nlpr.html">nlpr</a></li><li class="progresssection"><a href="4-nrr.html">nrr</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="4-tr2.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -124,7 +124,7 @@ generalisations which apply to it.
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">generalisation</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure generalisation is accessed in 3/ptmn, 3/cs, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 4/tr2, 4/dbtr, 4/rpr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 20/eq, 21/rl, 21/rl2, 21/fao, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 27/cm and here.</li></ul>
<ul class="endnotetexts"><li>The structure generalisation is accessed in 3/ptmn, 3/cs, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 4/tr2, 4/dbtr, 4/rpr, 4/nar, 4/nlpr, 4/nrr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/imp, 5/pd, 6/lp, 6/ins, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 20/eq, 21/rl, 21/rl2, 21/fao, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 27/cm and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP4"></a><b>&#167;4. </b>For reasons to do with timing, each object needs to keep track of which
generalisations have and have not yet applied to it. In practice, this is
a list of pairs \((K, g)\) where \(K\) is a kind and \(g\) is the most recent one
@ -138,7 +138,7 @@ applied from \(K\)'s list.
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">application</span><span class="plain-syntax"> *</span><span class="identifier-syntax">next</span><span class="plain-syntax">;</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">application</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure application is accessed in 3/ptmn, 3/cs, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 4/tr2, 4/dbtr, 4/rpr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 20/eq, 21/rl, 21/rl2, 21/fao, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 27/cm and here.</li></ul>
<ul class="endnotetexts"><li>The structure application is accessed in 3/ptmn, 3/cs, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 4/tr2, 4/dbtr, 4/rpr, 4/nar, 4/nlpr, 4/nrr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/imp, 5/pd, 6/lp, 6/ins, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 20/eq, 21/rl, 21/rl2, 21/fao, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 27/cm and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP5"></a><b>&#167;5. </b>These structures are combined in the following packet of data attached to
each inference subject:
</p>

View file

@ -250,7 +250,7 @@ That story will be taken up in a later chapter.
</p>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-rpr.html">&#10094;</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="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresschapter"><a href="4-dlr.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresscurrent">ita</li><li class="progresssection"><a href="5-tbath.html">tbath</a></li><li class="progresssection"><a href="5-rpt.html">rpt</a></li><li class="progresssection"><a href="5-tc.html">tc</a></li><li class="progresssection"><a href="5-ma.html">ma</a></li><li class="progresssection"><a href="5-pk.html">pk</a></li><li class="progresssection"><a href="5-rk.html">rk</a></li><li class="progresssection"><a href="5-ass.html">ass</a></li><li class="progresssection"><a href="5-imp.html">imp</a></li><li class="progresssection"><a href="5-pd.html">pd</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="5-tbath.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="4-nrr.html">&#10094;</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="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresschapter"><a href="4-dlr.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresscurrent">ita</li><li class="progresssection"><a href="5-tbath.html">tbath</a></li><li class="progresssection"><a href="5-rpt.html">rpt</a></li><li class="progresssection"><a href="5-tc.html">tc</a></li><li class="progresssection"><a href="5-ma.html">ma</a></li><li class="progresssection"><a href="5-pk.html">pk</a></li><li class="progresssection"><a href="5-rk.html">rk</a></li><li class="progresssection"><a href="5-ass.html">ass</a></li><li class="progresssection"><a href="5-imp.html">imp</a></li><li class="progresssection"><a href="5-pd.html">pd</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="5-tbath.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -1095,7 +1095,7 @@ but not in this context.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">av</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">"failed to extract activity structure"</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">global_pass_state</span><span class="plain-syntax">.</span><span class="element-syntax">pass</span><span class="plain-syntax"> == </span><span class="constant-syntax">2</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">&lt;activity-name-formal&gt;</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">px</span><span class="plain-syntax">)))</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP8" class="function-link"><span class="function-syntax">Activities::add_variable</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">av</span><span class="plain-syntax">, </span><span class="identifier-syntax">py</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">down</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-ac.html#SP6" class="function-link"><span class="function-syntax">Activities::add_variable</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">av</span><span class="plain-syntax">, </span><span class="identifier-syntax">py</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">down</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#SP5" class="function-link"><span class="function-syntax">Problems::Using::assertion_problem</span></a><span class="plain-syntax">(</span><a href="1-wtc.html#SP5" 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_BadActivityRef</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="string-syntax">"an activity has to be formally referred to in a way making clear that "</span>

View file

@ -983,7 +983,7 @@ them by asserting propositions to be true; we act directly.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">activity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">av</span><span class="plain-syntax"> = </span><a href="21-ac.html#SP6" class="function-link"><span class="function-syntax">Activities::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">create_as</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">activity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">av</span><span class="plain-syntax"> = </span><a href="21-ac.html#SP4" class="function-link"><span class="function-syntax">Activities::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">create_as</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">val</span><span class="plain-syntax"> = </span><a href="14-rv.html#SP1" class="function-link"><span class="function-syntax">Rvalues::from_activity</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">av</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::write_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">, </span><span class="constant-syntax">clears_pronouns_ANNOT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
</pre>

View file

@ -127,7 +127,7 @@ evidence turns up to suggest otherwise).
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">instance_usage</span><span class="plain-syntax"> *</span><span class="identifier-syntax">next</span><span class="plain-syntax">;</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">instance_usage</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure instance_usage is accessed in 3/ptmn, 3/cs, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 4/tr2, 4/dbtr, 4/rpr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 20/eq, 21/rl, 21/rl2, 21/fao, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 27/cm and here.</li></ul>
<ul class="endnotetexts"><li>The structure instance_usage is accessed in 3/ptmn, 3/cs, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 4/tr2, 4/dbtr, 4/rpr, 4/nar, 4/nlpr, 4/nrr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 20/eq, 21/rl, 21/rl2, 21/fao, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 27/cm and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP4"></a><b>&#167;4. </b>We record the one most recently made:
</p>
@ -375,7 +375,7 @@ turns up subsequently, e.g., in response to
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">enumeration_index</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="function-syntax">Instances::as_subject</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">Instances::as_subject</span></span>:<br/><a href="6-ins.html#SP33">&#167;33</a><br/>Refine Parse Tree - <a href="5-rpt.html#SP10_5_1">&#167;10.5.1</a>, <a href="5-rpt.html#SP11_1">&#167;11.1</a><br/>The Creator - <a href="5-tc.html#SP5_4">&#167;5.4</a>, <a href="5-tc.html#SP5_4_1_1">&#167;5.4.1.1</a>, <a href="5-tc.html#SP8_4_1">&#167;8.4.1</a><br/>Make Assertions - <a href="5-ma.html#SP5_3_41_5">&#167;5.3.41.5</a><br/>Index Physical World - <a href="6-ipw.html#SP3_7">&#167;3.7</a>, <a href="6-ipw.html#SP3_9">&#167;3.9</a><br/>Adjective Meanings - <a href="7-am.html#SP23">&#167;23</a><br/>Relations - <a href="7-rlt.html#SP26">&#167;26</a><br/>Tree Conversions - <a href="11-tc.html#SP2">&#167;2</a><br/>Assert Propositions - <a href="12-ap.html#SP9_5_2">&#167;9.5.2</a>, <a href="12-ap.html#SP12">&#167;12</a><br/>Dash - <a href="14-ds2.html#SP11_9_1_1_5_1_3">&#167;11.9.1.1.5.1.3</a><br/>Properties - <a href="15-pr.html#SP27">&#167;27</a><br/>Properties of Values - <a href="15-pov.html#SP4">&#167;4</a><br/>Inference Subjects - <a href="16-is.html#SP6">&#167;6</a>, <a href="16-is.html#SP12">&#167;12</a>, <a href="16-is.html#SP17">&#167;17</a><br/>Inferences - <a href="16-in.html#SP19">&#167;19</a><br/>Instance Counting - <a href="16-ic.html#SP8">&#167;8</a>, <a href="16-ic.html#SP12_1">&#167;12.1</a>, <a href="16-ic.html#SP12_3_1">&#167;12.3.1</a>, <a href="16-ic.html#SP12_3_2">&#167;12.3.2</a>, <a href="16-ic.html#SP12_3_3">&#167;12.3.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="function-syntax">Instances::as_subject</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">Instances::as_subject</span></span>:<br/><a href="6-ins.html#SP33">&#167;33</a><br/>Refine Parse Tree - <a href="5-rpt.html#SP10_5_1">&#167;10.5.1</a>, <a href="5-rpt.html#SP11_1">&#167;11.1</a><br/>The Creator - <a href="5-tc.html#SP5_4">&#167;5.4</a>, <a href="5-tc.html#SP5_4_1_1">&#167;5.4.1.1</a>, <a href="5-tc.html#SP8_4_1">&#167;8.4.1</a><br/>Make Assertions - <a href="5-ma.html#SP5_3_41_5">&#167;5.3.41.5</a><br/>Index Physical World - <a href="6-ipw.html#SP3_7">&#167;3.7</a>, <a href="6-ipw.html#SP3_9">&#167;3.9</a><br/>Adjective Meanings - <a href="7-am.html#SP23">&#167;23</a><br/>Relations - <a href="7-rlt.html#SP20">&#167;20</a><br/>Tree Conversions - <a href="11-tc.html#SP2">&#167;2</a><br/>Assert Propositions - <a href="12-ap.html#SP9_5_2">&#167;9.5.2</a>, <a href="12-ap.html#SP12">&#167;12</a><br/>Dash - <a href="14-ds2.html#SP11_9_1_1_5_1_3">&#167;11.9.1.1.5.1.3</a><br/>Properties - <a href="15-pr.html#SP27">&#167;27</a><br/>Properties of Values - <a href="15-pov.html#SP4">&#167;4</a><br/>Inference Subjects - <a href="16-is.html#SP6">&#167;6</a>, <a href="16-is.html#SP12">&#167;12</a>, <a href="16-is.html#SP17">&#167;17</a><br/>Inferences - <a href="16-in.html#SP19">&#167;19</a><br/>Instance Counting - <a href="16-ic.html#SP8">&#167;8</a>, <a href="16-ic.html#SP12_1">&#167;12.1</a>, <a href="16-ic.html#SP12_3_1">&#167;12.3.1</a>, <a href="16-ic.html#SP12_3_2">&#167;12.3.2</a>, <a href="16-ic.html#SP12_3_3">&#167;12.3.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-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">if</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="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">I</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">as_subject</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>

File diff suppressed because it is too large Load diff

View file

@ -494,7 +494,7 @@ numbers", or "all rooms".
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">bp_term_details</span><span class="plain-syntax"> </span><span class="function-syntax">BinaryPredicates::full_new_term</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">BinaryPredicates::full_new_term</span></span>:<br/>Relations - <a href="7-rlt.html#SP9_3_1">&#167;9.3.1</a><br/>The Equality Relation - <a href="12-ter.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</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="reserved-syntax">bp_term_details</span><span class="plain-syntax"> </span><span class="function-syntax">BinaryPredicates::full_new_term</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">BinaryPredicates::full_new_term</span></span>:<br/>Relations - <a href="7-rlt.html#SP4_1_1">&#167;4.1.1</a><br/>The Equality Relation - <a href="12-ter.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</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="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">CW</span><span class="plain-syntax">, </span><span class="reserved-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">bp_term_details</span><span class="plain-syntax"> </span><span class="identifier-syntax">bptd</span><span class="plain-syntax"> = </span><a href="7-bp.html#SP18" class="function-link"><span class="function-syntax">BinaryPredicates::new_term</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">bptd</span><span class="plain-syntax">.</span><span class="element-syntax">implies_kind</span><span class="plain-syntax"> = </span><span class="identifier-syntax">K</span><span class="plain-syntax">;</span>
@ -518,12 +518,12 @@ so that we must fill them in later, using the following:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">BinaryPredicates::set_term_function</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">BinaryPredicates::set_term_function</span></span>:<br/>Relations - <a href="7-rlt.html#SP9">&#167;9</a>, <a href="7-rlt.html#SP9_14">&#167;9.14</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">bp_term_details</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bptd</span><span class="plain-syntax">, </span><span class="reserved-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">BinaryPredicates::set_term_function</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">BinaryPredicates::set_term_function</span></span>:<br/>Relations - <a href="7-rlt.html#SP4">&#167;4</a>, <a href="7-rlt.html#SP4_12">&#167;4.12</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">bp_term_details</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bptd</span><span class="plain-syntax">, </span><span class="reserved-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</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">bptd</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 BPTD"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">bptd</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">function_of_other</span><span class="plain-syntax"> = </span><span class="identifier-syntax">f</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::get_term_function</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">BinaryPredicates::get_term_function</span></span>:<br/>Relations - <a href="7-rlt.html#SP9">&#167;9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">bp_term_details</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bptd</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::get_term_function</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">BinaryPredicates::get_term_function</span></span>:<br/>Relations - <a href="7-rlt.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">bp_term_details</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bptd</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">bptd</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 BPTD"</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">bptd</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">function_of_other</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -532,7 +532,7 @@ so that we must fill them in later, using the following:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::kind</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">BinaryPredicates::kind</span></span>:<br/>Relations - <a href="7-rlt.html#SP15">&#167;15</a>, <a href="7-rlt.html#SP15_1">&#167;15.1</a>, <a href="7-rlt.html#SP15_1_4">&#167;15.1.4</a><br/>RValues - <a href="14-rv.html#SP23_2">&#167;23.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::kind</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">BinaryPredicates::kind</span></span>:<br/>Relations - <a href="7-rlt.html#SP9">&#167;9</a>, <a href="7-rlt.html#SP9_1">&#167;9.1</a>, <a href="7-rlt.html#SP9_1_4">&#167;9.1.4</a><br/>RValues - <a href="14-rv.html#SP23_2">&#167;23.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</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">bp</span><span class="plain-syntax"> == </span><span class="identifier-syntax">R_equality</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Kinds::binary_construction</span><span class="plain-syntax">(</span><span class="identifier-syntax">CON_relation</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_value</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">K0</span><span class="plain-syntax"> = </span><a href="7-bp.html#SP23" class="function-link"><span class="function-syntax">BinaryPredicates::kind_of_term</span></a><span class="plain-syntax">(&amp;(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">term_details</span><span class="plain-syntax">[0]));</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><a href="7-bp.html#SP23" class="function-link"><span class="function-syntax">BinaryPredicates::kind_of_term</span></a><span class="plain-syntax">(&amp;(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">term_details</span><span class="plain-syntax">[1]));</span>
@ -555,7 +555,7 @@ so that we must fill them in later, using the following:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">BinaryPredicates::index_term_details</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">BinaryPredicates::index_term_details</span></span>:<br/>Relations - <a href="7-rlt.html#SP31">&#167;31</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">bp_term_details</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bptd</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">BinaryPredicates::index_term_details</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">BinaryPredicates::index_term_details</span></span>:<br/>Relations - <a href="7-rlt.html#SP25">&#167;25</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">bp_term_details</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bptd</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">bptd</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">index_term_as</span><span class="plain-syntax">) { </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%s"</span><span class="plain-syntax">, </span><span class="identifier-syntax">bptd</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">index_term_as</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">EMPTY_WORDING</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">bptd</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">implies_infs</span><span class="plain-syntax">) </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><a href="16-is.html#SP24" class="function-link"><span class="function-syntax">InferenceSubjects::get_name_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bptd</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">implies_infs</span><span class="plain-syntax">);</span>
@ -569,7 +569,7 @@ matches the specific necessary kind of object if there is one.
</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">BinaryPredicates::add_term_as_call_parameter</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">BinaryPredicates::add_term_as_call_parameter</span></span>:<br/>Relations - <a href="7-rlt.html#SP30">&#167;30</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_stack_frame</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phsf</span><span class="plain-syntax">, </span><span class="reserved-syntax">bp_term_details</span><span class="plain-syntax"> </span><span class="identifier-syntax">bptd</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">BinaryPredicates::add_term_as_call_parameter</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">BinaryPredicates::add_term_as_call_parameter</span></span>:<br/>Relations - <a href="7-rlt.html#SP24">&#167;24</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_stack_frame</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phsf</span><span class="plain-syntax">, </span><span class="reserved-syntax">bp_term_details</span><span class="plain-syntax"> </span><span class="identifier-syntax">bptd</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><a href="7-bp.html#SP23" class="function-link"><span class="function-syntax">BinaryPredicates::kind_of_term</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">bptd</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">PK</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">PK</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">Kinds::Compare::lt</span><span class="plain-syntax">(</span><span class="identifier-syntax">PK</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">))) </span><span class="identifier-syntax">PK</span><span class="plain-syntax"> = </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">;</span>
@ -688,7 +688,7 @@ made:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::make_pair_sketchily</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">BinaryPredicates::make_pair_sketchily</span></span>:<br/>Relations - <a href="7-rlt.html#SP8">&#167;8</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">word_assemblage</span><span class="plain-syntax"> </span><span class="identifier-syntax">wa</span><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">binary_predicate</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::make_pair_sketchily</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">BinaryPredicates::make_pair_sketchily</span></span>:<br/>New Relation Requests - <a href="4-nrr.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">word_assemblage</span><span class="plain-syntax"> </span><span class="identifier-syntax">wa</span><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">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">relname</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">relname</span><span class="plain-syntax">, </span><span class="string-syntax">"%V"</span><span class="plain-syntax">, </span><span class="identifier-syntax">WordAssemblages::first_word</span><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">wa</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax"> =</span>
@ -773,7 +773,7 @@ would always be <span class="extract"><span class="extract-syntax">NULL</span></
<p class="commentary firstcommentary"><a id="SP31"></a><b>&#167;31. The package. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::package</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">BinaryPredicates::package</span></span>:<br/><a href="7-bp.html#SP32">&#167;32</a>, <a href="7-bp.html#SP42">&#167;42</a><br/>Relations - <a href="7-rlt.html#SP9">&#167;9</a>, <a href="7-rlt.html#SP9_13">&#167;9.13</a>, <a href="7-rlt.html#SP20">&#167;20</a>, <a href="7-rlt.html#SP20_3">&#167;20.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::package</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">BinaryPredicates::package</span></span>:<br/><a href="7-bp.html#SP32">&#167;32</a>, <a href="7-bp.html#SP42">&#167;42</a><br/>Relations - <a href="7-rlt.html#SP4">&#167;4</a>, <a href="7-rlt.html#SP4_11">&#167;4.11</a>, <a href="7-rlt.html#SP14">&#167;14</a>, <a href="7-rlt.html#SP14_3">&#167;14.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</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">bp</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">"null bp"</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">bp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">bp_package</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">bp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">bp_package</span><span class="plain-syntax"> = </span><a href="27-hr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::package</span></a><span class="plain-syntax">(</span><a href="27-cm.html#SP5" class="function-link"><span class="function-syntax">CompilationUnits::find</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">bp_created_at</span><span class="plain-syntax">), </span><span class="constant-syntax">RELATIONS_HAP</span><span class="plain-syntax">);</span>
@ -783,7 +783,7 @@ would always be <span class="extract"><span class="extract-syntax">NULL</span></
<p class="commentary firstcommentary"><a id="SP32"></a><b>&#167;32. The handler. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::handler_iname</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">BinaryPredicates::handler_iname</span></span>:<br/>Relations - <a href="7-rlt.html#SP15_2">&#167;15.2</a>, <a href="7-rlt.html#SP15_2_9_1">&#167;15.2.9.1</a>, <a href="7-rlt.html#SP15_2_10_1">&#167;15.2.10.1</a>, <a href="7-rlt.html#SP15_2_12_1">&#167;15.2.12.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::handler_iname</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">BinaryPredicates::handler_iname</span></span>:<br/>Relations - <a href="7-rlt.html#SP9_2">&#167;9.2</a>, <a href="7-rlt.html#SP9_2_9_1">&#167;9.2.9.1</a>, <a href="7-rlt.html#SP9_2_10_1">&#167;9.2.10.1</a>, <a href="7-rlt.html#SP9_2_12_1">&#167;9.2.12.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</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">bp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">handler_iname</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">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax"> = </span><a href="7-bp.html#SP31" class="function-link"><span class="function-syntax">BinaryPredicates::package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">handler_iname</span><span class="plain-syntax"> = </span><a href="27-hr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">HANDLER_FN_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">R</span><span class="plain-syntax">);</span>
@ -812,15 +812,15 @@ would always be <span class="extract"><span class="extract-syntax">NULL</span></
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="7-bp.html#SP41" class="function-link"><span class="function-syntax">BinaryPredicates::store_dynamically</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax">; </span><span class="comment-syntax"> handled at run-time instead</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="7-bp.html#SP37" class="function-link"><span class="function-syntax">BinaryPredicates::get_form_of_relation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">) == </span><span class="constant-syntax">Relation_Equiv</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">bp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">right_way_round</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><a href="7-rlt.html#SP24" class="function-link"><span class="function-syntax">Relations::equivalence_relation_make_singleton_partitions</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="identifier-syntax">domain_size</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="7-rlt.html#SP18" class="function-link"><span class="function-syntax">Relations::equivalence_relation_make_singleton_partitions</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="identifier-syntax">domain_size</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</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">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><a href="7-bp.html#SP41" class="function-link"><span class="function-syntax">BinaryPredicates::as_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">), </span><span class="constant-syntax">ARBITRARY_RELATION_INF</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs0</span><span class="plain-syntax">, *</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="16-in.html#SP12" class="function-link"><span class="function-syntax">World::Inferences::get_references</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">infs0</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="7-rlt.html#SP25" class="function-link"><span class="function-syntax">Relations::equivalence_relation_merge_classes</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="identifier-syntax">domain_size</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="7-rlt.html#SP19" class="function-link"><span class="function-syntax">Relations::equivalence_relation_merge_classes</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="identifier-syntax">domain_size</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">infs0</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs1</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><a href="7-rlt.html#SP26" class="function-link"><span class="function-syntax">Relations::equivalence_relation_add_properties</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="7-rlt.html#SP20" class="function-link"><span class="function-syntax">Relations::equivalence_relation_add_properties</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>
@ -829,11 +829,11 @@ would always be <span class="extract"><span class="extract-syntax">NULL</span></
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">bp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">right_way_round</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> ((</span><span class="identifier-syntax">bp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">form_of_relation</span><span class="plain-syntax"> == </span><span class="constant-syntax">Relation_OtoO</span><span class="plain-syntax">) ||</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">bp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">form_of_relation</span><span class="plain-syntax"> == </span><span class="constant-syntax">Relation_Sym_OtoO</span><span class="plain-syntax">)))</span>
<span class="plain-syntax"> </span><a href="7-rlt.html#SP28" class="function-link"><span class="function-syntax">Relations::check_OtoO_relation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="7-rlt.html#SP22" class="function-link"><span class="function-syntax">Relations::check_OtoO_relation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</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">bp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">right_way_round</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> ((</span><span class="identifier-syntax">bp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">form_of_relation</span><span class="plain-syntax"> == </span><span class="constant-syntax">Relation_OtoV</span><span class="plain-syntax">) ||</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">bp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">form_of_relation</span><span class="plain-syntax"> == </span><span class="constant-syntax">Relation_VtoO</span><span class="plain-syntax">)))</span>
<span class="plain-syntax"> </span><a href="7-rlt.html#SP28" class="function-link"><span class="function-syntax">Relations::check_OtoV_relation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="7-rlt.html#SP22" class="function-link"><span class="function-syntax">Relations::check_OtoV_relation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</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">BinaryPredicates::SUBJ_emit_element_of_condition</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">BinaryPredicates::SUBJ_emit_element_of_condition</span></span>:<br/>Inference Subjects - <a href="16-is.html#SP29">&#167;29</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">t0_s</span><span class="plain-syntax">) {</span>
@ -868,7 +868,7 @@ would always be <span class="extract"><span class="extract-syntax">NULL</span></
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">bp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">form_of_relation</span><span class="plain-syntax"> == </span><span class="constant-syntax">Relation_VtoV</span><span class="plain-syntax">) ||</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">bp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">form_of_relation</span><span class="plain-syntax"> == </span><span class="constant-syntax">Relation_Sym_VtoV</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><a href="7-rlt.html#SP20" class="function-link"><span class="function-syntax">Relations::compile_vtov_storage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="7-rlt.html#SP14" class="function-link"><span class="function-syntax">Relations::compile_vtov_storage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>
@ -918,7 +918,7 @@ so the fact that it runs relatively slowly does not matter.
<p class="commentary firstcommentary"><a id="SP36"></a><b>&#167;36. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::get_log_name</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">BinaryPredicates::get_log_name</span></span>:<br/>Relations - <a href="7-rlt.html#SP15_1_5">&#167;15.1.5</a>, <a href="7-rlt.html#SP29">&#167;29</a><br/>Atomic Propositions - <a href="11-ap.html#SP25_2">&#167;25.2</a><br/>Inference Subjects - <a href="16-is.html#SP22">&#167;22</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::get_log_name</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">BinaryPredicates::get_log_name</span></span>:<br/>Relations - <a href="7-rlt.html#SP9_1_5">&#167;9.1.5</a>, <a href="7-rlt.html#SP23">&#167;23</a><br/>Atomic Propositions - <a href="11-ap.html#SP25_2">&#167;25.2</a><br/>Inference Subjects - <a href="16-is.html#SP22">&#167;22</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</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">bp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">debugging_log_name</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
@ -957,11 +957,11 @@ so the fact that it runs relatively slowly does not matter.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::term_kind</span><button class="popup" onclick="togglePopup('usagePopup30')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup30">Usage of <span class="code-font"><span class="function-syntax">BinaryPredicates::term_kind</span></span>:<br/><a href="7-bp.html#SP47">&#167;47</a><br/>The Creator - <a href="5-tc.html#SP1_2_2">&#167;1.2.2</a><br/>Relations - <a href="7-rlt.html#SP15_2_9_1">&#167;15.2.9.1</a>, <a href="7-rlt.html#SP15_2_10_1">&#167;15.2.10.1</a>, <a href="7-rlt.html#SP15_2_12_1">&#167;15.2.12.1</a>, <a href="7-rlt.html#SP20_2">&#167;20.2</a>, <a href="7-rlt.html#SP20_3">&#167;20.3</a>, <a href="7-rlt.html#SP20_4">&#167;20.4</a>, <a href="7-rlt.html#SP26">&#167;26</a><br/>Sentence Conversions - <a href="11-sc.html#SP1_8">&#167;1.8</a><br/>Simplifications - <a href="11-sm.html#SP3_2">&#167;3.2</a>, <a href="11-sm.html#SP8">&#167;8</a>, <a href="11-sm.html#SP15">&#167;15</a><br/>Type Check Propositions - <a href="11-tcp.html#SP9">&#167;9</a>, <a href="11-tcp.html#SP11_1">&#167;11.1</a><br/>Assert Propositions - <a href="12-ap.html#SP9_11">&#167;9.11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</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">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::term_kind</span><button class="popup" onclick="togglePopup('usagePopup30')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup30">Usage of <span class="code-font"><span class="function-syntax">BinaryPredicates::term_kind</span></span>:<br/><a href="7-bp.html#SP47">&#167;47</a><br/>The Creator - <a href="5-tc.html#SP1_2_2">&#167;1.2.2</a><br/>Relations - <a href="7-rlt.html#SP9_2_9_1">&#167;9.2.9.1</a>, <a href="7-rlt.html#SP9_2_10_1">&#167;9.2.10.1</a>, <a href="7-rlt.html#SP9_2_12_1">&#167;9.2.12.1</a>, <a href="7-rlt.html#SP14_2">&#167;14.2</a>, <a href="7-rlt.html#SP14_3">&#167;14.3</a>, <a href="7-rlt.html#SP14_4">&#167;14.4</a>, <a href="7-rlt.html#SP20">&#167;20</a><br/>Sentence Conversions - <a href="11-sc.html#SP1_8">&#167;1.8</a><br/>Simplifications - <a href="11-sm.html#SP3_2">&#167;3.2</a>, <a href="11-sm.html#SP8">&#167;8</a>, <a href="11-sm.html#SP15">&#167;15</a><br/>Type Check Propositions - <a href="11-tcp.html#SP9">&#167;9</a>, <a href="11-tcp.html#SP11_1">&#167;11.1</a><br/>Assert Propositions - <a href="12-ap.html#SP9_11">&#167;9.11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</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="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">bp</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">"tried to find kind of null relation"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="7-bp.html#SP23" class="function-link"><span class="function-syntax">BinaryPredicates::kind_of_term</span></a><span class="plain-syntax">(&amp;(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">term_details</span><span class="plain-syntax">[</span><span class="identifier-syntax">t</span><span class="plain-syntax">]));</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::get_term_as_function_of_other</span><button class="popup" onclick="togglePopup('usagePopup31')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup31">Usage of <span class="code-font"><span class="function-syntax">BinaryPredicates::get_term_as_function_of_other</span></span>:<br/>Relations - <a href="7-rlt.html#SP15_2_4">&#167;15.2.4</a><br/>Terms - <a href="11-tr.html#SP10">&#167;10</a>, <a href="11-tr.html#SP11">&#167;11</a><br/>Simplifications - <a href="11-sm.html#SP13">&#167;13</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</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="reserved-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::get_term_as_function_of_other</span><button class="popup" onclick="togglePopup('usagePopup31')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup31">Usage of <span class="code-font"><span class="function-syntax">BinaryPredicates::get_term_as_function_of_other</span></span>:<br/>Relations - <a href="7-rlt.html#SP9_2_4">&#167;9.2.4</a><br/>Terms - <a href="11-tr.html#SP10">&#167;10</a>, <a href="11-tr.html#SP11">&#167;11</a><br/>Simplifications - <a href="11-sm.html#SP13">&#167;13</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</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="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">bp</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">"tried to find function of null relation"</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">bp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">term_details</span><span class="plain-syntax">[</span><span class="identifier-syntax">t</span><span class="plain-syntax">].</span><span class="element-syntax">function_of_other</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -986,7 +986,7 @@ so the fact that it runs relatively slowly does not matter.
<span class="reserved-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::get_test_function</span><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</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">bp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">test_function</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">BinaryPredicates::can_be_made_true_at_runtime</span><button class="popup" onclick="togglePopup('usagePopup34')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup34">Usage of <span class="code-font"><span class="function-syntax">BinaryPredicates::can_be_made_true_at_runtime</span></span>:<br/>Relations - <a href="7-rlt.html#SP15_1_2">&#167;15.1.2</a>, <a href="7-rlt.html#SP15_2">&#167;15.2</a><br/>Explicit Relations - <a href="7-er.html#SP3_1">&#167;3.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">BinaryPredicates::can_be_made_true_at_runtime</span><button class="popup" onclick="togglePopup('usagePopup34')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup34">Usage of <span class="code-font"><span class="function-syntax">BinaryPredicates::can_be_made_true_at_runtime</span></span>:<br/>Relations - <a href="7-rlt.html#SP9_1_2">&#167;9.1.2</a>, <a href="7-rlt.html#SP9_2">&#167;9.2</a><br/>Explicit Relations - <a href="7-er.html#SP3_1">&#167;3.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</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">bp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">make_true_function</span><span class="plain-syntax">) ||</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">bp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">reversal</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">make_true_function</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
@ -1010,7 +1010,7 @@ relation itself.)
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">BinaryPredicates::relates_values_not_objects</span><button class="popup" onclick="togglePopup('usagePopup37')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup37">Usage of <span class="code-font"><span class="function-syntax">BinaryPredicates::relates_values_not_objects</span></span>:<br/>Make Assertions - <a href="5-ma.html#SP5_3_34_4">&#167;5.3.34.4</a><br/>Relation Knowledge - <a href="5-rk.html#SP3_2">&#167;3.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</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">bp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">relates_values_not_objects</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::as_subject</span><button class="popup" onclick="togglePopup('usagePopup38')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup38">Usage of <span class="code-font"><span class="function-syntax">BinaryPredicates::as_subject</span></span>:<br/><a href="7-bp.html#SP33">&#167;33</a><br/>Relations - <a href="7-rlt.html#SP20_5_1">&#167;20.5.1</a>, <a href="7-rlt.html#SP28">&#167;28</a><br/>Inferences - <a href="16-in.html#SP9">&#167;9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::as_subject</span><button class="popup" onclick="togglePopup('usagePopup38')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup38">Usage of <span class="code-font"><span class="function-syntax">BinaryPredicates::as_subject</span></span>:<br/><a href="7-bp.html#SP33">&#167;33</a><br/>Relations - <a href="7-rlt.html#SP14_5_1">&#167;14.5.1</a>, <a href="7-rlt.html#SP22">&#167;22</a><br/>Inferences - <a href="16-in.html#SP9">&#167;9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</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">bp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">knowledge_about_bp</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
@ -1018,14 +1018,14 @@ relation itself.)
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::get_i6_storage_property</span><button class="popup" onclick="togglePopup('usagePopup39')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup39">Usage of <span class="code-font"><span class="function-syntax">BinaryPredicates::get_i6_storage_property</span></span>:<br/>Relations - <a href="7-rlt.html#SP28">&#167;28</a><br/>Explicit Relations - <a href="7-er.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::get_i6_storage_property</span><button class="popup" onclick="togglePopup('usagePopup39')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup39">Usage of <span class="code-font"><span class="function-syntax">BinaryPredicates::get_i6_storage_property</span></span>:<br/>Relations - <a href="7-rlt.html#SP22">&#167;22</a><br/>Explicit Relations - <a href="7-er.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</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">bp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">i6_storage_property</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">BinaryPredicates::allows_function_simplification</span><button class="popup" onclick="togglePopup('usagePopup40')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup40">Usage of <span class="code-font"><span class="function-syntax">BinaryPredicates::allows_function_simplification</span></span>:<br/>Simplifications - <a href="11-sm.html#SP13">&#167;13</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</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">bp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">allow_function_simplification</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">default_rr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">BinaryPredicates::mark_as_needed</span><button class="popup" onclick="togglePopup('usagePopup41')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup41">Usage of <span class="code-font"><span class="function-syntax">BinaryPredicates::mark_as_needed</span></span>:<br/><a href="7-bp.html#SP33">&#167;33</a><br/>Relations - <a href="7-rlt.html#SP9">&#167;9</a>, <a href="7-rlt.html#SP9_9">&#167;9.9</a>, <a href="7-rlt.html#SP9_11">&#167;9.11</a><br/>New Verbs - <a href="7-nv.html#SP17_1">&#167;17.1</a>, <a href="7-nv.html#SP17_2">&#167;17.2</a><br/>RValues - <a href="14-rv.html#SP24_3">&#167;24.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">BinaryPredicates::mark_as_needed</span><button class="popup" onclick="togglePopup('usagePopup41')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup41">Usage of <span class="code-font"><span class="function-syntax">BinaryPredicates::mark_as_needed</span></span>:<br/><a href="7-bp.html#SP33">&#167;33</a><br/>Relations - <a href="7-rlt.html#SP4">&#167;4</a>, <a href="7-rlt.html#SP4_7">&#167;4.7</a>, <a href="7-rlt.html#SP4_9">&#167;4.9</a><br/>New Verbs - <a href="7-nv.html#SP17_1">&#167;17.1</a>, <a href="7-nv.html#SP17_2">&#167;17.2</a><br/>RValues - <a href="14-rv.html#SP24_3">&#167;24.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</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">bp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">record_needed</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">bp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">bp_iname</span><span class="plain-syntax"> = </span><a href="27-hr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">RELATION_RECORD_HL</span><span class="plain-syntax">, </span><a href="7-bp.html#SP31" class="function-link"><span class="function-syntax">BinaryPredicates::package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</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">default_rr</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
@ -1038,7 +1038,7 @@ relation itself.)
<span class="plain-syntax"> </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">record_needed</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</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="function-syntax">BinaryPredicates::iname</span><button class="popup" onclick="togglePopup('usagePopup42')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup42">Usage of <span class="code-font"><span class="function-syntax">BinaryPredicates::iname</span></span>:<br/>Relations - <a href="7-rlt.html#SP9_9">&#167;9.9</a>, <a href="7-rlt.html#SP9_11">&#167;9.11</a>, <a href="7-rlt.html#SP9_15">&#167;9.15</a>, <a href="7-rlt.html#SP15">&#167;15</a>, <a href="7-rlt.html#SP15_1">&#167;15.1</a>, <a href="7-rlt.html#SP15_2_1">&#167;15.2.1</a>, <a href="7-rlt.html#SP17">&#167;17</a><br/>RValues - <a href="14-rv.html#SP24_3">&#167;24.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::iname</span><button class="popup" onclick="togglePopup('usagePopup42')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup42">Usage of <span class="code-font"><span class="function-syntax">BinaryPredicates::iname</span></span>:<br/>Relations - <a href="7-rlt.html#SP4_7">&#167;4.7</a>, <a href="7-rlt.html#SP4_9">&#167;4.9</a>, <a href="7-rlt.html#SP4_13">&#167;4.13</a>, <a href="7-rlt.html#SP9">&#167;9</a>, <a href="7-rlt.html#SP9_1">&#167;9.1</a>, <a href="7-rlt.html#SP9_2_1">&#167;9.2.1</a>, <a href="7-rlt.html#SP11">&#167;11</a><br/>RValues - <a href="14-rv.html#SP24_3">&#167;24.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</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">bp</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">bp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">bp_iname</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -1213,7 +1213,7 @@ above. This happens very early in compilation.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">success</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::get_i6_schema</span><button class="popup" onclick="togglePopup('usagePopup49')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup49">Usage of <span class="code-font"><span class="function-syntax">BinaryPredicates::get_i6_schema</span></span>:<br/>Relations - <a href="7-rlt.html#SP15_2_2">&#167;15.2.2</a>, <a href="7-rlt.html#SP15_2_3">&#167;15.2.3</a>, <a href="7-rlt.html#SP15_2_4">&#167;15.2.4</a><br/>Compile Atoms - <a href="12-ca.html#SP6_7">&#167;6.7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">task</span><span class="plain-syntax">, </span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="reserved-syntax">annotated_i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">asch</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::get_i6_schema</span><button class="popup" onclick="togglePopup('usagePopup49')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup49">Usage of <span class="code-font"><span class="function-syntax">BinaryPredicates::get_i6_schema</span></span>:<br/>Relations - <a href="7-rlt.html#SP9_2_2">&#167;9.2.2</a>, <a href="7-rlt.html#SP9_2_3">&#167;9.2.3</a>, <a href="7-rlt.html#SP9_2_4">&#167;9.2.4</a><br/>Compile Atoms - <a href="12-ca.html#SP6_7">&#167;6.7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">task</span><span class="plain-syntax">, </span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="reserved-syntax">annotated_i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">asch</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">success</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">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">bp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">relation_family</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">EQUALITY_KBP:</span><span class="plain-syntax"> </span><span class="identifier-syntax">success</span><span class="plain-syntax"> = </span><a href="12-ter.html#SP8" class="function-link"><span class="function-syntax">Calculus::Equality::REL_compile</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">task</span><span class="plain-syntax">, </span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="identifier-syntax">asch</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>

View file

@ -1323,7 +1323,7 @@ usages to the debugging log.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">vu</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">where_vu_created</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Index::link</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</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">vu</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">where_vu_created</span><span class="plain-syntax">)));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax"> = </span><span class="identifier-syntax">VerbMeanings::get_regular_meaning_of_form</span><span class="plain-syntax">(</span><span class="identifier-syntax">Verbs::base_form</span><span class="plain-syntax">(</span><span class="identifier-syntax">VerbUsages::get_verb</span><span class="plain-syntax">(</span><span class="identifier-syntax">vu</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">bp</span><span class="plain-syntax">) </span><a href="7-rlt.html#SP32" class="function-link"><span class="function-syntax">Relations::index_for_verbs</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">bp</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">bp</span><span class="plain-syntax">) </span><a href="7-rlt.html#SP26" class="function-link"><span class="function-syntax">Relations::index_for_verbs</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">bp</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">preposition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prep</span><span class="plain-syntax">;</span>
@ -1332,7 +1332,7 @@ usages to the debugging log.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">prep</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">where_prep_created</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Index::link</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</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">prep</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">where_prep_created</span><span class="plain-syntax">)));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax"> = </span><span class="identifier-syntax">VerbMeanings::get_regular_meaning_of_form</span><span class="plain-syntax">(</span><span class="identifier-syntax">Verbs::find_form</span><span class="plain-syntax">(</span><span class="identifier-syntax">copular_verb</span><span class="plain-syntax">, </span><span class="identifier-syntax">prep</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">bp</span><span class="plain-syntax">) </span><a href="7-rlt.html#SP32" class="function-link"><span class="function-syntax">Relations::index_for_verbs</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">bp</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">bp</span><span class="plain-syntax">) </span><a href="7-rlt.html#SP26" class="function-link"><span class="function-syntax">Relations::index_for_verbs</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">bp</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>

File diff suppressed because it is too large Load diff

View file

@ -543,7 +543,7 @@ surreptitiously check that it is correctly formed at the same time.
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>
</pre>
<ul class="endnotetexts"><li>The structure contents_entry is accessed in 3/ptmn, 3/cs, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 4/tr2, 4/dbtr, 4/rpr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 20/eq, 21/rl, 21/rl2, 21/fao, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 27/cm and here.</li></ul>
<ul class="endnotetexts"><li>The structure contents_entry is accessed in 3/ptmn, 3/cs, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 4/tr2, 4/dbtr, 4/rpr, 4/nar, 4/nlpr, 4/nrr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 20/eq, 21/rl, 21/rl2, 21/fao, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 27/cm and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP15_1"></a><b>&#167;15.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Index this entry in the contents</span><span class="named-paragraph-number">15.1</span></span><span class="comment-syntax"> =</span>
</p>

View file

@ -103,7 +103,7 @@ on childless nodes, it cannot ever act on the same node twice.
</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">RuleSubtrees::register_recently_lexed_phrases</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">RuleSubtrees::register_recently_lexed_phrases</span></span>:<br/>Literal Patterns - <a href="6-lp.html#SP40">&#167;40</a>, <a href="6-lp.html#SP41">&#167;41</a><br/>Measurement Adjectives - <a href="15-ma.html#SP11_4">&#167;11.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RuleSubtrees::register_recently_lexed_phrases</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">RuleSubtrees::register_recently_lexed_phrases</span></span>:<br/>Literal Patterns - <a href="6-lp.html#SP34">&#167;34</a>, <a href="6-lp.html#SP35">&#167;35</a><br/>Measurement Adjectives - <a href="15-ma.html#SP11_4">&#167;11.4</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">problem_count</span><span class="plain-syntax"> &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">; </span><span class="comment-syntax"> for then the tree is perhaps broken anyway</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SyntaxTree::traverse</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP5" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><a href="8-rs.html#SP4" class="function-link"><span class="function-syntax">RuleSubtrees::demote_command_nodes</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SyntaxTree::traverse</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP5" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><a href="8-rs.html#SP5" class="function-link"><span class="function-syntax">RuleSubtrees::detect_loose_command_nodes</span></a><span class="plain-syntax">);</span>

View file

@ -208,6 +208,21 @@
<spon class="sectiontitle">Rule Placement Requests</span></a> -
<span class="sectionpurpose">Special sentences for listing named rules in particular rulebooks.</span></p>
</li>
<li>
<p class="sectionentry"><a href="4-nar.html">
<spon class="sectiontitle">New Activity Requests</span></a> -
<span class="sectionpurpose">Special sentences creating new activities.</span></p>
</li>
<li>
<p class="sectionentry"><a href="4-nlpr.html">
<spon class="sectiontitle">New Literal Pattern Requests</span></a> -
<span class="sectionpurpose">Special sentences creating new notations for literal values.</span></p>
</li>
<li>
<p class="sectionentry"><a href="4-nrr.html">
<spon class="sectiontitle">New Relation Requests</span></a> -
<span class="sectionpurpose">Special sentences for creating new relations.</span></p>
</li>
</ul>
</li>
<li>

View file

@ -138,10 +138,6 @@ We can't know the values of <span class="extract"><span class="extract-syntax">M
defined.
</p>
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">LP_SCALED_UP</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">LP_SCALED_DOWN</span><span class="plain-syntax"> -1</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">LP_SCALED_AT</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">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">scaling_transformation</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">use_integer_scaling</span><span class="plain-syntax">; </span><span class="comment-syntax"> or if not, use real</span>
@ -248,10 +244,10 @@ some existing notation, in which case the <span class="extract"><span class="ext
<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">sc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">int_scalar</span><span class="plain-syntax"> != </span><span class="constant-syntax">1</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">sc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">real_scalar</span><span class="plain-syntax"> != </span><span class="constant-syntax">1</span><span class="plain-syntax">.0)) &amp;&amp;</span>
<span class="plain-syntax"> ((</span><span class="identifier-syntax">sc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">scaling_mode</span><span class="plain-syntax"> == </span><span class="constant-syntax">LP_SCALED_UP</span><span class="plain-syntax">) ||</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">sc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">scaling_mode</span><span class="plain-syntax"> == </span><span class="constant-syntax">LP_SCALED_DOWN</span><span class="plain-syntax">) ||</span>
<span class="plain-syntax"> ((</span><span class="identifier-syntax">sc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">scaling_mode</span><span class="plain-syntax"> == </span><span class="identifier-syntax">LP_SCALED_UP</span><span class="plain-syntax">) ||</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">sc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">scaling_mode</span><span class="plain-syntax"> == </span><span class="identifier-syntax">LP_SCALED_DOWN</span><span class="plain-syntax">) ||</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">equiv</span><span class="plain-syntax">) ||</span>
<span class="plain-syntax"> ((</span><span class="identifier-syntax">sc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">scaling_mode</span><span class="plain-syntax"> == </span><span class="constant-syntax">LP_SCALED_AT</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">sc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">use_integer_scaling</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">sc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">scaling_mode</span><span class="plain-syntax"> == </span><span class="identifier-syntax">LP_SCALED_AT</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">sc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">use_integer_scaling</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">))))</span>
<span class="plain-syntax"> </span><a href="2-knd.html#SP38" class="function-link"><span class="function-syntax">Kinds::problem_handler</span></a><span class="plain-syntax">(</span><span class="constant-syntax">LPCantScaleYet_KINDERROR</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">sc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">int_M</span><span class="plain-syntax"> = </span><span class="identifier-syntax">sc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">int_scalar</span><span class="plain-syntax">;</span>
</pre>
@ -267,7 +263,7 @@ scalings (metric units such as mm, km, etc.) already have their <span class="ext
<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">sc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">int_scalar</span><span class="plain-syntax"> != </span><span class="constant-syntax">1</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">sc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">real_scalar</span><span class="plain-syntax"> != </span><span class="constant-syntax">1</span><span class="plain-syntax">.0)) &amp;&amp;</span>
<span class="plain-syntax"> ((</span><span class="identifier-syntax">alt</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">sc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">scaling_mode</span><span class="plain-syntax"> == </span><span class="constant-syntax">LP_SCALED_AT</span><span class="plain-syntax">)))</span>
<span class="plain-syntax"> ((</span><span class="identifier-syntax">alt</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">sc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">scaling_mode</span><span class="plain-syntax"> == </span><span class="identifier-syntax">LP_SCALED_AT</span><span class="plain-syntax">)))</span>
<span class="plain-syntax"> </span><a href="2-knd.html#SP38" class="function-link"><span class="function-syntax">Kinds::problem_handler</span></a><span class="plain-syntax">(</span><span class="constant-syntax">LPCantScaleTwice_KINDERROR</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">equiv</span><span class="plain-syntax">)</span>
@ -339,7 +335,7 @@ That means that the new value of <span class="extract"><span class="extract-synt
<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">benchmark_sc</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 benchmark for comparison"</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">sc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">scaling_mode</span><span class="plain-syntax"> == </span><span class="constant-syntax">LP_SCALED_DOWN</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">sc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">scaling_mode</span><span class="plain-syntax"> == </span><span class="identifier-syntax">LP_SCALED_DOWN</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">sc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">use_integer_scaling</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">B</span><span class="plain-syntax"> = </span><span class="identifier-syntax">benchmark_sc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">int_M</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">k</span><span class="plain-syntax"> = </span><span class="identifier-syntax">sc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">int_scalar</span><span class="plain-syntax">;</span>
@ -351,7 +347,7 @@ That means that the new value of <span class="extract"><span class="extract-synt
<span class="plain-syntax"> </span><span class="reserved-syntax">double</span><span class="plain-syntax"> </span><span class="identifier-syntax">k</span><span class="plain-syntax"> = </span><span class="identifier-syntax">sc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">real_scalar</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">sc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">real_M</span><span class="plain-syntax"> = </span><span class="identifier-syntax">B</span><span class="plain-syntax">/</span><span class="identifier-syntax">k</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">sc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">scaling_mode</span><span class="plain-syntax"> == </span><span class="constant-syntax">LP_SCALED_UP</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">sc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">scaling_mode</span><span class="plain-syntax"> == </span><span class="identifier-syntax">LP_SCALED_UP</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">sc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">use_integer_scaling</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">B</span><span class="plain-syntax"> = </span><span class="identifier-syntax">benchmark_sc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">int_M</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">k</span><span class="plain-syntax"> = </span><span class="identifier-syntax">sc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">int_scalar</span><span class="plain-syntax">;</span>

View file

@ -65,7 +65,7 @@ tidy syntax tree to look at. Instead, we'll just print it out.
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Interpreting::diagram</span><span class="plain-syntax">(</span><span class="reserved-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><a href="../syntax-module/2-pn.html#SP5" class="function-link"><span class="function-syntax">Node::get_type</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">) == </span><span class="constant-syntax">SENTENCE_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">"(%d) %W\n\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">sentence_counter</span><span class="plain-syntax">++, </span><a href="../syntax-module/2-pn.html#SP4" class="function-link"><span class="function-syntax">Node::get_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="../syntax-module/2-pn.html#SP15" class="function-link"><span class="function-syntax">Node::log_subtree</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">DL</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../syntax-module/2-pn.html#SP16" class="function-link"><span class="function-syntax">Node::log_subtree</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">DL</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">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="plain-syntax">}</span>

View file

@ -86,10 +86,10 @@ 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#SP12" 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_logger</span><span class="plain-syntax">(</span><span class="character-syntax">'m'</span><span class="plain-syntax">, </span><a href="2-pn.html#SP15" 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</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#SP17" 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>
<span class="plain-syntax"> </span><span class="identifier-syntax">Writers::register_logger</span><span class="plain-syntax">(</span><span class="character-syntax">'T'</span><span class="plain-syntax">, </span><a href="2-pn.html#SP15" class="function-link"><span class="function-syntax">Node::log_subtree</span></a><span class="plain-syntax">); </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">$T</span></span><span class="comment-syntax"> = log tree under node</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>
<span class="plain-syntax"> </span><span class="identifier-syntax">Writers::register_logger</span><span class="plain-syntax">(</span><span class="character-syntax">'T'</span><span class="plain-syntax">, </span><a href="2-pn.html#SP16" class="function-link"><span class="function-syntax">Node::log_subtree</span></a><span class="plain-syntax">); </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">$T</span></span><span class="comment-syntax"> = log tree under node</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">SyntaxModule::end</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>

View file

@ -128,7 +128,7 @@ other for reading pointers to objects.
</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">Annotations::read_int</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">Annotations::read_int</span></span>:<br/>Syntax Trees - <a href="2-st.html#SP4_1">&#167;4.1</a>, <a href="2-st.html#SP16">&#167;16</a><br/>Parse Nodes - <a href="2-pn.html#SP17">&#167;17</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">PN</span><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">int</span><span class="plain-syntax"> </span><span class="function-syntax">Annotations::read_int</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">Annotations::read_int</span></span>:<br/>Syntax Trees - <a href="2-st.html#SP4_1">&#167;4.1</a>, <a href="2-st.html#SP16">&#167;16</a><br/>Parse Nodes - <a href="2-pn.html#SP18">&#167;18</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">PN</span><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="plain-syntax"> </span><span class="reserved-syntax">parse_node_annotation</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pna</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">PN</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pna</span><span class="plain-syntax">=</span><span class="identifier-syntax">PN</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">annotations</span><span class="plain-syntax">; </span><span class="identifier-syntax">pna</span><span class="plain-syntax">; </span><span class="identifier-syntax">pna</span><span class="plain-syntax">=</span><span class="identifier-syntax">pna</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next_annotation</span><span class="plain-syntax">)</span>
@ -224,7 +224,7 @@ wants to.
</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">Annotations::copy</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">Annotations::copy</span></span>:<br/>Parse Nodes - <a href="2-pn.html#SP8">&#167;8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="reserved-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Annotations::copy</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">Annotations::copy</span></span>:<br/>Parse Nodes - <a href="2-pn.html#SP9">&#167;9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="reserved-syntax">parse_node</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">to</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">annotations</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">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">parse_node_annotation</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pna</span><span class="plain-syntax"> = </span><span class="identifier-syntax">from</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">annotations</span><span class="plain-syntax">, *</span><span class="identifier-syntax">latest</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">pna</span><span class="plain-syntax">; </span><span class="identifier-syntax">pna</span><span class="plain-syntax">=</span><span class="identifier-syntax">pna</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next_annotation</span><span class="plain-syntax">) {</span>

View file

@ -189,7 +189,7 @@ enumerated, we allow a callback function (if provided) to do the job for us.
</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">NodeType::log</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">NodeType::log</span></span>:<br/>Syntax Module - <a href="1-sm.html#SP3">&#167;3</a><br/>Parse Nodes - <a href="2-pn.html#SP17">&#167;17</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">it</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">NodeType::log</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">NodeType::log</span></span>:<br/>Syntax Module - <a href="1-sm.html#SP3">&#167;3</a><br/>Parse Nodes - <a href="2-pn.html#SP18">&#167;18</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">it</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="constant-syntax">node_type_t</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax"> = (</span><span class="constant-syntax">node_type_t</span><span class="plain-syntax">) </span><span class="identifier-syntax">it</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">node_type_metadata</span><span class="plain-syntax"> *</span><span class="identifier-syntax">metadata</span><span class="plain-syntax"> = </span><a href="2-nt.html#SP7" class="function-link"><span class="function-syntax">NodeType::get_metadata</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">t</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">metadata</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">metadata</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">node_type_name</span><span class="plain-syntax">);</span>

View file

@ -80,7 +80,7 @@ MathJax = {
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Services</a></li><li><a href="index.html">syntax</a></li><li><a href="index.html#2">Chapter 2: The Parse Tree</a></li><li><b>Parse Nodes</b></li></ul></div>
<p class="purpose">Syntax trees are made of single nodes, each representing one way to understand a given piece of text.</p>
<ul class="toc"><li><a href="2-pn.html#SP1">&#167;1. Nodes themselves</a></li><li><a href="2-pn.html#SP2">&#167;2. Creation</a></li><li><a href="2-pn.html#SP5">&#167;5. Annotations</a></li><li><a href="2-pn.html#SP8">&#167;8. Copying parse nodes</a></li><li><a href="2-pn.html#SP11">&#167;11. Child count</a></li><li><a href="2-pn.html#SP12">&#167;12. Detection of subnodes</a></li><li><a href="2-pn.html#SP13">&#167;13. The word range beneath a given node</a></li><li><a href="2-pn.html#SP15">&#167;15. Logging the parse tree</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="2-pn.html#SP1">&#167;1. Nodes themselves</a></li><li><a href="2-pn.html#SP2">&#167;2. Creation</a></li><li><a href="2-pn.html#SP5">&#167;5. Annotations</a></li><li><a href="2-pn.html#SP8">&#167;8. Composition</a></li><li><a href="2-pn.html#SP9">&#167;9. Copying parse nodes</a></li><li><a href="2-pn.html#SP12">&#167;12. Child count</a></li><li><a href="2-pn.html#SP13">&#167;13. Detection of subnodes</a></li><li><a href="2-pn.html#SP14">&#167;14. The word range beneath a given node</a></li><li><a href="2-pn.html#SP16">&#167;16. Logging the parse tree</a></li></ul><hr class="tocbar">
<p class="commentary firstcommentary"><a id="SP1"></a><b>&#167;1. Nodes themselves. </b>Each node is an instance of this:
</p>
@ -104,7 +104,7 @@ MathJax = {
<p class="commentary firstcommentary"><a id="SP2"></a><b>&#167;2. Creation. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Node::new</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">Node::new</span></span>:<br/><a href="2-pn.html#SP3">&#167;3</a>, <a href="2-pn.html#SP8">&#167;8</a>, <a href="2-pn.html#SP10">&#167;10</a><br/>Syntax Trees - <a href="2-st.html#SP2">&#167;2</a><br/>Sentences - <a href="3-snt.html#SP6_1">&#167;6.1</a>, <a href="3-snt.html#SP6_6">&#167;6.6</a>, <a href="3-snt.html#SP6_9_3">&#167;6.9.3</a></span></button><span class="plain-syntax">(</span><span class="constant-syntax">node_type_t</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Node::new</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">Node::new</span></span>:<br/><a href="2-pn.html#SP3">&#167;3</a>, <a href="2-pn.html#SP9">&#167;9</a>, <a href="2-pn.html#SP11">&#167;11</a><br/>Syntax Trees - <a href="2-st.html#SP2">&#167;2</a><br/>Sentences - <a href="3-snt.html#SP6_1">&#167;6.1</a>, <a href="3-snt.html#SP6_6">&#167;6.6</a>, <a href="3-snt.html#SP6_9_3">&#167;6.9.3</a></span></button><span class="plain-syntax">(</span><span class="constant-syntax">node_type_t</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</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="identifier-syntax">pn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">node_type</span><span class="plain-syntax"> = </span><span class="identifier-syntax">t</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="2-pn.html#SP4" class="function-link"><span class="function-syntax">Node::set_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">, </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">);</span>
@ -130,7 +130,7 @@ Here's one if a word range is to be attached:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="function-syntax">Node::get_text</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">Node::get_text</span></span>:<br/><a href="2-pn.html#SP13">&#167;13</a>, <a href="2-pn.html#SP14">&#167;14</a>, <a href="2-pn.html#SP16">&#167;16</a>, <a href="2-pn.html#SP17">&#167;17</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pn</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="function-syntax">Node::get_text</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">Node::get_text</span></span>:<br/><a href="2-pn.html#SP14">&#167;14</a>, <a href="2-pn.html#SP15">&#167;15</a>, <a href="2-pn.html#SP17">&#167;17</a>, <a href="2-pn.html#SP18">&#167;18</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">parse_node</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pn</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">EMPTY_WORDING</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">pn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">text_parsed</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -149,7 +149,7 @@ at each node is its node type, accessed as follows:
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pn</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="constant-syntax">INVALID_NT</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">pn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">node_type</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">Node::is</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">Node::is</span></span>:<br/><a href="2-pn.html#SP16">&#167;16</a><br/>Syntax Trees - <a href="2-st.html#SP16">&#167;16</a>, <a href="2-st.html#SP23">&#167;23</a><br/>Tree Verification - <a href="2-tv.html#SP4_1_1">&#167;4.1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pn</span><span class="plain-syntax">, </span><span class="constant-syntax">node_type_t</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Node::is</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">Node::is</span></span>:<br/><a href="2-pn.html#SP17">&#167;17</a><br/>Syntax Trees - <a href="2-st.html#SP16">&#167;16</a>, <a href="2-st.html#SP23">&#167;23</a><br/>Tree Verification - <a href="2-tv.html#SP4_1_1">&#167;4.1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pn</span><span class="plain-syntax">, </span><span class="constant-syntax">node_type_t</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">pn</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">pn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">node_type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">t</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -180,10 +180,20 @@ annotations no longer relevant to the node's new identity.
</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">Node::get_score</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">Node::get_score</span></span>:<br/><a href="2-pn.html#SP16">&#167;16</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pn</span><span class="plain-syntax">) { </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">pn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">score</span><span class="plain-syntax">; }</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Node::get_score</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">Node::get_score</span></span>:<br/><a href="2-pn.html#SP17">&#167;17</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pn</span><span class="plain-syntax">) { </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">pn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">score</span><span class="plain-syntax">; }</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Node::set_score</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">Node::set_score</span></span>:<br/><a href="2-pn.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pn</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">s</span><span class="plain-syntax">) { </span><span class="identifier-syntax">pn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">score</span><span class="plain-syntax"> = </span><span class="identifier-syntax">s</span><span class="plain-syntax">; }</span>
</pre>
<p class="commentary firstcommentary"><a id="SP8"></a><b>&#167;8. Copying parse nodes. </b>If we want to duplicate a parse node, we cannot do so with a shallow bit copy:
<p class="commentary firstcommentary"><a id="SP8"></a><b>&#167;8. Composition. </b>This simply means stringing two nodes together into a list.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Node::compose</span><span class="plain-syntax">(</span><span class="reserved-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">A</span><span class="plain-syntax">, </span><span class="reserved-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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">A</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">B</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">A</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax"> = </span><span class="identifier-syntax">B</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">A</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP9"></a><b>&#167;9. Copying parse nodes. </b>If we want to duplicate a parse node, we cannot do so with a shallow bit copy:
the node points to a list of its annotations, and the duplicated node would
therefore point to the same list. If, subsequently, one of the two nodes
were annotated further, then the other would change in synchrony, which
@ -192,18 +202,18 @@ deep copy which duplicates not only the node, but also its annotation list.
</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">Node::copy</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">Node::copy</span></span>:<br/><a href="2-pn.html#SP9">&#167;9</a>, <a href="2-pn.html#SP10">&#167;10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="reserved-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Node::copy</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">Node::copy</span></span>:<br/><a href="2-pn.html#SP10">&#167;10</a>, <a href="2-pn.html#SP11">&#167;11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="reserved-syntax">parse_node</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">COPY</span><span class="plain-syntax">(</span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="reserved-syntax">parse_node</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-na.html#SP10" class="function-link"><span class="function-syntax">Annotations::copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="identifier-syntax">from</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Node::duplicate</span><span class="plain-syntax">(</span><span class="reserved-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">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">dup</span><span class="plain-syntax"> = </span><a href="2-pn.html#SP2" class="function-link"><span class="function-syntax">Node::new</span></a><span class="plain-syntax">(</span><span class="constant-syntax">INVALID_NT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-pn.html#SP8" class="function-link"><span class="function-syntax">Node::copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">dup</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-pn.html#SP9" class="function-link"><span class="function-syntax">Node::copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">dup</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">dup</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP9"></a><b>&#167;9. </b>This variation preserves links out.
<p class="commentary firstcommentary"><a id="SP10"></a><b>&#167;10. </b>This variation preserves links out.
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -211,34 +221,34 @@ deep copy which duplicates not only the node, but also its annotation list.
<span class="plain-syntax"> </span><span class="reserved-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">next_link</span><span class="plain-syntax"> = </span><span class="identifier-syntax">to</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">alt_link</span><span class="plain-syntax"> = </span><span class="identifier-syntax">to</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next_alternative</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">down_link</span><span class="plain-syntax"> = </span><span class="identifier-syntax">to</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">down</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="2-pn.html#SP8" class="function-link"><span class="function-syntax">Node::copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="identifier-syntax">from</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-pn.html#SP9" class="function-link"><span class="function-syntax">Node::copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">to</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">to</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax"> = </span><span class="identifier-syntax">next_link</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">to</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next_alternative</span><span class="plain-syntax"> = </span><span class="identifier-syntax">alt_link</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">to</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">down</span><span class="plain-syntax"> = </span><span class="identifier-syntax">down_link</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP10"></a><b>&#167;10. </b>And to deep-copy a whole subtree:
<p class="commentary firstcommentary"><a id="SP11"></a><b>&#167;11. </b>And to deep-copy a whole subtree:
</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">Node::copy_subtree</span><span class="plain-syntax">(</span><span class="reserved-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="reserved-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">level</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="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">to</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">"Null deep copy"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-pn.html#SP8" class="function-link"><span class="function-syntax">Node::copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="identifier-syntax">from</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-pn.html#SP9" class="function-link"><span class="function-syntax">Node::copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="identifier-syntax">from</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">-&gt;</span><span class="element-syntax">down</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">to</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">down</span><span class="plain-syntax"> = </span><a href="2-pn.html#SP2" class="function-link"><span class="function-syntax">Node::new</span></a><span class="plain-syntax">(</span><span class="constant-syntax">INVALID_NT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-pn.html#SP10" class="function-link"><span class="function-syntax">Node::copy_subtree</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">from</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">down</span><span class="plain-syntax">, </span><span class="identifier-syntax">to</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">down</span><span class="plain-syntax">, </span><span class="identifier-syntax">level</span><span class="plain-syntax">+1);</span>
<span class="plain-syntax"> </span><a href="2-pn.html#SP11" class="function-link"><span class="function-syntax">Node::copy_subtree</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">from</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">down</span><span class="plain-syntax">, </span><span class="identifier-syntax">to</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">down</span><span class="plain-syntax">, </span><span class="identifier-syntax">level</span><span class="plain-syntax">+1);</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">level</span><span class="plain-syntax">&gt;0) &amp;&amp; (</span><span class="identifier-syntax">from</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">to</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax"> = </span><a href="2-pn.html#SP2" class="function-link"><span class="function-syntax">Node::new</span></a><span class="plain-syntax">(</span><span class="constant-syntax">INVALID_NT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-pn.html#SP10" class="function-link"><span class="function-syntax">Node::copy_subtree</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">from</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">next</span><span class="plain-syntax">, </span><span class="identifier-syntax">to</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">, </span><span class="identifier-syntax">level</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-pn.html#SP11" class="function-link"><span class="function-syntax">Node::copy_subtree</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">from</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">next</span><span class="plain-syntax">, </span><span class="identifier-syntax">to</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">, </span><span class="identifier-syntax">level</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">level</span><span class="plain-syntax">&gt;0) &amp;&amp; (</span><span class="identifier-syntax">from</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next_alternative</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">to</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next_alternative</span><span class="plain-syntax"> = </span><a href="2-pn.html#SP2" class="function-link"><span class="function-syntax">Node::new</span></a><span class="plain-syntax">(</span><span class="constant-syntax">INVALID_NT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-pn.html#SP10" class="function-link"><span class="function-syntax">Node::copy_subtree</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">from</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">next_alternative</span><span class="plain-syntax">, </span><span class="identifier-syntax">to</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next_alternative</span><span class="plain-syntax">, </span><span class="identifier-syntax">level</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-pn.html#SP11" class="function-link"><span class="function-syntax">Node::copy_subtree</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">from</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">next_alternative</span><span class="plain-syntax">, </span><span class="identifier-syntax">to</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next_alternative</span><span class="plain-syntax">, </span><span class="identifier-syntax">level</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP11"></a><b>&#167;11. Child count. </b></p>
<p class="commentary firstcommentary"><a id="SP12"></a><b>&#167;12. Child count. </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">Node::no_children</span><span class="plain-syntax">(</span><span class="reserved-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pn</span><span class="plain-syntax">) {</span>
@ -247,7 +257,7 @@ deep copy which duplicates not only the node, but also its annotation list.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP12"></a><b>&#167;12. Detection of subnodes. </b>This is needed when producing problem messages: we may need to work up from
<p class="commentary firstcommentary"><a id="SP13"></a><b>&#167;13. Detection of subnodes. </b>This is needed when producing problem messages: we may need to work up from
an arbitrary leaf to the main sentence branch containing it. At any rate,
given a node <span class="extract"><span class="extract-syntax">PN</span></span>, we want to know if another node <span class="extract"><span class="extract-syntax">to_find</span></span> lies beneath
it. (This will never be called when <span class="extract"><span class="extract-syntax">PN</span></span> is the root, and from all other
@ -260,12 +270,12 @@ wide nor deep.)
<span class="plain-syntax"> </span><span class="reserved-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to_try</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">PN</span><span class="plain-syntax"> == </span><span class="identifier-syntax">to_find</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">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">to_try</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PN</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">down</span><span class="plain-syntax">; </span><span class="identifier-syntax">to_try</span><span class="plain-syntax">; </span><span class="identifier-syntax">to_try</span><span class="plain-syntax"> = </span><span class="identifier-syntax">to_try</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-pn.html#SP12" class="function-link"><span class="function-syntax">Node::contains</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">to_try</span><span class="plain-syntax">, </span><span class="identifier-syntax">to_find</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-pn.html#SP13" class="function-link"><span class="function-syntax">Node::contains</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">to_try</span><span class="plain-syntax">, </span><span class="identifier-syntax">to_find</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP13"></a><b>&#167;13. The word range beneath a given node. </b>Any given node may be the root of a subtree concerning the structure of
<p class="commentary firstcommentary"><a id="SP14"></a><b>&#167;14. The word range beneath a given node. </b>Any given node may be the root of a subtree concerning the structure of
a given contiguous range of words in the original source text. The
"left edge" of a node <span class="extract"><span class="extract-syntax">PN</span></span> is the least-numbered word considered by any
node at or below <span class="extract"><span class="extract-syntax">PN</span></span> in the tree; the "right edge" is the highest-numbered
@ -282,13 +292,13 @@ for <span class="extract"><span class="extract-syntax">PN</span></span> and the
<span class="plain-syntax"> </span><span class="reserved-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">child</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">l</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><a href="2-pn.html#SP4" class="function-link"><span class="function-syntax">Node::get_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PN</span><span class="plain-syntax">)), </span><span class="identifier-syntax">lc</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">child</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PN</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">down</span><span class="plain-syntax">; </span><span class="identifier-syntax">child</span><span class="plain-syntax">; </span><span class="identifier-syntax">child</span><span class="plain-syntax"> = </span><span class="identifier-syntax">child</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">lc</span><span class="plain-syntax"> = </span><a href="2-pn.html#SP13" class="function-link"><span class="function-syntax">Node::left_edge_of</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">child</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">lc</span><span class="plain-syntax"> = </span><a href="2-pn.html#SP14" class="function-link"><span class="function-syntax">Node::left_edge_of</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">child</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">lc</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">0</span><span class="plain-syntax">) &amp;&amp; ((</span><span class="identifier-syntax">l</span><span class="plain-syntax"> == -1) || (</span><span class="identifier-syntax">lc</span><span class="plain-syntax"> &lt; </span><span class="identifier-syntax">l</span><span class="plain-syntax">))) </span><span class="identifier-syntax">l</span><span class="plain-syntax"> = </span><span class="identifier-syntax">lc</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">l</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP14"></a><b>&#167;14. </b>Symmetrically, the right edge is found by taking the maximum word number
<p class="commentary firstcommentary"><a id="SP15"></a><b>&#167;15. </b>Symmetrically, the right edge is found by taking the maximum word number
for <span class="extract"><span class="extract-syntax">PN</span></span> and the right edges of its children.
</p>
@ -298,13 +308,13 @@ for <span class="extract"><span class="extract-syntax">PN</span></span> and the
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">r</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wordings::last_wn</span><span class="plain-syntax">(</span><a href="2-pn.html#SP4" class="function-link"><span class="function-syntax">Node::get_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PN</span><span class="plain-syntax">)), </span><span class="identifier-syntax">rc</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::first_wn</span><span class="plain-syntax">(</span><a href="2-pn.html#SP4" class="function-link"><span class="function-syntax">Node::get_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PN</span><span class="plain-syntax">)) &lt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">r</span><span class="plain-syntax"> = -1;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">child</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PN</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">down</span><span class="plain-syntax">; </span><span class="identifier-syntax">child</span><span class="plain-syntax">; </span><span class="identifier-syntax">child</span><span class="plain-syntax"> = </span><span class="identifier-syntax">child</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rc</span><span class="plain-syntax"> = </span><a href="2-pn.html#SP14" class="function-link"><span class="function-syntax">Node::right_edge_of</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">child</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rc</span><span class="plain-syntax"> = </span><a href="2-pn.html#SP15" class="function-link"><span class="function-syntax">Node::right_edge_of</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">child</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">rc</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">0</span><span class="plain-syntax">) &amp;&amp; ((</span><span class="identifier-syntax">r</span><span class="plain-syntax"> == -1) || (</span><span class="identifier-syntax">rc</span><span class="plain-syntax"> &gt; </span><span class="identifier-syntax">r</span><span class="plain-syntax">))) </span><span class="identifier-syntax">r</span><span class="plain-syntax"> = </span><span class="identifier-syntax">rc</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">r</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP15"></a><b>&#167;15. Logging the parse tree. </b>For most trees, logging is a fearsome prospect, but here we only mean printing
<p class="commentary firstcommentary"><a id="SP16"></a><b>&#167;16. Logging the parse tree. </b>For most trees, logging is a fearsome prospect, but here we only mean printing
out a textual representation to the debugging log.
</p>
@ -320,14 +330,14 @@ logging is a diagnostic tool, we want it to work even when Inform is sick.
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Node::log_tree</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">Node::log_tree</span></span>:<br/>Syntax Module - <a href="1-sm.html#SP3">&#167;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">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vpn</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pn</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">parse_node</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">vpn</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">pn</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">"&lt;null-meaning-list&gt;\n"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax">; }</span>
<span class="plain-syntax"> </span><a href="2-pn.html#SP16" class="function-link"><span class="function-syntax">Node::log_subtree_recursively</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">pn</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">1</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="2-pn.html#SP17" class="function-link"><span class="function-syntax">Node::log_subtree_recursively</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">pn</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">1</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="2-st.html#SP21" class="function-link"><span class="function-syntax">SyntaxTree::new_traverse_token</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">Node::summarise_tree</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">vpn</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pn</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">parse_node</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">vpn</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">pn</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">"&lt;null-meaning-list&gt;\n"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax">; }</span>
<span class="plain-syntax"> </span><a href="2-pn.html#SP16" class="function-link"><span class="function-syntax">Node::log_subtree_recursively</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">pn</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">1</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="2-pn.html#SP17" class="function-link"><span class="function-syntax">Node::log_subtree_recursively</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">pn</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">1</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="2-st.html#SP21" class="function-link"><span class="function-syntax">SyntaxTree::new_traverse_token</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax">}</span>
@ -337,19 +347,19 @@ logging is a diagnostic tool, we want it to work even when Inform is sick.
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"$P\n"</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">down</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG_INDENT</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="2-pn.html#SP16" class="function-link"><span class="function-syntax">Node::log_subtree_recursively</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">pn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">down</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">1</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="2-pn.html#SP17" class="function-link"><span class="function-syntax">Node::log_subtree_recursively</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">pn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">down</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">1</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="2-st.html#SP21" class="function-link"><span class="function-syntax">SyntaxTree::new_traverse_token</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG_OUTDENT</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP16"></a><b>&#167;16. </b>Either way, we recurse as follows, being careful not to make recursive calls
<p class="commentary firstcommentary"><a id="SP17"></a><b>&#167;17. </b>Either way, we recurse as follows, being careful not to make recursive calls
to pursue <span class="extract"><span class="extract-syntax">next</span></span> links, since otherwise a source text with more than 100,000
sentences or so will exceed the typical stack size Inform has to run in.
</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">Node::log_subtree_recursively</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">Node::log_subtree_recursively</span></span>:<br/><a href="2-pn.html#SP15">&#167;15</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pn</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">num</span><span class="plain-syntax">,</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Node::log_subtree_recursively</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">Node::log_subtree_recursively</span></span>:<br/><a href="2-pn.html#SP16">&#167;16</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pn</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">num</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">of</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">summarise</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">traverse_token</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">active</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">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pn</span><span class="plain-syntax">) {</span>
@ -357,7 +367,7 @@ sentences or so will exceed the typical stack size Inform has to run in.
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"*** Not a tree: %W ***\n"</span><span class="plain-syntax">, </span><a href="2-pn.html#SP4" class="function-link"><span class="function-syntax">Node::get_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pn</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">pn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">last_seen_on_traverse</span><span class="plain-syntax"> = </span><span class="identifier-syntax">traverse_token</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-pn.html#SP16_1" class="named-paragraph-link"><span class="named-paragraph">Calculate num and of such that this is [num/of] if they aren't already supplied</span><span class="named-paragraph-number">16.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-pn.html#SP17_1" class="named-paragraph-link"><span class="named-paragraph">Calculate num and of such that this is [num/of] if they aren't already supplied</span><span class="named-paragraph-number">17.1</span></a></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">pn</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">"&lt;null-parse-node&gt;\n"</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">summarise</span><span class="plain-syntax">) {</span>
@ -376,11 +386,11 @@ sentences or so will exceed the typical stack size Inform has to run in.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">summarise</span><span class="plain-syntax">) &amp;&amp; (</span><a href="2-pn.html#SP5" class="function-link"><span class="function-syntax">Node::is</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">, </span><span class="identifier-syntax">RULE_NT</span><span class="plain-syntax">))) </span><span class="identifier-syntax">recurse</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">endif</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">recurse</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><a href="2-pn.html#SP16" class="function-link"><span class="function-syntax">Node::log_subtree_recursively</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="2-pn.html#SP17" class="function-link"><span class="function-syntax">Node::log_subtree_recursively</span></a><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">pn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">down</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="identifier-syntax">gen</span><span class="plain-syntax">+1, </span><span class="identifier-syntax">summarise</span><span class="plain-syntax">, </span><span class="identifier-syntax">traverse_token</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG_OUTDENT</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">pn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next_alternative</span><span class="plain-syntax">) </span><a href="2-pn.html#SP16" class="function-link"><span class="function-syntax">Node::log_subtree_recursively</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</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">pn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next_alternative</span><span class="plain-syntax">) </span><a href="2-pn.html#SP17" class="function-link"><span class="function-syntax">Node::log_subtree_recursively</span></a><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">pn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next_alternative</span><span class="plain-syntax">, </span><span class="identifier-syntax">num</span><span class="plain-syntax">+1, </span><span class="identifier-syntax">of</span><span class="plain-syntax">, </span><span class="identifier-syntax">gen</span><span class="plain-syntax">+1, </span><span class="identifier-syntax">summarise</span><span class="plain-syntax">, </span><span class="identifier-syntax">traverse_token</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">summarise</span><span class="plain-syntax">) {</span>
@ -394,14 +404,14 @@ sentences or so will exceed the typical stack size Inform has to run in.
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP16_1"></a><b>&#167;16.1. </b>When the first alternative is called, <span class="extract"><span class="extract-syntax">Node::log_subtree_recursively</span></span>
<p class="commentary firstcommentary"><a id="SP17_1"></a><b>&#167;17.1. </b>When the first alternative is called, <span class="extract"><span class="extract-syntax">Node::log_subtree_recursively</span></span>
has arguments 0 and 0 for the possibility. The following code finds out the
correct value for <span class="extract"><span class="extract-syntax">of</span></span>, setting this possibility to be <span class="extract"><span class="extract-syntax">[1/of]</span></span>. When we later
iterate through other alternatives, we pass on correct values of <span class="extract"><span class="extract-syntax">num</span></span> and <span class="extract"><span class="extract-syntax">of</span></span>,
so that this code won't be used again on the same horizontal list of possibilities.
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Calculate num and of such that this is [num/of] if they aren't already supplied</span><span class="named-paragraph-number">16.1</span></span><span class="comment-syntax"> =</span>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Calculate num and of such that this is [num/of] if they aren't already supplied</span><span class="named-paragraph-number">17.1</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -411,8 +421,8 @@ so that this code won't be used again on the same horizontal list of possibiliti
<span class="plain-syntax"> </span><span class="identifier-syntax">num</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-pn.html#SP16">&#167;16</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP17"></a><b>&#167;17. </b>All of those routines make use of the following, which actually performs
<ul class="endnotetexts"><li>This code is used in <a href="2-pn.html#SP17">&#167;17</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP18"></a><b>&#167;18. </b>All of those routines make use of the following, which actually performs
the log of a parse node. Note that this always produces exactly one line of
text in the debugging log.
</p>

View file

@ -536,7 +536,7 @@ visited with that value.
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">pn_log_token</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">SyntaxTree::new_traverse_token</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">SyntaxTree::new_traverse_token</span></span>:<br/>Parse Nodes - <a href="2-pn.html#SP15">&#167;15</a><br/>Tree Verification - <a href="2-tv.html#SP1">&#167;1</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">SyntaxTree::new_traverse_token</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">SyntaxTree::new_traverse_token</span></span>:<br/>Parse Nodes - <a href="2-pn.html#SP16">&#167;16</a><br/>Tree Verification - <a href="2-tv.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> ++</span><span class="identifier-syntax">pn_log_token</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>

View file

@ -165,7 +165,7 @@ and which give specifics about the meaning (say, the level number in the
hierarchy of headings). See <a href="2-na.html" class="internal">Node Annotations</a>.
</li></ul>
<p class="commentary firstcommentary"><a id="SP7"></a><b>&#167;7. Fussy, defensive, pedantry. </b>Safe to say that Inform includes bugs: the more defensive coding we can do,
the better. That means not only extensive logging (see <a href="2-pn.html#SP15" class="internal">Node::log_tree</a>)
the better. That means not only extensive logging (see <a href="2-pn.html#SP16" class="internal">Node::log_tree</a>)
but also strict verification tests on every tree made (see <a href="2-tv.html" class="internal">Tree Verification</a>).
</p>

View file

@ -91,7 +91,7 @@ any text but then fail.
<span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">save_DL</span><span class="plain-syntax"> = </span><span class="identifier-syntax">DL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">DL</span><span class="plain-syntax"> = </span><span class="constant-syntax">STDOUT</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/2-str.html#SP20" class="function-link"><span class="function-syntax">Streams::enable_debugging</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">DL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../syntax-module/2-pn.html#SP15" class="function-link"><span class="function-syntax">Node::log_tree</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">DL</span><span class="plain-syntax">, </span><span class="identifier-syntax">syntax_tree</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">root_node</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../syntax-module/2-pn.html#SP16" class="function-link"><span class="function-syntax">Node::log_tree</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">DL</span><span class="plain-syntax">, </span><span class="identifier-syntax">syntax_tree</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">root_node</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">DL</span><span class="plain-syntax"> = </span><span class="identifier-syntax">save_DL</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
Total memory consumption was 256458K = 250 MB
62.3% was used for 1332948 objects, in 273659 frames in 200 x 800K = 160000K = 156 MB:
62.3% was used for 1332934 objects, in 273645 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 2579 x 100 = 257900 objects, 14524928 bytes
@ -20,9 +20,9 @@ Total memory consumption was 256458K = 250 MB
0.3% adjective_meaning 202 objects, 1001920 bytes
0.3% excerpt_meaning 3102 objects, 967824 bytes
0.3% inter_package 13238 objects, 953136 bytes
0.3% production 3897 objects, 904104 bytes
0.3% production 3894 objects, 903408 bytes
0.3% grammatical_usage 3658 objects, 877920 bytes
0.3% ptoken 8412 objects, 874848 bytes
0.3% ptoken 8401 objects, 873704 bytes
0.3% individual_form 2564 objects, 861504 bytes
0.3% inter_symbols_table 13238 objects, 847232 bytes
0.3% inter_schema_node 8716 objects, 836736 bytes
@ -228,5 +228,5 @@ Total memory consumption was 256458K = 250 MB
---- emitter array storage 14368 bytes in 8 claims
---- code generation workspace for objects 9200 bytes in 9 claims
19.9% was overhead - 52408304 bytes = 51179K = 49 MB
19.9% was overhead - 52410144 bytes = 51181K = 49 MB

View file

@ -1,11 +1,11 @@
<s-literal> hits 2097/23834 nti 20 constraint (none) extremes [1, infinity)
<s-literal> hits 2097/23834 nti 6 constraint (none) extremes [1, infinity)
English:
(@1)<cardinal-number>=1
(hits 171/171) (matched: '100') constraint CS = {r0} extremes [1, 1]
(@1)minus (@2)<cardinal-number>=1
(hits 0/1570) constraint DS = {20} extremes [2, 2]
(hits 0/187) constraint DS = {6} extremes [2, 2]
(@1)<quoted-text>=1 (@2)( (@3)<response-letter>=2 (@4))
(hits 273/798) (matched: '"[current item from the multiple object list]: [run paragraph on]" ( a )') constraint DS = {20} extremes [4, 4]
(hits 273/651) (matched: '"[current item from the multiple object list]: [run paragraph on]" ( a )') constraint DS = {6} extremes [4, 4]
(@1)<quoted-text>=1
(hits 1564/5548) (matched: 'Represents geographical locations, both indoor
and outdoor, which are not necessarily areas in a building. A player in one
@ -14,12 +14,12 @@
<s-literal-real-number>=1
(hits 11/9909) (matched: 'plus infinity') constraint (none) extremes [1, infinity)
(@1)<s-literal-truth-state>=1
(hits 78/523) (matched: 'false') constraint CS = {14} extremes [1, 1]
(hits 78/103) (matched: 'false') constraint CS = {26} extremes [1, 1]
<s-literal-list>=1
(hits 0/3128) constraint DS = {16} extremes [2, infinity)
(hits 0/1396) constraint DS = {28} extremes [2, infinity)
(@1)unicode <s-unicode-character>=1
(hits 0/3683) constraint DS = {20} extremes [2, infinity)
(hits 0/1715) constraint DS = {6} extremes [2, infinity)
<s-literal-time>=1
(hits 0/2222) constraint DW = {17, 18, 19} extremes [2, 5]
(hits 0/3599) constraint DW = {29, 30, 31} extremes [2, 5]
<s-literal-unit-notation>=1
(hits 0/9820) constraint (none) extremes [1, infinity)

View file

@ -1,14 +1,14 @@
100.0% in inform7 run
66.9% in compilation to Inter
26.3% in //Phrases::Manager::compile_first_block//
8.8% in //Phrases::Manager::compile_as_needed//
6.7% in //Strings::compile_responses//
6.2% in //World::Compile::compile//
4.1% in //MajorNodes::pre_pass//
3.1% in //MajorNodes::pass_1//
66.1% in compilation to Inter
25.6% in //Phrases::Manager::compile_first_block//
8.1% in //Phrases::Manager::compile_as_needed//
6.8% in //Strings::compile_responses//
6.4% in //World::Compile::compile//
4.3% in //MajorNodes::pre_pass//
3.2% in //MajorNodes::pass_1//
2.0% in //Phrases::Manager::RulePrintingRule_routine//
2.0% in //Phrases::Manager::rulebooks_array//
0.9% in //NewVerbs::ConjugateVerb//
1.9% in //Phrases::Manager::rulebooks_array//
1.1% in //NewVerbs::ConjugateVerb//
0.7% in //Phrases::Manager::traverse//
0.5% in //Phrases::Manager::parse_rule_parameters//
0.3% in //Phrases::Manager::compile_rulebooks//
@ -17,11 +17,11 @@
0.1% in //PL::Parsing::Verbs::compile_all//
0.1% in //Task::make_built_in_kind_constructors//
0.1% in //World::complete//
3.6% not specifically accounted for
30.8% in running Inter pipeline
10.1% in step preparation
9.7% in inter step 2/12: link
7.3% in inter step 12/12: generate inform6 -> auto.inf
3.4% not specifically accounted for
31.3% in running Inter pipeline
10.2% in step preparation
10.0% in inter step 2/12: link
7.2% 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
0.1% in inter step 11/12: eliminate-redundant-labels
@ -29,6 +29,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.1% not specifically accounted for
2.3% not specifically accounted for
2.0% in supervisor
0.2% not specifically accounted for
0.4% not specifically accounted for

View file

@ -0,0 +1,47 @@
BIP-EquivalentLPs-G
SpeedofThought-G
Dimensionless-G
DimensionsBuiltIn
FourthRoots-G
I6EscapeChars
LPCaseInsensitive
LPNegative
LPOptionals
NegativeLPs
OptionalMinusLP
Pais
Roots-G
ScaledLP-G
NegativeUnitLiterals
Chapter14
Acidity
PM_BadLPNameOption
PM_BadLPPartOption
PM_LPNotKOV
PM_MultiplyingNonKOVs
PM_BadLPEquivalent
PM_BadLPOffset
PM_DuplicateUnitSpec
PM_ElementOverflow
PM_EvenOverflow
PM_LPBuiltInKOV
PM_LPBuiltInKOVHidden
PM_LPElementTooLarge
PM_LPEnumeration
PM_LPFirstOptional
PM_LPMultipleOptional
PM_LPNeedsReal
PM_LPNonpositiveScaling
PM_LPNotAllNamed
PM_LPPartNamesTooLong
PM_LPRepeatedPartNames
PM_LPTooComplicated
PM_LPTooLittleAccuracy
PM_LPTooManyElements
PM_LPTooManyPartNames
PM_LPWithoutElement
PM_NegationForbidden
PM_NegationInternal
PM_ZMachineOverflow
PM_ZMachineOverflow2
PM_ZMachineOverflow2_issued

View file

@ -0,0 +1,29 @@
PM_RelationExists
PM_RelationNameTooLong
PM_FRFUnavailable
PM_OneOrVariousWithWhen
PM_BothOneAndMany
PM_CantCallLeft
PM_CantCallRight
PM_CantCallBoth
PM_OneToOneMiscalled
PM_RelNotStoredInProperty
PM_RelatedKindsUnknown
PM_RangeOverlyBroad
PM_Relation1to1Right
PM_RelationVtoOContradiction
PM_RelationOtoVContradiction
PM_BadRelationCondition
Asym1to1
ExoticCreation
KOVEquivRelation
OToORouteFinding
Pemberley
ReturnToPemberley
RelationsAsValues2
Sym1to1
ThereIs
UniversalConversion
UniversalDoubtful
UniversalRelationCasts
ValueQuantification

View file

@ -0,0 +1,32 @@
Length is a kind of value.
1.0m (in metric units, in m) or 1 meter (in meters, singular) or 1 metre
(in metres, singular) or 2 meters (in meters, plural) or 2 metres (in
metres, plural) specifies a length.
1mm (in metric units, in mm) or 1 millimeter (in millimeters,
singular) or 1 millimetre (in millimetres, singular) or 2 millimeters
(in millimeters, plural) or 2 millimetres (in millimetres, plural)
specifies a length scaled down by 1000.
1cm (in metric units, in cm) or 1 centimeter (in centimeters,
singular) or 1 centimetre (in centimetres, singular) or 2 centimeters
(in centimeters, plural) or 2 centimetres (in centimetres, plural)
specifies a length scaled down by 100.
1km (in metric units, in km) or 1 kilometer (in kilometers, singular)
or 1 kilometre (in kilometres, singular) or 2 kilometers (in
kilometers, plural) or 2 kilometres (in kilometres, plural) specifies
a length scaled up by 1000.
1 quarter (in conceptual units, in quarters, singular) or 2 quarters (in conceptual units, in quarters, plural) specifies a length equivalent to 24mm.
1 pencil (in conceptual units, in pencils, singular) or 2 pencils (in conceptual units, in pencils, plural) specifies a length equivalent to 18cm.
1 bathtub (in conceptual units, in bathtubs, singular) or 2 bathtubs (in conceptual units, in bathtubs, plural) specifies a length equivalent to 152cm.
1 Olympic swimming pool (in conceptual units, in Olympic swimming pools, singular) or 2 Olympic swimming pools (in conceptual units, in Olympic swimming pools, plural) specifies a length equivalent to 50 meters.
1 Empire state building (in conceptual units, in Empire State buildings, singular) or 2 Empire State buildings (in conceptual units, in Empire State buildings, plural) specifies a length equivalent to 443m.
To begin:
let N be 1mm;
while N < 50km:
say "[N] is [N in conceptual units].";
now N is 10 times N;

View file

@ -0,0 +1,8 @@
1.0mm is 0.04167 quarters.
1.0cm is 0.41667 quarters.
10.0cm is 4.16667 quarters.
1.0m is 5.55556 pencils.
10.0m is 6.57895 bathtubs.
100.00001m is 2.0 Olympic swimming pools.
1.0km is 2.25734 Empire State buildings.
10.0km is 22.57337 Empire State buildings.

View file

@ -80,36 +80,6 @@ typedef struct activity_crossref {
@d CHOOSING_NOTABLE_LOCALE_OBJ_ACT 32
@d PRINTING_LOCALE_PARAGRAPH_ACT 33
@ We give a special meaning to the sentence "X is an activity", where no kind
is specified, since this would otherwise not be legal Inform.
=
<bare-activity-sentence-object> ::=
<article> activity | ==> { TRUE, - }
activity ==> { TRUE, - }
@ =
int Activities::new_activity_SMF(int task, parse_node *V, wording *NPs) {
wording SW = (NPs)?(NPs[0]):EMPTY_WORDING;
wording OW = (NPs)?(NPs[1]):EMPTY_WORDING;
switch (task) { /* "Description is an activity." */
case ACCEPT_SMFT:
if (<bare-activity-sentence-object>(OW)) {
<np-unparsed>(SW);
V->next = <<rp>>;
<np-unparsed>(OW);
V->next->next = <<rp>>;
return TRUE;
}
break;
case PASS_1_SMFT:
Activities::new(Kinds::unary_construction(CON_activity, K_nil),
Node::get_text(V->next));
break;
}
return FALSE;
}
@ Activities are much simpler to create than actions. For example,
>> Announcing something is an activity on numbers.

View file

@ -70,7 +70,7 @@ names. But as these names are only used in early boot sentences in the
be a single word, and are hyphenated.
@<Create the special meanings@> =
SpecialMeanings::declare(Relations::new_relation_SMF, I"new-relation", 1);
SpecialMeanings::declare(RelationRequests::new_relation_SMF, I"new-relation", 1);
SpecialMeanings::declare(Rules::Placement::substitutes_for_SMF, I"rule-substitutes-for", 1);
SpecialMeanings::declare(Rules::Placement::does_nothing_SMF, I"rule-does-nothing", 1);
SpecialMeanings::declare(Rules::Placement::does_nothing_if_SMF, I"rule-does-nothing-if", 1);
@ -81,7 +81,7 @@ be a single word, and are hyphenated.
SpecialMeanings::declare(NewVerbs::new_verb_SMF, I"new-verb", 2);
SpecialMeanings::declare(Plurals::plural_SMF, I"new-plural", 2);
SpecialMeanings::declare(Activities::new_activity_SMF, I"new-activity", 2);
SpecialMeanings::declare(ActivityRequests::new_activity_SMF, I"new-activity", 2);
SpecialMeanings::declare(NewVerbs::new_adjective_SMF, I"new-adjective", 2);
SpecialMeanings::declare(Assertions::Property::either_SMF, I"new-either-or", 2);
SpecialMeanings::declare(DefineByTable::defined_by_SMF, I"defined-by-table", 2);
@ -90,7 +90,7 @@ be a single word, and are hyphenated.
meaning_of_mean = SpecialMeanings::declare(NewVerbs::verb_means_SMF, I"verb-means", 3);
SpecialMeanings::declare(LiteralPatterns::specifies_SMF, I"specifies-notation", 4);
SpecialMeanings::declare(LPRequests::specifies_SMF, I"specifies-notation", 4);
SpecialMeanings::declare(NewUseOptions::use_translates_as_SMF, I"use-translates", 4);
SpecialMeanings::declare(UseOptions::use_SMF, I"use", 4);
SpecialMeanings::declare(Sentences::DLRs::include_in_SMF, I"include-in", 4);

View file

@ -0,0 +1,44 @@
[ActivityRequests::] New Activity Requests.
Special sentences creating new activities.
@ This special meaning is only needed for one case. If activities are created
by the sentence
>> Counting is an activity on numbers.
then this happens via the regular meaning of "to be", because "activity on
numbers" is a valid kind of value. But this:
>> Describing is an activity.
can't be handled that way because "activity" is not a valid kind. And so we
handle this case through a special case of "X is Y" which applies only if Y
matches:
=
<bare-activity-sentence-object> ::=
<article> activity |
activity
@ =
int ActivityRequests::new_activity_SMF(int task, parse_node *V, wording *NPs) {
wording SW = (NPs)?(NPs[0]):EMPTY_WORDING;
wording OW = (NPs)?(NPs[1]):EMPTY_WORDING;
switch (task) {
case ACCEPT_SMFT:
if (<bare-activity-sentence-object>(OW)) {
<np-unparsed>(SW);
V->next = <<rp>>;
<np-unparsed>(OW);
V->next->next = <<rp>>;
return TRUE;
}
break;
case PASS_1_SMFT:
Activities::new(Kinds::unary_construction(CON_activity, K_nil),
Node::get_text(V->next));
break;
}
return FALSE;
}

View file

@ -0,0 +1,323 @@
[LPRequests::] New Literal Pattern Requests.
Special sentences creating new notations for literal values.
@ The ability to create new ways to write literal values is one of the best
features of Inform, but it is complex to parse, and has around 30 problem
messages associated with it. The |:literals| set of test cases may be useful
when tweaking the code below.
The first point to note is that "X specifies Y" sentences have two different
uses, but that both are covered below. First, they create literal patterns,
and the syntax for that can be quite involved:
>> 1 tonne (in metric units, in tonnes, singular) specifies a mass scaled up by 1000.
Second, they can gives dimensional instructions about kinds:
>> A length times a length specifies an area.
This is a slightly unhappy ambiguity, but the potential for confusion is low.
Nobody who defines a literal pattern with the word "times" in can expect good
results anyway, given that "times" will usually be interpreted as
multiplication when Inform eventually parses such a literal.
@ We create new literal pattenrs during pass 1, which imposes two timing
constraints:
(a) The specification sentence must come after the sentence creating the
kind of value being specified; but
(b) It must come before any sentences using constants written in this
notation.
In practice both constraints seem to be accepted by users as reasonable,
and this causes no trouble.
=
int LPRequests::specifies_SMF(int task, parse_node *V, wording *NPs) {
wording SW = (NPs)?(NPs[0]):EMPTY_WORDING;
wording OW = (NPs)?(NPs[1]):EMPTY_WORDING;
switch (task) {
case ACCEPT_SMFT: /* "10'23 specifies a running time." */
if (<np-alternative-list>(SW)) {
parse_node *S = <<rp>>;
if (<np-unparsed>(OW)) {
parse_node *O = <<rp>>;
V->next = S; V->next->next = O;
return TRUE;
}
}
break;
case PASS_1_SMFT:
LPRequests::new_list(V->next, V->next->next, NULL);
break;
}
return FALSE;
}
@ The code in this section parses sentences which set up new literal patterns,
puts the (quite complicated) result into a //lp_specification// object, and
sends that to //Literal Patterns//.
@d LP_SCALED_UP 1
@d LP_SCALED_DOWN -1
@d LP_SCALED_AT 2
@d SINGULAR_LPN 1
@d PLURAL_LPN 2
@d ABANDON_LPN 4 /* for error recovery only */
=
typedef struct lp_specification {
struct wording notation_wording; /* the actual notation, e.g., "2 tonnes" */
struct kind *kind_specified; /* what kind this sentence specifies */
int scaled_dir; /* one of the |LP_SCALED_*| constants above */
int scale_factor;
double scale_factor_as_double;
struct parse_node *equivalent_value;
double equivalent_value_as_double;
struct parse_node *offset_value;
double offset_value_as_double;
int uses_real_arithmetic;
int notation_options; /* a bitmap of the |*_LPN| values */
struct literal_pattern_name *notation_groups; /* "in metric units", and so on */
struct parse_node *part_np_list;
} lp_specification;
lp_specification glps;
void LPRequests::initialise(lp_specification *lps) {
lps->scaled_dir = LP_SCALED_UP;
lps->scale_factor = 1;
lps->scale_factor_as_double = 1.0;
lps->equivalent_value_as_double = 0.0;
lps->equivalent_value = NULL;
lps->offset_value_as_double = 0.0;
lps->offset_value = NULL;
lps->uses_real_arithmetic = FALSE;
lps->notation_options = 0;
lps->notation_groups = NULL;
lps->notation_wording = EMPTY_WORDING;
lps->part_np_list = NULL;
}
@ One can define LPs with a list of alternatives, of which the first is the
"primary alternative" and said to be the "owner" of the rest. For instance:
>> 1 tonne (in metric units, in tonnes, singular) or 2 tonnes (in metric units,
in tonnes, plural) specifies a mass scale_factor up by 1000.
Here "1 tonne" is the primary alternative, and it owns "2 tonnes".
=
literal_pattern *LPRequests::new_list(parse_node *p,
parse_node *q, literal_pattern *m) {
if (Node::get_type(p) == AND_NT) {
m = LPRequests::new_list(p->down, q, m);
return LPRequests::new_list(p->down->next, q, m);
}
LPRequests::initialise(&glps);
@<Parse the object noun phrase of the specifies sentence@>;
@<Parse the subject noun phrase of the specifies sentence@>;
return LiteralPatterns::new_literal_specification_inner(&glps, p, q, m);
}
@<Parse the subject noun phrase of the specifies sentence@> =
<specifies-sentence-subject>(Node::get_text(p));
glps.notation_wording = GET_RW(<specifies-sentence-subject>, 1);
glps.notation_options = <<r>>;
glps.notation_groups = <<rp>>;
if (glps.notation_options & ABANDON_LPN) return m;
@ The following grammar is used to parse the new literal patterns defined
in a "specifies" sentence.
Formally, the subject noun phrase of a "specifies" sentence must be a list
of alternatives each of which matches the following:
=
<specifies-sentence-subject> ::=
... ( {<lp-group-list>} ) | ==> { pass 1 }
<k-kind-articled> times <k-kind-articled> | ==> @<Store left and right kinds@>
<s-type-expression> times <s-type-expression> | ==> @<Issue PM_MultiplyingNonKOVs problem@>
... ==> { 0, NULL }
<lp-group-list> ::=
<lp-group> <lp-group-tail> | ==> { R[1] | R[2], LPRequests::compose(RP[1], RP[2]) }
<lp-group> ==> { pass 1 }
<lp-group-tail> ::=
, and <lp-group-list> | ==> { pass 1 }
,/and <lp-group-list> ==> { pass 1 }
<lp-group> ::=
singular | ==> { SINGULAR_LPN, NULL }
plural | ==> { PLURAL_LPN, NULL }
<lp-group-name> | ==> { 0, LiteralPatterns::new_lpn(EMPTY_WORDING, RP[1]) }
in ...... | ==> { 0, LiteralPatterns::new_lpn(W, NULL) }
...... ==> @<Issue PM_BadLPNameOption problem@>
@<Store left and right kinds@> =
Kinds::Dimensions::dim_set_multiplication(RP[1], RP[2], glps.kind_specified);
==> { ABANDON_LPN, - };
@<Issue PM_MultiplyingNonKOVs problem@> =
if (preform_lookahead_mode == FALSE)
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_MultiplyingNonKOVs),
"only kinds of value can be multiplied here",
"and only in a sentence like 'A length times a length specifies an area.'");
==> { ABANDON_LPN, NULL }
@<Issue PM_BadLPNameOption problem@> =
if (preform_lookahead_mode == FALSE) {
Problems::quote_source(1, current_sentence);
Problems::quote_wording(2, W);
StandardProblems::handmade_problem(Task::syntax_tree(), _p_(PM_BadLPNameOption));
Problems::issue_problem_segment(
"In the specification %1, I was expecting that '%2' would be an optional "
"note about one of the notations: it should have been one of 'singular', "
"'plural' or 'in ...'.");
Problems::issue_problem_end();
}
==> { ABANDON_LPN, NULL }
@<Parse the object noun phrase of the specifies sentence@> =
glps.offset_value = NULL;
<specifies-sentence-object>(Node::get_text(q));
switch (<<r>>) {
case PARTS_LPC: glps.part_np_list = <<rp>>; break;
case SCALING_LPC: break;
}
if (glps.kind_specified == NULL) return m;
@ The object noun phrase of a "specifies" sentence is required to match
the following grammar. Note that the tails are mutually exclusive; you
can't set both scaling and an equivalent, for instance.
=
<specifies-sentence-object> ::=
<kind-specified> <lp-specification-tail> | ==> { pass 2 }
<kind-specified> ==> { 0, NULL }
<kind-specified> ::=
<k-kind-articled> | ==> { 0, NULL }; glps.kind_specified = RP[1];
... ==> @<Issue PM_LPNotKOV problem@>
<lp-specification-tail> ::=
with parts <lp-part-list> | ==> { PARTS_LPC, RP[1] }
<scaling-instruction> | ==> { SCALING_LPC, - }
<scaling-instruction> offset by <s-literal> | ==> @<Scaling together with offset@>
offset by <s-literal> | ==> @<Offset alone@>
equivalent to <s-literal> ==> @<Equivalency@>
<scaling-instruction> ::=
scaled up by <scaling-amount> | ==> { SCALING_LPC, - }; glps.scaled_dir = LP_SCALED_UP
scaled down by <scaling-amount> | ==> { SCALING_LPC, - }; glps.scaled_dir = LP_SCALED_DOWN
scaled at <scaling-amount> ==> { SCALING_LPC, - }; glps.scaled_dir = LP_SCALED_AT
<scaling-amount> ::=
<cardinal-number> | ==> @<Accept an integer scale factor@>
<s-literal-real-number> ==> @<Accept a real scale factor@>
@<Scaling together with offset@> =
glps.offset_value_as_double = LiteralPatterns::get_latest_real();
glps.offset_value = RP[2];
==> { SCALING_LPC, - };
@<Offset alone@> =
glps.offset_value_as_double = LiteralPatterns::get_latest_real();
glps.offset_value = RP[1];
==> { OFFSET_LPC, - };
@<Equivalency@> =
glps.equivalent_value_as_double = LiteralPatterns::get_latest_real();
glps.equivalent_value = RP[1];
==> { EQUIVALENT_LPC, - };
@<Accept an integer scale factor@> =
glps.scale_factor = R[1];
glps.scale_factor_as_double = (double) R[1];
==> { -, - };
@<Accept a real scale factor@> =
glps.scale_factor = 1;
glps.scale_factor_as_double = LiteralPatterns::get_latest_real();
glps.uses_real_arithmetic = TRUE;
==> { -, - };
@<Issue PM_LPNotKOV problem@> =
if (preform_lookahead_mode == FALSE)
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_LPNotKOV),
"you can only specify ways to write kinds of value",
"as created with sentences like 'A weight is a kind of value.'");
@ Of the optional tails, the only tricky one is the part list, which has the
following rather extensive grammar. This handles text like:
>> dollars and cents (optional, preamble optional)
The text is a list of part-names, each of which can optionally be followed
by a bracketed list of up to three options in any order.
=
<lp-part-list> ::=
<lp-part> , and <lp-part-list> | ==> { 0, Node::compose(RP[1], RP[2]) }
<lp-part> , <lp-part-list> | ==> { 0, Node::compose(RP[1], RP[2]) }
<lp-part> and <lp-part-list> | ==> { 0, Node::compose(RP[1], RP[2]) }
<lp-part> ==> { 0, RP[1] }
<lp-part> ::=
<np-unparsed-bal> ( <lp-part-option-list> ) | ==> { 0, LPRequests::mark(RP[1], R[2]) }
<np-unparsed-bal> ==> { 0, RP[1] }
<lp-part-option-list> ::=
<lp-part-option> <lp-part-option-tail> | ==> { R[1] | R[2], - }
<lp-part-option> ==> { pass 1 }
<lp-part-option-tail> ::=
, and <lp-part-option-list> | ==> { pass 1 }
,/and <lp-part-option-list> ==> { pass 1 }
<lp-part-option> ::=
optional | ==> { OPTIONAL_LSO, - }
preamble optional | ==> { PREAMBLE_OPTIONAL_LSO, - }
without leading zeros | ==> { WITHOUT_LEADING_ZEROS_LSO, - }
...... ==> @<Issue PM_BadLPPartOption problem@>
@<Issue PM_BadLPPartOption problem@> =
if (preform_lookahead_mode == FALSE) {
Problems::quote_source(1, current_sentence);
Problems::quote_wording(2, W);
StandardProblems::handmade_problem(Task::syntax_tree(), _p_(PM_BadLPPartOption));
Problems::issue_problem_segment(
"In the specification %1, I was expecting that '%2' would be an optional "
"note about one of the parts: it should have been one of 'optional', "
"'preamble optional' or 'without leading zeros'.");
Problems::issue_problem_end();
}
==> { 0, - };
@ =
literal_pattern_name *LPRequests::compose(literal_pattern_name *A, literal_pattern_name *B) {
if (A == NULL) return B;
A->next_with_rp = B;
return A;
}
@ Nodes used as "parts" of a notation are annotated with a bitmap of these:
@d OPTIONAL_LSO 1
@d PREAMBLE_OPTIONAL_LSO 2
@d WITHOUT_LEADING_ZEROS_LSO 4
=
parse_node *LPRequests::mark(parse_node *A, int N) {
if (A) Annotations::write_int(A, lpe_options_ANNOT, N);
return A;
}

View file

@ -0,0 +1,316 @@
[RelationRequests::] New Relation Requests.
Special sentences for creating new relations.
@ The following reads sentences like:
>> Acquaintance relates people to each other.
Note that we take at least minimal action on this as soon as we detect it,
in the pre-pass: this is important because it may affect the classification
of subsequent sentences, which also happens in the pre-pass.
The |:relations| set of test cases may be useful when tweaking the code below.
=
<new-relation-sentence-object> ::=
<np-unparsed> to <np-unparsed> ==> { TRUE, Node::compose(RP[1], RP[2]) }
@ =
int RelationRequests::new_relation_SMF(int task, parse_node *V, wording *NPs) {
wording SW = (NPs)?(NPs[0]):EMPTY_WORDING;
wording OW = (NPs)?(NPs[1]):EMPTY_WORDING;
switch (task) { /* "Knowledge relates various people to various things." */
case ACCEPT_SMFT:
if (<new-relation-sentence-object>(OW)) {
parse_node *O = <<rp>>;
<np-unparsed>(SW);
V->next = <<rp>>;
V->next->next = O;
wording RW = Node::get_text(V->next);
if (<relation-name>(RW))
StandardProblems::sentence_problem(Task::syntax_tree(),
_p_(PM_RelationExists),
"that relation already exists",
"and cannot have its definition amended now.");
else if (Wordings::length(RW) > MAX_WORDS_IN_ASSEMBLAGE-4)
StandardProblems::sentence_problem(Task::syntax_tree(),
_p_(PM_RelationNameTooLong),
"this is too long a name for a single relation to have",
"and would become unwieldy.");
else Node::set_new_relation_here(V->next,
BinaryPredicates::make_pair_sketchily(
WordAssemblages::from_wording(RW), Relation_OtoO));
return TRUE;
}
break;
case PASS_1_SMFT: {
binary_predicate *bp = Node::get_new_relation_here(V->next);
if (bp) @<Make the request@>;
break;
}
}
return FALSE;
}
@ We won't create the relation here, only submit a request in the form of
the following object. The terms 0 and 1 represent the part before the "to"
and after; in "relates people to each other", they would derive from "people"
and "each other" respectively.
=
typedef struct relation_request {
struct wording RW; /* name of the relation */
struct relation_request_term terms[2];
struct wording CONW; /* condition text */
int frf; /* has fast route-finding */
int symmetric; /* a symmetric relation? */
int equivalence; /* an equivalence ("in groups") relation? */
} relation_request;
typedef struct relation_request_term {
struct kind *domain;
struct wording CALLW; /* "calling" name */
int unique; /* |TRUE| for one, |FALSE| for various, |NOT_APPLICABLE| if not yet known */
} relation_request_term;
@ Syntax on the left (term 0) and right (term 1) slightly differs. The integer
result is a bitmap of these:
@d FRF_RBIT 1
@d ONE_RBIT 2
@d VAR_RBIT 4
@d ANOTHER_RBIT 8
@d EACHOTHER_RBIT 16
@d GROUPS_RBIT 32
@d WHEN_RBIT 64
@d CALLED_RBIT 128
=
<relates-sentence-left-object> ::=
<relation-term-basic> ( called ... ) | ==> { R[1] | CALLED_RBIT, - }
<relation-term-basic> ==> { pass 1 }
<relates-sentence-right-object> ::=
<relation-term-right-named> with fast route-finding | ==> { R[1] | FRF_RBIT, - }
<relation-term-right-named> when ... | ==> { R[1] | WHEN_RBIT, - }
<relation-term-right-named> ==> { pass 1 }
<relation-term-right-named> ::=
<relation-term-right> ( called ... ) | ==> { R[1] | CALLED_RBIT, - }
<relation-term-right> ==> { pass 1 }
<relation-term-right> ::=
{another} | ==> { ANOTHER_RBIT, - }
{each other} | ==> { EACHOTHER_RBIT, - }
{each other in groups} | ==> { GROUPS_RBIT, - }
<relation-term-basic> ==> { pass 1 }
<relation-term-basic> ::=
one ... | ==> { ONE_RBIT, - }
various ... | ==> { VAR_RBIT, - }
... ==> { 0, - }
@<Make the request@> =
relation_request RR;
RR.RW = Node::get_text(V->next); /* relation name */
RR.CONW = EMPTY_WORDING;
RR.frf = FALSE;
RR.symmetric = FALSE;
RR.equivalence = FALSE;
wording TW[2];
int bitmap[2]; /* bitmap of the |*_RBIT| values */
@<Parse left and right object phrases@>;
@<Find term multiplicities and use of fast route-finding@>;
@<Detect use of symmetry in definition of second term@>;
@<Detect use of a condition for a test-only relation@>;
@<Vet the use of callings for the terms of the relation@>;
@<Find the left and right domain kinds@>;
@<Infer uniqueness if not specified@>;
LOGIF(RELATION_DEFINITIONS,
"Relation defn: '%W' %s %s %s (%s $u, %s $u)\n",
RR.RW,
(RR.symmetric)?"symmetric":"asymmetric",
(RR.equivalence)?"equivalence":"non-equivalence",
(RR.frf)?"frf":"no-frf",
(RR.terms[0].unique)?"one":"various", RR.terms[0].domain,
(RR.terms[1].unique)?"one":"various", RR.terms[1].domain);
Relations::new(bp, &RR);
@<Parse left and right object phrases@> =
<relates-sentence-left-object>(Node::get_text(V->next->next));
bitmap[0] = <<r>>;
RR.terms[0].CALLW = EMPTY_WORDING; /* left term "calling" name */
if (bitmap[0] & CALLED_RBIT)
RR.terms[0].CALLW = GET_RW(<relates-sentence-left-object>, 1);
TW[0] = GET_RW(<relation-term-basic>, 1);
RR.terms[0].unique = NOT_APPLICABLE;
RR.terms[0].domain = NULL;
<relates-sentence-right-object>(Node::get_text(V->next->next->next));
bitmap[1] = <<r>>;
RR.terms[1].CALLW = EMPTY_WORDING; /* right term "calling" name */
if (bitmap[1] & CALLED_RBIT)
RR.terms[1].CALLW = GET_RW(<relation-term-right-named>, 1);
TW[1] = GET_RW(<relation-term-basic>, 1);
RR.terms[1].unique = NOT_APPLICABLE;
RR.terms[1].domain = NULL;
if (bitmap[1] & WHEN_RBIT)
RR.CONW = GET_RW(<relates-sentence-right-object>, 1);
@<Find term multiplicities and use of fast route-finding@> =
if (bitmap[0] & ONE_RBIT) RR.terms[0].unique = TRUE;
if (bitmap[0] & VAR_RBIT) RR.terms[0].unique = FALSE;
if (bitmap[1] & ONE_RBIT) RR.terms[1].unique = TRUE;
if (bitmap[1] & VAR_RBIT) RR.terms[1].unique = FALSE;
if (bitmap[1] & FRF_RBIT) RR.frf = TRUE;
if (RR.frf && (RR.terms[0].unique != FALSE) && (RR.terms[1].unique != FALSE)) {
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_FRFUnavailable),
"fast route-finding is only possible with various-to-various "
"relations",
"though this doesn't matter because with other relations the "
"standard route-finding algorithm is efficient already.");
return FALSE;
}
@ The second term can be given in several special ways to indicate symmetry
between the two terms. This is more than a declaration that the left and
right terms belong to the same domain set (though that is true): it says
that $R(x, y)$ is true if and only if $R(y, x)$ is true.
@<Detect use of symmetry in definition of second term@> =
int specified_one = RR.terms[0].unique;
if (bitmap[1] & ANOTHER_RBIT) {
RR.symmetric = TRUE; RR.terms[0].unique = TRUE; RR.terms[1].unique = TRUE;
}
if (bitmap[1] & EACHOTHER_RBIT) {
RR.symmetric = TRUE; RR.terms[0].unique = FALSE; RR.terms[1].unique = FALSE;
}
if (bitmap[1] & GROUPS_RBIT) {
RR.symmetric = TRUE; RR.terms[0].unique = FALSE; RR.terms[1].unique = FALSE;
RR.equivalence = TRUE;
}
if ((specified_one == TRUE) && (RR.terms[0].unique == FALSE)) {
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_BothOneAndMany),
"the left-hand term in this relation seems to be both 'one' thing "
"and also many things",
"given the mention of 'each other'. Try removing the 'one'.");
return FALSE;
}
@ When a relation is said to hold depending on a condition to be tested at
run-time, it is meaningless to tell Inform anything about the uniqueness of
terms in the domain: a relation might be one-to-one at the start of play
but become various-to-various later on, as the outcomes of these tests
change. So we reject any such misleading syntax.
@<Detect use of a condition for a test-only relation@> =
if (bitmap[1] & WHEN_RBIT) {
if ((RR.terms[0].unique != NOT_APPLICABLE) || (RR.terms[1].unique != NOT_APPLICABLE)) {
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_OneOrVariousWithWhen),
"this relation is a mixture of different syntaxes",
"and must be simplified. If it is going to specify 'one' or "
"'various' then it cannot also say 'when' the relation holds.");
return FALSE;
}
}
@ To give a name to one term implies some degree of uniqueness about it.
But that only makes sense if there is indeed some uniqueness involved,
because otherwise it is unclear what the name refers to. Who is "the
greeter of the Queen of Sheba" given the following definition?
>> Acquaintance relates various people (called the greeter) to various people.
Because of that, callings are only allowed in certain circumstances. An
exception is made -- that is, they are always allowed -- where the relation
tests a given condition, because then the names identify the terms, e.g.,
>> Divisibility relates a number (called N) to a number (called M) when the remainder after dividing M by N is 0.
Here the names "N" and "M" unambiguously refer to the terms being tested
at this moment, and have no currency beyond that context.
@<Vet the use of callings for the terms of the relation@> =
if (Wordings::empty(RR.CONW)) {
if ((RR.terms[0].unique == FALSE) &&
(Wordings::nonempty(RR.terms[0].CALLW))) {
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_CantCallLeft),
"the left-hand term of this relation is not unique",
"so you cannot assign a name to it using 'called'.");
return FALSE;
}
if ((RR.terms[1].unique == FALSE) &&
(Wordings::nonempty(RR.terms[1].CALLW))) {
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_CantCallRight),
"the right-hand term of this relation is not unique",
"so you cannot assign a name to it using 'called'.");
return FALSE;
}
if ((Wordings::nonempty(RR.terms[0].CALLW)) &&
(Wordings::nonempty(RR.terms[1].CALLW))) {
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_CantCallBoth),
"the terms of the relation can't be named on both sides at once",
"and because of that it's best to use a single even-handed name: "
"for instance, 'Marriage relates one person to another (called "
"the spouse).' rather than 'Employment relates one person (called "
"the boss) to one person (called the underling).'");
return FALSE;
}
if ((RR.symmetric == FALSE) && (RR.terms[0].unique) && (RR.terms[1].unique) &&
(Wordings::nonempty(RR.terms[1].CALLW))) {
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_OneToOneMiscalled),
"with a one-to-one relation which is not symmetrical "
"only the left-hand item can be given a name using 'called'",
"so this needs rephrasing to name the left in terms of the right "
"rather than vice versa. For instance, 'Transmission relates "
"one remote to one gadget (called the target).' should be "
"rephrased as 'Transmission relates one gadget (called the "
"target) to one remote.' It will then be possible to talk about "
"'the gadget of' any given remote.");
return FALSE;
}
}
@<Find the left and right domain kinds@> =
RR.terms[0].domain = RelationRequests::parse_term(TW[0], "left");
if (RR.symmetric) {
RR.terms[1].domain = RR.terms[0].domain;
} else {
RR.terms[1].domain = RelationRequests::parse_term(TW[1], "right");
}
if ((RR.terms[0].domain == NULL) || (RR.terms[1].domain == NULL)) return FALSE;
@<Infer uniqueness if not specified@> =
if (RR.terms[0].unique == NOT_APPLICABLE) {
RR.terms[0].unique = FALSE;
if ((Wordings::nonempty(RR.terms[0].CALLW)) || (RR.terms[1].unique == FALSE))
RR.terms[0].unique = TRUE;
}
if (RR.terms[1].unique == NOT_APPLICABLE) {
RR.terms[1].unique = FALSE;
if ((Wordings::nonempty(RR.terms[1].CALLW)) || (RR.terms[0].unique == FALSE))
RR.terms[1].unique = TRUE;
}
@ A term is specified as a kind:
=
kind *RelationRequests::parse_term(wording W, char *side) {
if (<k-kind-articled>(W)) return <<rp>>;
Problems::quote_source(1, current_sentence);
Problems::quote_wording(2, W);
Problems::quote_text(3, side);
StandardProblems::handmade_problem(Task::syntax_tree(), _p_(PM_RelatedKindsUnknown));
Problems::issue_problem_segment(
"In the relation definition %1, I am unable to understand the %3-hand "
"side -- I was expecting that %2 would be either the name of a kind, "
"or the name of a kind of value, but it wasn't either of those.");
Problems::issue_problem_end();
return NULL;
}

View file

@ -388,6 +388,10 @@ int waive_lp_overflows = FALSE;
int last_LP_problem_at = -1;
double latest_constructed_real = 0.0;
double LiteralPatterns::get_latest_real(void) {
return latest_constructed_real;
}
kind *LiteralPatterns::match(literal_pattern *lp, wording W, int *found) {
int matched_number = 0, overflow_16_bit_flag = FALSE, overflow_32_bit_flag = FALSE;
literal_pattern_element *sign_used_at = NULL, *element_overflow_at = NULL;
@ -2317,96 +2321,23 @@ void LiteralPatterns::log_lp_debugging_data(literal_pattern *lp) {
LiteralPatterns::comment_use_of_lp(lp);
}
@h Creating new literal patterns.
We create new LPs during traverse 1 of the parse tree. This imposes two
timing constraints:
(a) The specification sentence must come after the sentence creating the
kind of value being specified; but
(b) It must come before any sentences using constants written in this
notation.
In practice both constraints seem to be accepted by users as reasonable,
and this causes no trouble.
=
int LiteralPatterns::specifies_SMF(int task, parse_node *V, wording *NPs) {
wording SW = (NPs)?(NPs[0]):EMPTY_WORDING;
wording OW = (NPs)?(NPs[1]):EMPTY_WORDING;
switch (task) {
case ACCEPT_SMFT: /* "10'23 specifies a running time." */
if (<np-alternative-list>(SW)) {
parse_node *S = <<rp>>;
if (<np-unparsed>(OW)) {
parse_node *O = <<rp>>;
V->next = S; V->next->next = O;
return TRUE;
}
}
break;
case PASS_1_SMFT:
LiteralPatterns::new_literal_specification_list(V->next, V->next->next, NULL);
break;
}
return FALSE;
}
void LiteralPatterns::new_literal_specification(parse_node *pn) {
LiteralPatterns::new_literal_specification_list(pn->down->next, pn->down->next->next, NULL);
}
@ One can define LPs with a list of alternatives, of which the first is the
"primary alternative" and said to be the "owner" of the rest. For instance:
>> 1 tonne (in metric units, in tonnes, singular) or 2 tonnes (in metric units,
in tonnes, plural) specifies a mass scaled up by 1000.
Here we call |LiteralPatterns::new_literal_specification_list| on "1 tonne" with no owner,
and then on "2 tonnes" with the "1 tonne" LP as its owner.
=
literal_pattern *LiteralPatterns::new_literal_specification_list(parse_node *p, parse_node *q,
literal_pattern *lp_main) {
if (Node::get_type(p) == AND_NT) {
lp_main = LiteralPatterns::new_literal_specification_list(p->down, q, lp_main);
return LiteralPatterns::new_literal_specification_list(p->down->next, q, lp_main);
}
return LiteralPatterns::new_literal_specification_inner(p, q, lp_main);
}
@ The grammars for the specify sentence are quite complicated, but aren't used
recursively. So it's more convenient to have them set global variables than to
form a big parse subtree and extract the data from that; these are what they
set.
=
double LP_real_offset = 0.0, LP_real_equivalent = 0.0, LP_real_scaling_amount = 0.0;
int LP_scaling, LP_scaling_amount, LP_to_real;
int LP_equivalent; parse_node *LP_equivalent_value;
parse_node *LP_offset_value;
kind *LP_left_kind, *LP_right_kind; /* used only for dimensional rules */
kind *LP_kind_specified; /* what kind this sentence specifies */
literal_pattern *LiteralPatterns::new_literal_specification_inner(lp_specification *lps,
parse_node *p, parse_node *q, literal_pattern *owner) {
int offset = 0, integer_scaling = TRUE;
kind *K = lps->kind_specified;
@ So this is where we handle a typical specification:
=
literal_pattern *LiteralPatterns::new_literal_specification_inner(parse_node *p, parse_node *q,
literal_pattern *owner) {
int scaled = 1, scaled_dir = LP_SCALED_UP, offset = 0, integer_scaling = TRUE;
parse_node *part_np_list = NULL;
kind *K = NULL;
literal_pattern *lp = NULL; /* what we will create, if all goes well */
int notation_options = 0; literal_pattern_name *notation_groups = NULL;
wording SPW = Node::get_text(p);
@<Parse the subject noun phrase of the specifies sentence@>;
@<Parse the object noun phrase of the specifies sentence@>;
if (Kinds::FloatingPoint::uses_floating_point(K)) integer_scaling = FALSE;
if ((LP_to_real) && (integer_scaling))
if ((lps->uses_real_arithmetic) && (integer_scaling))
@<Issue problem message warning that real arithmetic is needed@>;
@<Deal with the case where a dimensionality rule is being specified@>;
@<Check that the new notation does not overlap with that of any existing LP@>;
@<Check that the kind is acceptable as the owner of a LP@>;
@<Check that any other value mentioned as an equivalent or scaled equivalent has the right kind@>;
@ -2418,7 +2349,7 @@ literal_pattern *LiteralPatterns::new_literal_specification_inner(parse_node *p,
if (LiteralPatterns::list_of_literal_forms(K) == NULL) lp->benchmark = TRUE;
LiteralPatterns::add_literal_pattern(K, lp);
if (part_np_list) {
if (lps->part_np_list) {
@<Work through parts text to assign names to the individual elements@>;
@<Check that any notes to do with optional elements are mutually compatible@>;
LiteralPatterns::define_packing_phrases(lp, K);
@ -2441,203 +2372,12 @@ literal_pattern *LiteralPatterns::new_literal_specification_inner(parse_node *p,
@d OFFSET_LPC 3
@d EQUIVALENT_LPC 4
@d OPTIONAL_LSO 1
@d PREAMBLE_OPTIONAL_LSO 2
@d WITHOUT_LEADING_ZEROS_LSO 4
@d SINGULAR_LPN 1
@d PLURAL_LPN 2
@d IN_LPN 4
@d TIMES_LPN 8
@d ABANDON_LPN 16
@<Parse the subject noun phrase of the specifies sentence@> =
LP_scaling = LP_SCALED_UP; LP_scaling_amount = 1; LP_real_scaling_amount = 1.0;
LP_real_equivalent = 0.0; LP_equivalent_value = NULL;
LP_real_offset = 0.0; LP_offset_value = NULL;
LP_to_real = FALSE;
<specifies-sentence-subject>(SPW);
SPW = GET_RW(<specifies-sentence-subject>, 1);
notation_options = <<r>>;
if (notation_options & ABANDON_LPN) return owner;
notation_groups = NULL;
if (notation_options) notation_groups = <<rp>>;
@ The following grammar is used to parse the new literal patterns defined
in a "specifies" sentence.
>> 1 tonne (in metric units, in tonnes, singular) or 2 tonnes (in metric units, in tonnes, plural) specifies a mass scaled up by 1000.
The subject nounphrase has already been converted into a list of alternatives,
divided by "or", and the following grammar removes the optional list of
groups to which the notation begins. So, for example, <specifies-sentence-subject>
is used on "1 tonne (in metric units, in tonnes, singular)". "In metric
units" and "in tonnes" are names for groups of literal patterns; note
that in English, these names always begin with "in".
However, note that a "specifies" sentence can also be used for a quite
different purpose:
>> A length times a length specifies an area.
This gives dimensional instructions about kinds, and doesn't have anything to
do with literals and their notation. It's a slightly unhappy ambiguity, but
the potential for confusion is very low. Nobody who defines a literal pattern
with the word "times" in can expect good results anyway, given that "times"
will usually be interpreted as multiplication when Inform eventually parses
such a literal. Still, to minimise clashes, we respond to "times" here only
when there is meaningful text on either side of it.
Formally, the subject noun phrase of a "specifies" sentence must be a list
of alternatives each of which matches the following:
=
<specifies-sentence-subject> ::=
... ( {<literal-pattern-group-list>} ) | ==> { pass 1 }
<k-kind-articled> times <k-kind-articled> | ==> { TIMES_LPN, - }; LP_left_kind = RP[1]; LP_right_kind = RP[2];
<s-type-expression> times <s-type-expression> | ==> @<Issue PM_MultiplyingNonKOVs problem@>
... ==> { 0, NULL }
<literal-pattern-group-list> ::=
<literal-pattern-group> <literal-pattern-group-tail> | ==> { R[1] | R[2], - }; @<Compose LPG lists@>;
<literal-pattern-group> ==> { pass 1 }
<literal-pattern-group-tail> ::=
, and <literal-pattern-group-list> | ==> { pass 1 }
,/and <literal-pattern-group-list> ==> { pass 1 }
<literal-pattern-group> ::=
singular | ==> { SINGULAR_LPN, NULL }
plural | ==> { PLURAL_LPN, NULL }
<literal-pattern-group-name> | ==> { IN_LPN, LiteralPatterns::new_lpn(EMPTY_WORDING, RP[1]) }
in ...... | ==> { IN_LPN, LiteralPatterns::new_lpn(W, NULL) }
...... ==> @<Issue PM_BadLPNameOption problem@>
@<Compose LPG lists@> =
parse_node *comp = RP[1];
if (comp == NULL) comp = RP[2];
else if (RP[2]) ((literal_pattern_name *) RP[1])->next_with_rp = RP[2];
==> { -, comp };
@<Issue PM_MultiplyingNonKOVs problem@> =
if (preform_lookahead_mode == FALSE) {
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_MultiplyingNonKOVs),
"only kinds of value can be multiplied here",
"and only in a sentence like 'A length times a length specifies an area.'");
}
==> { ABANDON_LPN, NULL }
@<Issue PM_BadLPNameOption problem@> =
if (preform_lookahead_mode == FALSE) {
Problems::quote_source(1, current_sentence);
Problems::quote_wording(2, W);
StandardProblems::handmade_problem(Task::syntax_tree(), _p_(PM_BadLPNameOption));
Problems::issue_problem_segment(
"In the specification %1, I was expecting that '%2' would be an optional "
"note about one of the notations: it should have been one of 'singular', "
"'plural' or 'in ...'.");
Problems::issue_problem_end();
}
==> { ABANDON_LPN, NULL }
@<Parse the object noun phrase of the specifies sentence@> =
LP_offset_value = NULL;
<specifies-sentence-object>(Node::get_text(q));
switch (<<r>>) {
case PARTS_LPC: part_np_list = <<rp>>; break;
case SCALING_LPC: scaled = LP_scaling_amount; scaled_dir = LP_scaling; break;
}
K = LP_kind_specified;
if (K == NULL) return owner;
@ The object noun phrase of a "specifies" sentence is required to match
the following grammar. Note that the tails are mutually exclusive; you
can't set both scaling and an equivalent, for instance.
=
<specifies-sentence-object> ::=
<kind-specified> <literal-pattern-specification-tail> | ==> { pass 2 }
<kind-specified> ==> { 0, NULL }
<kind-specified> ::=
<k-kind-articled> | ==> { 0, NULL }; LP_kind_specified = RP[1];
... ==> @<Issue PM_LPNotKOV problem@>
<literal-pattern-specification-tail> ::=
with parts <literal-pattern-part-list> | ==> { PARTS_LPC, RP[1] }
<scaling-instruction> | ==> { SCALING_LPC, - }
<scaling-instruction> offset by <s-literal> | ==> { SCALING_LPC, - }; LP_real_offset = latest_constructed_real; LP_offset_value = RP[2];
offset by <s-literal> | ==> { OFFSET_LPC, - }; LP_real_offset = latest_constructed_real; LP_offset_value = RP[1];
equivalent to <s-literal> ==> { EQUIVALENT_LPC, - }; LP_real_equivalent = latest_constructed_real; LP_equivalent_value = RP[1];
<scaling-instruction> ::=
scaled up by <cardinal-number> | ==> { SCALING_LPC, - }; LP_scaling = LP_SCALED_UP; LP_scaling_amount = R[1]; LP_real_scaling_amount = (double) LP_scaling_amount;
scaled up by <s-literal-real-number> | ==> { SCALING_LPC, - }; LP_scaling = LP_SCALED_UP; LP_scaling_amount = 1; LP_real_scaling_amount = latest_constructed_real; LP_to_real = TRUE;
scaled down by <cardinal-number> | ==> { SCALING_LPC, - }; LP_scaling = LP_SCALED_DOWN; LP_scaling_amount = R[1]; LP_real_scaling_amount = (double) LP_scaling_amount;
scaled down by <s-literal-real-number> | ==> { SCALING_LPC, - }; LP_scaling = LP_SCALED_DOWN; LP_scaling_amount = 1; LP_real_scaling_amount = latest_constructed_real; LP_to_real = TRUE;
scaled at <cardinal-number> | ==> { SCALING_LPC, - }; LP_scaling = LP_SCALED_AT; LP_scaling_amount = R[1]; LP_real_scaling_amount = (double) LP_scaling_amount;
scaled at <s-literal-real-number> ==> { SCALING_LPC, - }; LP_scaling = LP_SCALED_AT; LP_scaling_amount = 1; LP_real_scaling_amount = latest_constructed_real; LP_to_real = TRUE;
@<Issue PM_LPNotKOV problem@> =
if (preform_lookahead_mode == FALSE) {
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_LPNotKOV),
"you can only specify ways to write kinds of value",
"as created with sentences like 'A weight is a kind of value.'");
}
@ Of the optional tails, the only tricky one is the part list, which has the
following rather extensive grammar. This handles text like:
>> dollars and cents (optional, preamble optional)
The text is a list of part-names, each of which can optionally be followed
by a bracketed list of up to three options in any order.
=
<literal-pattern-part-list> ::=
<literal-pattern-part> , and <literal-pattern-part-list> | ==> { 0, RP[1] }; if (RP[1]) ((parse_node *) RP[1])->next = RP[2];
<literal-pattern-part> , <literal-pattern-part-list> | ==> { 0, RP[1] }; if (RP[1]) ((parse_node *) RP[1])->next = RP[2];
<literal-pattern-part> and <literal-pattern-part-list> | ==> { 0, RP[1] }; if (RP[1]) ((parse_node *) RP[1])->next = RP[2];
<literal-pattern-part> ==> { 0, RP[1] }
<literal-pattern-part> ::=
<np-unparsed-bal> ( <literal-pattern-part-option-list> ) | ==> { 0, RP[1] }; if (RP[1]) Annotations::write_int(*XP, lpe_options_ANNOT, R[2]);
<np-unparsed-bal> ==> { 0, RP[1] }
<literal-pattern-part-option-list> ::=
<literal-pattern-part-option> <literal-pattern-part-option-tail> | ==> { R[1] | R[2], - }
<literal-pattern-part-option> ==> { pass 1 }
<literal-pattern-part-option-tail> ::=
, and <literal-pattern-part-option-list> | ==> { pass 1 }
,/and <literal-pattern-part-option-list> ==> { pass 1 }
<literal-pattern-part-option> ::=
optional | ==> { OPTIONAL_LSO, - }
preamble optional | ==> { PREAMBLE_OPTIONAL_LSO, - }
without leading zeros | ==> { WITHOUT_LEADING_ZEROS_LSO, - }
...... ==> @<Issue PM_BadLPPartOption problem@>
@<Issue PM_BadLPPartOption problem@> =
if (preform_lookahead_mode == FALSE) {
Problems::quote_source(1, current_sentence);
Problems::quote_wording(2, W);
StandardProblems::handmade_problem(Task::syntax_tree(), _p_(PM_BadLPPartOption));
Problems::issue_problem_segment(
"In the specification %1, I was expecting that '%2' would be an optional "
"note about one of the parts: it should have been one of 'optional', "
"'preamble optional' or 'without leading zeros'.");
Problems::issue_problem_end();
}
==> { 0, - };
@ That's it for syntax: now back to semantics.
@<Check that any other value mentioned as an equivalent or scaled equivalent has the right kind@> =
if (LP_equivalent_value) {
if (Rvalues::is_CONSTANT_of_kind(LP_equivalent_value, K)) {
scaled_dir = LP_SCALED_UP; scaled = Rvalues::to_encoded_notation(LP_equivalent_value);
if (lps->equivalent_value) {
if (Rvalues::is_CONSTANT_of_kind(lps->equivalent_value, K)) {
lps->scaled_dir = LP_SCALED_UP; lps->scale_factor = Rvalues::to_encoded_notation(lps->equivalent_value);
} else {
StandardProblems::sentence_problem_with_note(Task::syntax_tree(), _p_(PM_BadLPEquivalent),
"the equivalent value needs to be a constant of the same kind "
@ -2648,9 +2388,9 @@ by a bracketed list of up to three options in any order.
}
}
if (LP_offset_value) {
if (Rvalues::is_CONSTANT_of_kind(LP_offset_value, K)) {
offset = Rvalues::to_encoded_notation(LP_offset_value);
if (lps->offset_value) {
if (Rvalues::is_CONSTANT_of_kind(lps->offset_value, K)) {
offset = Rvalues::to_encoded_notation(lps->offset_value);
} else {
StandardProblems::sentence_problem_with_note(Task::syntax_tree(), _p_(PM_BadLPOffset),
"the offset value needs to be a constant of the same kind "
@ -2675,12 +2415,12 @@ does not throw a problem message as being a bar which is out of range
@<Check that the new notation does not overlap with that of any existing LP@> =
waive_lp_overflows = TRUE;
kind *K = NULL; if (<s-literal>(SPW)) K = Rvalues::to_kind(<<rp>>);
kind *K = NULL; if (<s-literal>(lps->notation_wording)) K = Rvalues::to_kind(<<rp>>);
waive_lp_overflows = FALSE;
if (K) {
Problems::quote_source(1, current_sentence);
Problems::quote_kind(2, K);
Problems::quote_wording(3, SPW);
Problems::quote_wording(3, lps->notation_wording);
StandardProblems::handmade_problem(Task::syntax_tree(), _p_(PM_DuplicateUnitSpec));
Problems::issue_problem_segment(
"In the sentence %1, it looks as if you intend to give a new meaning "
@ -2705,17 +2445,6 @@ does not throw a problem message as being a bar which is out of range
Problems::issue_problem_end();
return owner;
@ Note that we don't create a new LP structure if the following happens:
@<Deal with the case where a dimensionality rule is being specified@> =
if (notation_options == TIMES_LPN) {
Kinds::Dimensions::dim_set_multiplication(LP_left_kind, LP_right_kind, K);
return owner;
}
@ This checking did not apply to the dimensionality rules case, which looks
after itself.
@<Check that the kind is acceptable as the owner of a LP@> =
if (Kinds::Behaviour::is_built_in(K)) {
if (Kinds::Behaviour::get_index_priority(K) == 0)
@ -2742,42 +2471,38 @@ after itself.
@ All the hard work here was done during parsing.
@<Create the new literal pattern structure@> =
lp = LiteralPatterns::lp_new(K, SPW);
if (LP_equivalent_value) LP_real_scaling_amount = LP_real_equivalent;
if (scaled <= 0) {
lp = LiteralPatterns::lp_new(K, lps->notation_wording);
if (lps->equivalent_value) lps->scale_factor_as_double = lps->equivalent_value_as_double;
if (lps->scale_factor <= 0) {
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_LPNonpositiveScaling),
"you can only scale by a positive multiple",
"so something like 'scaled up by -1' is not allowed.");
scaled = 1;
lps->scale_factor = 1;
}
lp->scaling = Kinds::Scalings::new(integer_scaling, scaled_dir,
scaled, LP_real_scaling_amount, offset, LP_real_offset);
if ((scaled_dir == LP_SCALED_DOWN) && (scaled == 0)) internal_error("Oooops");
lp->scaling = Kinds::Scalings::new(integer_scaling, lps->scaled_dir,
lps->scale_factor, lps->scale_factor_as_double, offset, lps->offset_value_as_double);
if (owner == NULL) lp->primary_alternative = TRUE;
if (LP_equivalent_value) lp->equivalent_unit = TRUE;
if (notation_options & SINGULAR_LPN) lp->singular_form_only = TRUE;
if (notation_options & PLURAL_LPN) lp->plural_form_only = TRUE;
if (notation_options & IN_LPN) {
literal_pattern_name *lpn;
for (lpn = notation_groups; lpn; lpn = lpn->next_with_rp)
lpn->can_use_this_lp = lp;
}
if (lps->equivalent_value) lp->equivalent_unit = TRUE;
if (lps->notation_options & SINGULAR_LPN) lp->singular_form_only = TRUE;
if (lps->notation_options & PLURAL_LPN) lp->plural_form_only = TRUE;
for (literal_pattern_name *lpn = lps->notation_groups; lpn; lpn = lpn->next_with_rp)
lpn->can_use_this_lp = lp;
@ Each word is either a whole token in itself, or a stream of tokens representing
alphabetic vs numeric pieces of a word:
@<Break down the specification text into tokens and elements@> =
int i, j, tc, ec;
for (i=0, tc=0, ec=0; i<Wordings::length(SPW); i++) {
for (i=0, tc=0, ec=0; i<Wordings::length(lps->notation_wording); i++) {
literal_pattern_token new_token;
int digit_found = FALSE;
wchar_t *text_of_word = Lexer::word_raw_text(Wordings::first_wn(SPW)+i);
wchar_t *text_of_word = Lexer::word_raw_text(Wordings::first_wn(lps->notation_wording)+i);
for (j=0; text_of_word[j]; j++) if (Characters::isdigit(text_of_word[j])) digit_found = TRUE;
if (digit_found)
@<Break up the word into at least one element token, and perhaps also character tokens@>
else {
new_token = LiteralPatterns::lpt_new(WORD_LPT, TRUE);
new_token.token_wn = Wordings::first_wn(SPW)+i;
new_token.token_wn = Wordings::first_wn(lps->notation_wording)+i;
@<Add new token to LP@>;
}
}
@ -2878,7 +2603,7 @@ this is deferred until all elements exist, at which point we --
@<Work through parts text to assign names to the individual elements@> =
int i;
parse_node *p;
for (i=0, p=part_np_list; (i<lp->no_lp_elements) && (p); i++, p = p->next) {
for (i=0, p=lps->part_np_list; (i<lp->no_lp_elements) && (p); i++, p = p->next) {
literal_pattern_element *lpe = &(lp->lp_elements[i]);
lpe->element_name = Node::get_text(p);
int O = Annotations::read_int(p, lpe_options_ANNOT);
@ -2928,12 +2653,11 @@ optional, and it must not be the first.
return owner;
}
@ Group names are created when first seen (in production (d)
of <literal-pattern-group>): the following recognises one which has been
seen before.
@ Group names are created when first seen; the following recognises one which
has been seen before.
=
<literal-pattern-group-name> internal {
<lp-group-name> internal {
literal_pattern_name *lpn;
LOOP_OVER(lpn, literal_pattern_name) {
if (Wordings::match(lpn->notation_name, W)) {

View file

@ -83,77 +83,6 @@ other languages may as well drop the hyphens.
enclosure |
room-containment
@h Creation, Stage I.
The creation of relations happens in two stages. First, when the parse tree is
being organised into sentences, we call the following routine the moment a
relation definition has been found. (This is important because it may affect
the parsing of subsequent sentences in the source text.) The predicate we make
is initially sketchy: but by existing, and having a name, it can be used in
subsequent verb definitions, and then subsequent sentences using those newly
defined verbs can be properly parsed all during the same run-through of the
parse tree.
@ This handles the special meaning "X relates Y to Z".
=
<new-relation-sentence-object> ::=
<np-unparsed> to <np-unparsed> ==> { TRUE, RP[1] }; ((parse_node *) RP[1])->next = RP[2];
@ =
int Relations::new_relation_SMF(int task, parse_node *V, wording *NPs) {
wording SW = (NPs)?(NPs[0]):EMPTY_WORDING;
wording OW = (NPs)?(NPs[1]):EMPTY_WORDING;
switch (task) { /* "Knowledge relates various people to various things." */
case ACCEPT_SMFT:
if (<new-relation-sentence-object>(OW)) {
parse_node *O = <<rp>>;
<np-unparsed>(SW);
V->next = <<rp>>;
V->next->next = O;
Relations::parse_new(V);
return TRUE;
}
break;
case PASS_1_SMFT:
Relations::parse_new_relation_further(V);
break;
}
return FALSE;
}
@ The following grammar is used to parse the subject noun phrase of
sentences like
>> Acquaintance relates people to each other.
Since the point is to create something new, the only stipulation is that the
text of the subject mustn't be an existing relation name.
=
<relates-sentence-subject> ::=
<relation-name> | ==> @<Issue PM_RelationExists problem@>
... ==> { TRUE, - }
@<Issue PM_RelationExists problem@> =
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_RelationExists),
"that relation already exists",
"and cannot have its definition amended now.");
==> { FALSE, - };
@ =
void Relations::parse_new(parse_node *PN) {
<relates-sentence-subject>(Node::get_text(PN->next));
if (<<r>>) {
wording W = Node::get_text(PN->next);
W = Wordings::truncate(W, 31);
binary_predicate *bp = BinaryPredicates::make_pair_sketchily(
WordAssemblages::from_wording(W), Relation_OtoO);
Node::set_new_relation_here(PN->next, bp);
}
}
@h Creation, Stage II.
In the second stage, which is reached during the first traverse of
sentences to work through the assertions, we parse the specification of the
@ -166,45 +95,25 @@ can be found from these different outcomes, but inevitably ends up
splitting into cases.
=
void Relations::parse_new_relation_further(parse_node *PN) {
wording RW = Node::get_text(PN->next); /* relation name */
wording FW = Node::get_text(PN->next->next); /* left term declaration, before "to" */
wording SW = Node::get_text(PN->next->next->next); /* right term declaration, after "to" */
binary_predicate *bp = Node::get_new_relation_here(PN->next);
if (bp == NULL) return; /* to recover from problem */
void Relations::new(binary_predicate *bp,
relation_request *RR) {
binary_predicate *bpr = bp->reversal;
property *prn = NULL; /* used for run-time storage of this relation */
inter_name *i6_prn_name = NULL; /* the I6 identifier for this property */
kind *storage_kind = NULL; /* what kind, if any, might be stored in it */
inference_subject *storage_infs = NULL; /* summing these up */
kind *left_kind = NULL, *right_kind = NULL; /* kind requirement */
wording CONW = EMPTY_WORDING; /* text of test condition if any */
int left_unique = NOT_APPLICABLE, /* |TRUE| for one, |FALSE| for various, */
right_unique = NOT_APPLICABLE, /* ...or |NOT_APPLICABLE| for unspecified */
symmetric = FALSE, /* a symmetric relation? */
equivalence = FALSE, /* an equivalence ("in groups") relation? */
rvno = FALSE, /* relate values not objects? */
frf = FALSE, /* use fast route-finding? */
int rvno = FALSE, /* relate values not objects? */
dynamic = FALSE, /* use dynamic memory allocation for storage? */
provide_prn = FALSE, /* allocate the storage property to the kind? */
calling_made = FALSE; /* one of the terms has been given a name */
if (bp == NULL) internal_error("BP in relation not initially parsed");
if (Wordings::length(RW) > MAX_WORDS_IN_ASSEMBLAGE-4) {
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_RelationNameTooLong),
"this is too long a name for a single relation to have",
"and would become unwieldy.");
RW = Wordings::truncate(RW, MAX_WORDS_IN_ASSEMBLAGE-4);
}
@<Parse the classification variables and use them to fill in the BP term details@>;
if (rvno) { bp->relates_values_not_objects = TRUE; bpr->relates_values_not_objects = TRUE; }
if (frf) { bp->fast_route_finding = TRUE; bpr->fast_route_finding = TRUE; }
if (RR->frf) { bp->fast_route_finding = TRUE; bpr->fast_route_finding = TRUE; }
if (prn) {
bp->i6_storage_property = prn; bpr->i6_storage_property = prn;
Properties::Valued::set_stored_relation(prn, bp);
@ -217,16 +126,16 @@ void Relations::parse_new_relation_further(parse_node *PN) {
}
BinaryPredicates::mark_as_needed(bp);
if (Wordings::nonempty(CONW)) @<Complete as a relation-by-routine BP@>
else if (equivalence) @<Complete as an equivalence-relation BP@>
else if (left_unique) {
if (right_unique) {
if (symmetric) @<Complete as a symmetric one-to-one BP@>
if (Wordings::nonempty(RR->CONW)) @<Complete as a relation-by-routine BP@>
else if (RR->equivalence) @<Complete as an equivalence-relation BP@>
else if (RR->terms[0].unique) {
if (RR->terms[1].unique) {
if (RR->symmetric) @<Complete as a symmetric one-to-one BP@>
else @<Complete as an asymmetric one-to-one BP@>;
} else @<Complete as a one-to-various BP@>;
} else {
if (right_unique) @<Complete as a various-to-one BP@>
else if (symmetric) @<Complete as a symmetric various-to-various BP@>
if (RR->terms[1].unique) @<Complete as a various-to-one BP@>
else if (RR->symmetric) @<Complete as a symmetric various-to-various BP@>
else @<Complete as an asymmetric various-to-various BP@>;
}
@ -241,10 +150,10 @@ void Relations::parse_new_relation_further(parse_node *PN) {
@<Add in the reducing functions@>;
}
if ((Kinds::Compare::lt(left_kind, K_object)) || (Kinds::Compare::lt(right_kind, K_object))) {
if ((Kinds::Compare::lt(RR->terms[0].domain, K_object)) || (Kinds::Compare::lt(RR->terms[1].domain, K_object))) {
relation_guard *rg = CREATE(relation_guard);
rg->check_L = NULL; if (Kinds::Compare::lt(left_kind, K_object)) rg->check_L = left_kind;
rg->check_R = NULL; if (Kinds::Compare::lt(right_kind, K_object)) rg->check_R = right_kind;
rg->check_L = NULL; if (Kinds::Compare::lt(RR->terms[0].domain, K_object)) rg->check_L = RR->terms[0].domain;
rg->check_R = NULL; if (Kinds::Compare::lt(RR->terms[1].domain, K_object)) rg->check_R = RR->terms[1].domain;
rg->inner_test = bp->test_function;
rg->inner_make_true = bp->make_true_function;
rg->inner_make_false = bp->make_false_function;
@ -290,102 +199,13 @@ void Relations::parse_new_relation_further(parse_node *PN) {
LOGIF(RELATION_DEFINITIONS, "Defined the binary predicate:\n$2\n", bp);
}
@ The following grammar is used to parse the declaration of new relations in
sentences like
>> Acquaintance relates people to each other.
In such a sentence, we'll call "people" the left object noun phrase and
"each other" the right object noun phrase. The way <relation-term-basic>
is written below, it seems to match any text, but that's just an implementation
convenience; the |...| text will eventually have to match <k-kind> and thus
to be the name of a kind, possibly in the plural.
=
<relates-sentence-left-object> ::=
<relation-term-basic> ( called ... ) | ==> { R[1] | CALLED_RBIT, - }
<relation-term-basic> ==> { pass 1 }
<relates-sentence-right-object> ::=
<relation-term-right-named> with fast route-finding | ==> { R[1] | FRF_RBIT, - }
<relation-term-right-named> when ... | ==> { R[1] | WHEN_RBIT, - }
<relation-term-right-named> ==> { pass 1 }
<relation-term-right-named> ::=
<relation-term-right> ( called ... ) | ==> { R[1] | CALLED_RBIT, - }
<relation-term-right> ==> { pass 1 }
<relation-term-right> ::=
{another} | ==> { ANOTHER_RBIT, - }
{each other} | ==> { EACHOTHER_RBIT, - }
{each other in groups} | ==> { GROUPS_RBIT, - }
<relation-term-basic> ==> { pass 1 }
<relation-term-basic> ::=
one ... | ==> { ONE_RBIT, - }
various ... | ==> { VAR_RBIT, - }
... ==> { 0, - }
@h The parsing phase.
Our aims here are:
(i) to decide if the definition is valid, and reject it with a suitable
problem message if not, returning from the current routine;
(ii) to fill in the classification variables |left_unique|, |symmetric|, etc.,
as defined above;
(iii) to choose a property which will provide run-time storage for this
relation, if it needs any; and
(iv) to set |bp->term_details[0]| and |...[1]| with the kinds, names and
logical properties of the two terms of the BP being defined.
@
@d FRF_RBIT 1
@d ONE_RBIT 2
@d VAR_RBIT 4
@d ANOTHER_RBIT 8
@d EACHOTHER_RBIT 16
@d GROUPS_RBIT 32
@d WHEN_RBIT 64
@d CALLED_RBIT 128
@<Parse the classification variables and use them to fill in the BP term details@> =
LOGIF(RELATION_DEFINITIONS,
"Relation definition of %W: left term: '%W', right term: '%W'\n",
RW, FW, SW);
wording LCALLW = EMPTY_WORDING; /* left term "calling" name */
wording RCALLW = EMPTY_WORDING; /* right term "calling" name */
<relates-sentence-left-object>(FW);
int left_bitmap = <<r>>;
if (left_bitmap & CALLED_RBIT) LCALLW = GET_RW(<relates-sentence-left-object>, 1);
FW = GET_RW(<relation-term-basic>, 1);
<relates-sentence-right-object>(SW);
int right_bitmap = <<r>>;
if (right_bitmap & CALLED_RBIT) RCALLW = GET_RW(<relation-term-right-named>, 1);
SW = GET_RW(<relation-term-basic>, 1);
if (right_bitmap & WHEN_RBIT)
CONW = GET_RW(<relates-sentence-right-object>, 1);
@<Find term multiplicities and use of fast route-finding@>;
@<Detect use of a condition for a test-only relation@>;
@<Detect callings for the terms of the relation@>;
@<Detect use of symmetry in definition of second term@>;
@<Vet the use of callings for the terms of the relation@>;
@<Work out the kinds of the terms in the relation@>;
if (left_unique == NOT_APPLICABLE) {
left_unique = FALSE;
if ((Wordings::nonempty(LCALLW)) || (right_unique == FALSE)) left_unique = TRUE;
}
if (right_unique == NOT_APPLICABLE) {
right_unique = FALSE;
if ((Wordings::nonempty(RCALLW)) || (left_unique == FALSE)) right_unique = TRUE;
}
if (Wordings::empty(CONW)) @<Determine property used for run-time storage@>;
if (Wordings::empty(RR->CONW)) @<Determine property used for run-time storage@>;
@<Fill in the BP term details based on the left- and right- variables@>;
@ -393,139 +213,24 @@ logical properties of the two terms of the BP being defined.
bp_term_details left_bptd, right_bptd;
inference_subject *left_infs = NULL, *right_infs = NULL;
if (left_kind) left_infs = Kinds::Knowledge::as_subject(left_kind);
if (right_kind) right_infs = Kinds::Knowledge::as_subject(right_kind);
if (RR->terms[0].domain) left_infs = Kinds::Knowledge::as_subject(RR->terms[0].domain);
if (RR->terms[1].domain) right_infs = Kinds::Knowledge::as_subject(RR->terms[1].domain);
left_bptd = BinaryPredicates::full_new_term(left_infs, left_kind, LCALLW, NULL);
right_bptd = BinaryPredicates::full_new_term(right_infs, right_kind, RCALLW, NULL);
left_bptd = BinaryPredicates::full_new_term(left_infs, RR->terms[0].domain, RR->terms[0].CALLW, NULL);
right_bptd = BinaryPredicates::full_new_term(right_infs, RR->terms[1].domain, RR->terms[1].CALLW, NULL);
bp->term_details[0] = left_bptd; bp->term_details[1] = right_bptd;
bpr->term_details[0] = right_bptd; bpr->term_details[1] = left_bptd;
@ We set word ranges for the condition (if any) and the callings (if any),
whittling down the word ranges for the left and right specifications if
these are clipped away, and also look at the multiplicities.
@<Find term multiplicities and use of fast route-finding@> =
if (left_bitmap & ONE_RBIT) left_unique = TRUE;
if (left_bitmap & VAR_RBIT) left_unique = FALSE;
if (right_bitmap & ONE_RBIT) right_unique = TRUE;
if (right_bitmap & VAR_RBIT) right_unique = FALSE;
if (right_bitmap & FRF_RBIT) frf = TRUE;
if (frf && (left_unique != FALSE) && (right_unique != FALSE)) {
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_FRFUnavailable),
"fast route-finding is only possible with various-to-various "
"relations",
"though this doesn't matter because with other relations the "
"standard route-finding algorithm is efficient already.");
return;
}
@ When a relation is said to hold depending on a condition to be tested at
run-time, it is meaningless to tell Inform anything about the uniqueness of
terms in the domain: a relation might be one-to-one at the start of play
but become various-to-various later on, as the outcomes of these tests
change. So we reject any such misleading syntax.
@<Detect use of a condition for a test-only relation@> =
if (right_bitmap & WHEN_RBIT) {
if ((left_unique != NOT_APPLICABLE) || (right_unique != NOT_APPLICABLE)) {
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_OneOrVariousWithWhen),
"this relation is a mixture of different syntaxes",
"and must be simplified. If it is going to specify 'one' or "
"'various' then it cannot also say 'when' the relation holds.");
return;
}
}
@ Callings are used to give names to the terms on each side of the relation,
e.g.,
>> Lock-fitting relates one thing (called the matching key) to various things.
@<Detect callings for the terms of the relation@> =
if ((left_bitmap & CALLED_RBIT) || (right_bitmap & CALLED_RBIT))
if ((Wordings::nonempty(RR->terms[0].CALLW)) || (Wordings::nonempty(RR->terms[1].CALLW)))
calling_made = TRUE;
@ The second term can be given in several special ways to indicate symmetry
between the two terms. This is more than a declaration that the left and
right terms belong to the same domain set (though that is true): it says
that $R(x, y)$ is true if and only if $R(y, x)$ is true.
@<Detect use of symmetry in definition of second term@> =
int specified_one = left_unique;
if (right_bitmap & ANOTHER_RBIT) {
symmetric = TRUE; left_unique = TRUE; right_unique = TRUE;
}
if (right_bitmap & EACHOTHER_RBIT) {
symmetric = TRUE; left_unique = FALSE; right_unique = FALSE;
}
if (right_bitmap & GROUPS_RBIT) {
symmetric = TRUE; left_unique = FALSE; right_unique = FALSE; equivalence = TRUE;
}
if ((specified_one == TRUE) && (left_unique == FALSE)) {
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_BothOneAndMany),
"the left-hand term in this relation seems to be both 'one' thing "
"and also many things",
"given the mention of 'each other'. Try removing the 'one'.");
return;
}
@ To give a name to one term implies some degree of uniqueness about it.
But that only makes sense if there is indeed some uniqueness involved,
because otherwise it is unclear what the name refers to. Who is "the
greeter of the Queen of Sheba" given the following definition?
>> Acquaintance relates various people (called the greeter) to various people.
Because of that, callings are only allowed in certain circumstances. An
exception is made -- that is, they are always allowed -- where the relation
tests a given condition, because then the names identify the terms, e.g.,
>> Divisibility relates a number (called N) to a number (called M) when the remainder after dividing M by N is 0.
Here the names "N" and "M" unambiguously refer to the terms being tested
at this moment, and have no currency beyond that context.
@<Vet the use of callings for the terms of the relation@> =
if (Wordings::empty(CONW)) {
if ((left_unique == FALSE) && (Wordings::nonempty(LCALLW))) {
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_CantCallLeft),
"the left-hand term of this relation is not unique",
"so you cannot assign a name to it using 'called'.");
return;
}
if ((right_unique == FALSE) && (Wordings::nonempty(RCALLW))) {
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_CantCallRight),
"the right-hand term of this relation is not unique",
"so you cannot assign a name to it using 'called'.");
return;
}
if ((Wordings::nonempty(LCALLW)) && (Wordings::nonempty(RCALLW))) {
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_CantCallBoth),
"the terms of the relation can't be named on both sides at once",
"and because of that it's best to use a single even-handed name: "
"for instance, 'Marriage relates one person to another (called "
"the spouse).' rather than 'Employment relates one person (called "
"the boss) to one person (called the underling).'");
return;
}
if ((symmetric == FALSE) && (left_unique) && (right_unique) && (Wordings::nonempty(RCALLW))) {
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_OneToOneMiscalled),
"with a one-to-one relation which is not symmetrical "
"only the left-hand item can be given a name using 'called'",
"so this needs rephrasing to name the left in terms of the right "
"rather than vice versa. For instance, 'Transmission relates "
"one remote to one gadget (called the target).' should be "
"rephrased as 'Transmission relates one gadget (called the "
"target) to one remote.' It will then be possible to talk about "
"'the gadget of' any given remote.");
return;
}
}
@ Here we find out the kind which forms the domain on either side. Ideally
we want each to be a fixed-size and fairly small domain set; actually, best
of all is for both kinds to be within "object", since that can be stored
@ -533,23 +238,17 @@ very efficiently, and the worst case is to be forced into "dynamic" storage:
this means using up heap memory allocated dynamically at run-time.
@<Work out the kinds of the terms in the relation@> =
if (Relations::parse_relation_term_type(FW, &left_kind, "left") == FALSE) return;
if (symmetric) {
right_kind = left_kind;
} else {
if (Relations::parse_relation_term_type(SW, &right_kind, "right") == FALSE) return;
}
rvno = TRUE;
if ((Kinds::Compare::le(left_kind, K_object)) &&
(Kinds::Compare::le(right_kind, K_object))) rvno = FALSE;
if ((Kinds::Compare::le(RR->terms[0].domain, K_object)) &&
(Kinds::Compare::le(RR->terms[1].domain, K_object))) rvno = FALSE;
if (Wordings::empty(CONW)) {
if ((Kinds::Compare::lt(left_kind, K_object) == FALSE) &&
(Relations::check_finite_range(left_kind) == FALSE)) dynamic = TRUE;
if ((Kinds::Compare::lt(right_kind, K_object) == FALSE) &&
(symmetric == FALSE) &&
(Relations::check_finite_range(right_kind) == FALSE)) dynamic = TRUE;
if (Wordings::empty(RR->CONW)) {
if ((Kinds::Compare::lt(RR->terms[0].domain, K_object) == FALSE) &&
(Relations::check_finite_range(RR->terms[0].domain) == FALSE)) dynamic = TRUE;
if ((Kinds::Compare::lt(RR->terms[1].domain, K_object) == FALSE) &&
(RR->symmetric == FALSE) &&
(Relations::check_finite_range(RR->terms[1].domain) == FALSE)) dynamic = TRUE;
}
@ All forms of relation we can produce from here use an I6 property for
@ -559,36 +258,36 @@ callings, then it gets a name like "concealment relation storage", and is
omitted from the index.
@<Determine property used for run-time storage@> =
if (Wordings::nonempty(LCALLW)) {
prn = Properties::Valued::obtain_within_kind(LCALLW, left_kind);
if (Wordings::nonempty(RR->terms[0].CALLW)) {
prn = Properties::Valued::obtain_within_kind(RR->terms[0].CALLW, RR->terms[0].domain);
if (prn == NULL) return;
} else if (Wordings::nonempty(RCALLW)) {
prn = Properties::Valued::obtain_within_kind(RCALLW, right_kind);
} else if (Wordings::nonempty(RR->terms[1].CALLW)) {
prn = Properties::Valued::obtain_within_kind(RR->terms[1].CALLW, RR->terms[1].domain);
if (prn == NULL) return;
} else {
word_assemblage pw_wa =
PreformUtilities::merge(<relation-storage-construction>, 0,
WordAssemblages::from_wording(RW));
WordAssemblages::from_wording(RR->RW));
wording PW = WordAssemblages::to_wording(&pw_wa);
prn = Properties::Valued::obtain_within_kind(PW, K_object);
if (prn == NULL) return;
Properties::exclude_from_index(prn);
}
i6_prn_name = Properties::iname(prn);
storage_kind = left_kind;
storage_kind = RR->terms[0].domain;
kind *PK = NULL;
if (left_unique) {
storage_kind = right_kind;
if (left_kind) PK = left_kind;
} else if (right_unique) {
storage_kind = left_kind;
if (right_kind) PK = right_kind;
if (RR->terms[0].unique) {
storage_kind = RR->terms[1].domain;
if (RR->terms[0].domain) PK = RR->terms[0].domain;
} else if (RR->terms[1].unique) {
storage_kind = RR->terms[0].domain;
if (RR->terms[1].domain) PK = RR->terms[1].domain;
}
if ((PK) && (Kinds::Compare::le(PK, K_object) == FALSE)) Properties::Valued::set_kind(prn, PK);
if (storage_kind) storage_infs = Kinds::Knowledge::as_subject(storage_kind);
else storage_infs = NULL;
if (Kinds::Compare::le(storage_kind, K_object) == FALSE) bp->storage_kind = storage_kind;
if (((left_unique) || (right_unique)) && (PK) &&
if (((RR->terms[0].unique) || (RR->terms[1].unique)) && (PK) &&
(Kinds::Compare::le(PK, K_object) == FALSE))
Properties::Valued::now_used_for_non_typesafe_relation(prn);
@ -729,7 +428,7 @@ K to L when (some condition)".
package_request *P = BinaryPredicates::package(bp);
bp->bp_by_routine_iname = Hierarchy::make_iname_in(RELATION_FN_HL, P);
bp->test_function = Calculus::Schemas::new("(%n(*1,*2))", bp->bp_by_routine_iname);
bp->condition_defn_text = CONW;
bp->condition_defn_text = RR->CONW;
@ The left- and right- local variables above provide us with convenient
aliases for the entries which will end up in the |bp_term_details|
@ -747,21 +446,21 @@ have the form $B(x, f_1(x))$.
@<Add in the reducing functions@> =
if (i6_prn_name) {
i6_schema *f0 = NULL, *f1 = NULL;
if (left_unique) {
if (right_kind) {
if (Kinds::Compare::le(right_kind, K_object))
if (RR->terms[0].unique) {
if (RR->terms[1].domain) {
if (Kinds::Compare::le(RR->terms[1].domain, K_object))
f0 = Calculus::Schemas::new("(*1.%n)", i6_prn_name);
else
f0 = Calculus::Schemas::new("(GProperty(%k, *1, %n))",
right_kind, i6_prn_name);
RR->terms[1].domain, i6_prn_name);
}
} else if (right_unique) {
if (left_kind) {
if (Kinds::Compare::le(left_kind, K_object))
} else if (RR->terms[1].unique) {
if (RR->terms[0].domain) {
if (Kinds::Compare::le(RR->terms[0].domain, K_object))
f1 = Calculus::Schemas::new("(*1.%n)", i6_prn_name);
else
f1 = Calculus::Schemas::new("(GProperty(%k, *1, %n))",
left_kind, i6_prn_name);
RR->terms[0].domain, i6_prn_name);
}
}
if (f0) BinaryPredicates::set_term_function(&(bp->term_details[0]), f0);
@ -784,25 +483,6 @@ to have a name:
<relation-storage-construction> ::=
... relation storage
@h Parsing utilities.
A term is specified as a kind.
=
int Relations::parse_relation_term_type(wording W, kind **set_K, char *side) {
if (<k-kind-articled>(W)) { *set_K = <<rp>>; return TRUE; }
*set_K = NULL;
Problems::quote_source(1, current_sentence);
Problems::quote_wording(2, W);
Problems::quote_text(3, side);
StandardProblems::handmade_problem(Task::syntax_tree(), _p_(PM_RelatedKindsUnknown));
Problems::issue_problem_segment(
"In the relation definition %1, I am unable to understand the %3-hand "
"side -- I was expecting that %2 would be either the name of a kind, "
"or the name of a kind of value, but it wasn't either of those.");
Problems::issue_problem_end();
return FALSE;
}
@ A modest utility, to check for a case we forbid because of the prohibitive
(or anyway unpredictable) run-time storage it would imply.

View file

@ -41,6 +41,9 @@ Chapter 4: Requests
Test Requests
Define by Table Requests
Rule Placement Requests
New Activity Requests
New Literal Pattern Requests
New Relation Requests
Chapter 5: Assertions
"Turning regular assertion sentences into propositions about the model world."

View file

@ -53,10 +53,6 @@ no need for rescaling with real arithmetic.
We can't know the values of |M| they end up with until all have been
defined.
@d LP_SCALED_UP 1
@d LP_SCALED_DOWN -1
@d LP_SCALED_AT 2
=
typedef struct scaling_transformation {
int use_integer_scaling; /* or if not, use real */

View file

@ -99,6 +99,16 @@ void Node::set_type_and_clear_annotations(parse_node *pn, node_type_t nt) {
int Node::get_score(parse_node *pn) { return pn->score; }
void Node::set_score(parse_node *pn, int s) { pn->score = s; }
@h Composition.
This simply means stringing two nodes together into a list.
=
parse_node *Node::compose(parse_node *A, parse_node *B) {
if (A == NULL) return B;
A->next = B;
return A;
}
@h Copying parse nodes.
If we want to duplicate a parse node, we cannot do so with a shallow bit copy:
the node points to a list of its annotations, and the duplicated node would