1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-07-01 06:24:58 +03:00

Added implied and location pronouns

This commit is contained in:
Graham Nelson 2020-07-26 19:10:16 +01:00
parent 8346b618bb
commit e4be15c0f4
44 changed files with 2204 additions and 2170 deletions

File diff suppressed because one or more lines are too long

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/>Adjective Meanings - <a href="4-am.html#SP22">&#167;22</a>, <a href="4-am.html#SP23">&#167;23</a>, <a href="4-am.html#SP24">&#167;24</a><br/>Instances - <a href="5-ins.html#SP6_2">&#167;6.2</a>, <a href="5-ins.html#SP19">&#167;19</a><br/>Index Physical World - <a href="5-ipw.html#SP3_7">&#167;3.7</a><br/>Binary Predicates - <a href="6-bp.html#SP20">&#167;20</a><br/>Relations - <a href="6-rlt.html#SP9_3_1">&#167;9.3.1</a>, <a href="6-rlt.html#SP9_3_8">&#167;9.3.8</a>, <a href="6-rlt.html#SP20_4">&#167;20.4</a><br/>Refine Parse Tree - <a href="9-rpt.html#SP1">&#167;1</a>, <a href="9-rpt.html#SP9_6">&#167;9.6</a>, <a href="9-rpt.html#SP9_6_1">&#167;9.6.1</a>, <a href="9-rpt.html#SP9_6_2">&#167;9.6.2</a>, <a href="9-rpt.html#SP9_8_5_3_1">&#167;9.8.5.3.1</a>, <a href="9-rpt.html#SP10_1">&#167;10.1</a><br/>The Creator - <a href="9-tc.html#SP8_4_1_2">&#167;8.4.1.2</a><br/>Make Assertions - <a href="9-ma.html#SP3_3_25">&#167;3.3.25</a>, <a href="9-ma.html#SP3_3_26">&#167;3.3.26</a>, <a href="9-ma.html#SP3_3_34">&#167;3.3.34</a>, <a href="9-ma.html#SP3_3_39">&#167;3.3.39</a><br/>Property Knowledge - <a href="9-pk.html#SP3">&#167;3</a><br/>Implications - <a href="9-imp.html#SP4_2_1">&#167;4.2.1</a><br/>Property Declarations - <a href="9-pd.html#SP5_6">&#167;5.6</a>, <a href="9-pd.html#SP6_1_1">&#167;6.1.1</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/>Tables of Definitions - <a href="19-tod.html#SP6_4">&#167;6.4</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/>Adjective Meanings - <a href="4-am.html#SP22">&#167;22</a>, <a href="4-am.html#SP23">&#167;23</a>, <a href="4-am.html#SP24">&#167;24</a><br/>Instances - <a href="5-ins.html#SP6_2">&#167;6.2</a>, <a href="5-ins.html#SP19">&#167;19</a><br/>Index Physical World - <a href="5-ipw.html#SP3_7">&#167;3.7</a><br/>Binary Predicates - <a href="6-bp.html#SP20">&#167;20</a><br/>Relations - <a href="6-rlt.html#SP9_3_1">&#167;9.3.1</a>, <a href="6-rlt.html#SP9_3_8">&#167;9.3.8</a>, <a href="6-rlt.html#SP20_4">&#167;20.4</a><br/>Refine Parse Tree - <a href="9-rpt.html#SP1">&#167;1</a>, <a href="9-rpt.html#SP9_6">&#167;9.6</a>, <a href="9-rpt.html#SP9_6_1">&#167;9.6.1</a>, <a href="9-rpt.html#SP9_6_2">&#167;9.6.2</a>, <a href="9-rpt.html#SP9_8_4_3_1">&#167;9.8.4.3.1</a>, <a href="9-rpt.html#SP10_1">&#167;10.1</a><br/>The Creator - <a href="9-tc.html#SP8_4_1_2">&#167;8.4.1.2</a><br/>Make Assertions - <a href="9-ma.html#SP3_3_25">&#167;3.3.25</a>, <a href="9-ma.html#SP3_3_26">&#167;3.3.26</a>, <a href="9-ma.html#SP3_3_34">&#167;3.3.34</a>, <a href="9-ma.html#SP3_3_39">&#167;3.3.39</a><br/>Property Knowledge - <a href="9-pk.html#SP3">&#167;3</a><br/>Implications - <a href="9-imp.html#SP4_2_1">&#167;4.2.1</a><br/>Property Declarations - <a href="9-pd.html#SP5_6">&#167;5.6</a>, <a href="9-pd.html#SP6_1_1">&#167;6.1.1</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/>Tables of Definitions - <a href="19-tod.html#SP6_4">&#167;6.4</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

@ -168,7 +168,7 @@ a named object or similar, so:
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="14-ds.html#SP1" class="function-link"><span class="function-syntax">Descriptions::from_proposition</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop</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">instance</span><span class="plain-syntax"> *</span><span class="function-syntax">Descriptions::to_instance</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">Descriptions::to_instance</span></span>:<br/>Refine Parse Tree - <a href="9-rpt.html#SP9_8_5_3_1">&#167;9.8.5.3.1</a>, <a href="9-rpt.html#SP9_8_5_5_1">&#167;9.8.5.5.1</a>, <a href="9-rpt.html#SP10_1">&#167;10.1</a><br/>Assert Propositions - <a href="12-ap.html#SP12">&#167;12</a><br/>Deciding to Defer - <a href="12-dtd.html#SP18">&#167;18</a><br/>Specifications - <a href="14-sp.html#SP4">&#167;4</a><br/>Dash - <a href="14-ds2.html#SP27">&#167;27</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">instance</span><span class="plain-syntax"> *</span><span class="function-syntax">Descriptions::to_instance</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">Descriptions::to_instance</span></span>:<br/>Refine Parse Tree - <a href="9-rpt.html#SP9_8_4_3_1">&#167;9.8.4.3.1</a>, <a href="9-rpt.html#SP9_8_4_5_1">&#167;9.8.4.5.1</a>, <a href="9-rpt.html#SP10_1">&#167;10.1</a><br/>Assert Propositions - <a href="12-ap.html#SP12">&#167;12</a><br/>Deciding to Defer - <a href="12-dtd.html#SP18">&#167;18</a><br/>Specifications - <a href="14-sp.html#SP4">&#167;4</a><br/>Dash - <a href="14-ds2.html#SP27">&#167;27</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><a href="14-sp.html#SP3" class="function-link"><span class="function-syntax">Specifications::is_description</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">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</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><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><a href="11-pr.html#SP24" class="function-link"><span class="function-syntax">Calculus::Propositions::describes_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">);</span>
@ -230,7 +230,7 @@ during play.
<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">Descriptions::is_complex</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">Descriptions::is_complex</span></span>:<br/><a href="14-ds.html#SP12_1">&#167;12.1</a><br/>Refine Parse Tree - <a href="9-rpt.html#SP9_8_5_5">&#167;9.8.5.5</a><br/>Dash - <a href="14-ds2.html#SP19_4">&#167;19.4</a>, <a href="14-ds2.html#SP19_6_2_1">&#167;19.6.2.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">Descriptions::is_complex</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">Descriptions::is_complex</span></span>:<br/><a href="14-ds.html#SP12_1">&#167;12.1</a><br/>Refine Parse Tree - <a href="9-rpt.html#SP9_8_4_5">&#167;9.8.4.5</a><br/>Dash - <a href="14-ds2.html#SP19_4">&#167;19.4</a>, <a href="14-ds2.html#SP19_6_2_1">&#167;19.6.2.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="14-sp.html#SP3" class="function-link"><span class="function-syntax">Specifications::is_description</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">return</span><span class="plain-syntax"> </span><a href="11-pr.html#SP13" class="function-link"><span class="function-syntax">Calculus::Propositions::is_complex</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>
@ -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="9-rpt.html#SP9_8_5_3_1">&#167;9.8.5.3.1</a>, <a href="9-rpt.html#SP9_8_5_5_1">&#167;9.8.5.5.1</a>, <a href="9-rpt.html#SP10">&#167;10</a>, <a href="9-rpt.html#SP10_3">&#167;10.3</a><br/>Property Knowledge - <a href="9-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="9-rpt.html#SP9_8_4_3_1">&#167;9.8.4.3.1</a>, <a href="9-rpt.html#SP9_8_4_5_1">&#167;9.8.4.5.1</a>, <a href="9-rpt.html#SP10">&#167;10</a>, <a href="9-rpt.html#SP10_3">&#167;10.3</a><br/>Property Knowledge - <a href="9-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="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>
@ -331,7 +331,7 @@ a list. It's sometimes convenient to loop through this list:
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="11-pr.html#SP35" class="function-link"><span class="function-syntax">Calculus::Propositions::from_spec</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="identifier-syntax">quantifier</span><span class="plain-syntax"> *</span><span class="function-syntax">Descriptions::get_quantifier</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">Descriptions::get_quantifier</span></span>:<br/><a href="14-ds.html#SP8">&#167;8</a><br/>Refine Parse Tree - <a href="9-rpt.html#SP9_8_5_3">&#167;9.8.5.3</a>, <a href="9-rpt.html#SP9_8_5_3_1">&#167;9.8.5.3.1</a><br/>Deciding to Defer - <a href="12-dtd.html#SP13">&#167;13</a><br/>Dash - <a href="14-ds2.html#SP11_9_1_2_3_3">&#167;11.9.1.2.3.3</a>, <a href="14-ds2.html#SP19_5_3">&#167;19.5.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">quantifier</span><span class="plain-syntax"> *</span><span class="function-syntax">Descriptions::get_quantifier</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">Descriptions::get_quantifier</span></span>:<br/><a href="14-ds.html#SP8">&#167;8</a><br/>Refine Parse Tree - <a href="9-rpt.html#SP9_8_4_3">&#167;9.8.4.3</a>, <a href="9-rpt.html#SP9_8_4_3_1">&#167;9.8.4.3.1</a><br/>Deciding to Defer - <a href="12-dtd.html#SP13">&#167;13</a><br/>Dash - <a href="14-ds2.html#SP11_9_1_2_3_3">&#167;11.9.1.2.3.3</a>, <a href="14-ds2.html#SP19_5_3">&#167;19.5.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="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="14-sp.html#SP3" class="function-link"><span class="function-syntax">Specifications::is_description</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">return</span><span class="plain-syntax"> </span><a href="11-ap.html#SP9" class="function-link"><span class="function-syntax">Calculus::Atoms::get_quantifier</span></a><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><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>

View file

@ -105,7 +105,7 @@ pointers:
<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#SP10_1_3">&#167;10.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>
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_named_rulebook_outcome</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">Rvalues::from_named_rulebook_outcome</span></span>:<br/>Focus and Outcome - <a href="21-fao.html#SP10">&#167;10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">named_rulebook_outcome</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">named_rulebook_outcome</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_rulebook_outcome</span><span class="plain-syntax">) }</span>
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_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">Rvalues::from_property</span></span>:<br/>Refine Parse Tree - <a href="9-rpt.html#SP9_8_5_1">&#167;9.8.5.1</a><br/>Terms - <a href="11-tr.html#SP8">&#167;8</a><br/>Propositions - <a href="11-pr.html#SP27">&#167;27</a><br/>Tree Conversions - <a href="11-tc.html#SP4">&#167;4</a><br/>Properties - <a href="15-pr.html#SP5_8">&#167;5.8</a><br/>Measurement Adjectives - <a href="15-ma.html#SP13">&#167;13</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</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">property</span><span class="plain-syntax">, </span><a href="15-pr.html#SP6" class="function-link"><span class="function-syntax">Properties::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_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">Rvalues::from_property</span></span>:<br/>Refine Parse Tree - <a href="9-rpt.html#SP9_8_4_1">&#167;9.8.4.1</a><br/>Terms - <a href="11-tr.html#SP8">&#167;8</a><br/>Propositions - <a href="11-pr.html#SP27">&#167;27</a><br/>Tree Conversions - <a href="11-tc.html#SP4">&#167;4</a><br/>Properties - <a href="15-pr.html#SP5_8">&#167;5.8</a><br/>Measurement Adjectives - <a href="15-ma.html#SP13">&#167;13</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</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">property</span><span class="plain-syntax">, </span><a href="15-pr.html#SP6" class="function-link"><span class="function-syntax">Properties::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_rule</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">Rvalues::from_rule</span></span>:<br/>Rules - <a href="21-rl.html#SP5_1">&#167;5.1</a><br/>Rule Bookings - <a href="21-rb.html#SP24_1">&#167;24.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rule</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">rule</span><span class="plain-syntax">, </span><a href="21-rl.html#SP8" class="function-link"><span class="function-syntax">Rules::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_rulebook</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">Rvalues::from_rulebook</span></span>:<br/>The Creator - <a href="9-tc.html#SP5_4_2_4">&#167;5.4.2.4</a><br/>Rulebooks - <a href="21-rl2.html#SP10">&#167;10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</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">rulebook</span><span class="plain-syntax">, </span><a href="21-rl2.html#SP10" class="function-link"><span class="function-syntax">Rulebooks::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_table</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">Rvalues::from_table</span></span>:<br/>Tables - <a href="19-tb.html#SP20_7">&#167;20.7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">table</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">table</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_table</span><span class="plain-syntax">) }</span>

File diff suppressed because one or more lines are too long

View file

@ -540,7 +540,7 @@ of the other:
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::is_either_or</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">Properties::is_either_or</span></span>:<br/><a href="15-pr.html#SP21">&#167;21</a>, <a href="15-pr.html#SP23">&#167;23</a>, <a href="15-pr.html#SP25">&#167;25</a>, <a href="15-pr.html#SP26">&#167;26</a>, <a href="15-pr.html#SP27">&#167;27</a><br/>Instances - <a href="5-ins.html#SP10">&#167;10</a><br/>The Creator - <a href="9-tc.html#SP4_5">&#167;4.5</a><br/>Make Assertions - <a href="9-ma.html#SP3_3_41_7">&#167;3.3.41.7</a><br/>Property Knowledge - <a href="9-pk.html#SP4">&#167;4</a><br/>Implications - <a href="9-imp.html#SP6">&#167;6</a><br/>Property Declarations - <a href="9-pd.html#SP5_8_1">&#167;5.8.1</a>, <a href="9-pd.html#SP5_8_3">&#167;5.8.3</a>, <a href="9-pd.html#SP5_11_2">&#167;5.11.2</a><br/>Propositions - <a href="11-pr.html#SP35_2">&#167;35.2</a><br/>Tree Conversions - <a href="11-tc.html#SP7_1">&#167;7.1</a><br/>Sentence Conversions - <a href="11-sc.html#SP3_3">&#167;3.3</a><br/>RValues - <a href="14-rv.html#SP24_3_1">&#167;24.3.1</a><br/>Lvalues - <a href="14-lv.html#SP12_5">&#167;12.5</a><br/>Dash - <a href="14-ds2.html#SP11_9_1_2_3">&#167;11.9.1.2.3</a>, <a href="14-ds2.html#SP13">&#167;13</a><br/>Properties of Values - <a href="15-pov.html#SP4_1">&#167;4.1</a><br/>Emit Property Values - <a href="15-epv.html#SP2">&#167;2</a>, <a href="15-epv.html#SP2_1">&#167;2.1</a>, <a href="15-epv.html#SP3">&#167;3</a><br/>Property Permissions - <a href="16-pp.html#SP8">&#167;8</a><br/>Inferences - <a href="16-in.html#SP14">&#167;14</a>, <a href="16-in.html#SP16">&#167;16</a>, <a href="16-in.html#SP17">&#167;17</a>, <a href="16-in.html#SP19">&#167;19</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><br/>Compile Invocations Inline - <a href="25-cii.html#SP3_1_1_4_11">&#167;3.1.1.4.11</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">either_or</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">Properties::is_value_property</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">Properties::is_value_property</span></span>:<br/>Refine Parse Tree - <a href="9-rpt.html#SP9_8_3">&#167;9.8.3</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#SP19_3_1">&#167;19.3.1</a><br/>The Provision Relation - <a href="15-tpr.html#SP7_1">&#167;7.1</a><br/>Same Property Relation - <a href="15-spr.html#SP2">&#167;2</a><br/>Inferences - <a href="16-in.html#SP20_3_3">&#167;20.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">int</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::is_value_property</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">Properties::is_value_property</span></span>:<br/>Refine Parse Tree - <a href="9-rpt.html#SP9_8_2">&#167;9.8.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#SP19_3_1">&#167;19.3.1</a><br/>The Provision Relation - <a href="15-tpr.html#SP7_1">&#167;7.1</a><br/>Same Property Relation - <a href="15-spr.html#SP2">&#167;2</a><br/>Inferences - <a href="16-in.html#SP20_3_3">&#167;20.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="plain-syntax"> </span><span class="reserved-syntax">if</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">FALSE</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>

View file

@ -232,7 +232,7 @@ then say that a thing has a weight: that makes a property also called
<span class="plain-syntax"> </span><a href="5-ins.html#SP9" class="function-link"><span class="function-syntax">Instances::make_kind_coincident</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</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">int</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Valued::coincides_with_kind</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">Properties::Valued::coincides_with_kind</span></span>:<br/>Refine Parse Tree - <a href="9-rpt.html#SP9_8_3">&#167;9.8.3</a><br/>The Creator - <a href="9-tc.html#SP4_5">&#167;4.5</a><br/>Make Assertions - <a href="9-ma.html#SP3_3_25">&#167;3.3.25</a>, <a href="9-ma.html#SP3_3_41_7">&#167;3.3.41.7</a><br/>Sentence Conversions - <a href="11-sc.html#SP3_3">&#167;3.3</a><br/>Dash - <a href="14-ds2.html#SP11_9_1_1_3_1_1">&#167;11.9.1.1.3.1.1</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">int</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Valued::coincides_with_kind</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">Properties::Valued::coincides_with_kind</span></span>:<br/>Refine Parse Tree - <a href="9-rpt.html#SP9_8_2">&#167;9.8.2</a><br/>The Creator - <a href="9-tc.html#SP4_5">&#167;4.5</a><br/>Make Assertions - <a href="9-ma.html#SP3_3_25">&#167;3.3.25</a>, <a href="9-ma.html#SP3_3_41_7">&#167;3.3.41.7</a><br/>Sentence Conversions - <a href="11-sc.html#SP3_3">&#167;3.3</a><br/>Dash - <a href="14-ds2.html#SP11_9_1_1_3_1_1">&#167;11.9.1.1.3.1.1</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="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">also_a_type</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>

View file

@ -220,12 +220,12 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">PLUGIN_PARSE_COMPOSITE_NQS</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">DW</span><span class="plain-syntax">, </span><span class="identifier-syntax">quantifier_used</span><span class="plain-syntax">, </span><span class="identifier-syntax">some_kind</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">Plugins::Call::refine_implicit_noun</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">Plugins::Call::refine_implicit_noun</span></span>:<br/>Refine Parse Tree - <a href="9-rpt.html#SP9_8_1">&#167;9.8.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">p</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Plugins::Call::refine_implicit_noun</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">Plugins::Call::refine_implicit_noun</span></span>:<br/>Refine Parse Tree - <a href="9-rpt.html#SP9_7">&#167;9.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">p</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">PLUGIN_REFINE_IMPLICIT_NOUN</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">int</span><span class="plain-syntax"> </span><span class="function-syntax">Plugins::Call::act_on_special_NPs</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">Plugins::Call::act_on_special_NPs</span></span>:<br/>Refine Parse Tree - <a href="9-rpt.html#SP9_8_4">&#167;9.8.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">p</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Plugins::Call::act_on_special_NPs</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">Plugins::Call::act_on_special_NPs</span></span>:<br/>Refine Parse Tree - <a href="9-rpt.html#SP9_8_3">&#167;9.8.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">p</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">PLUGIN_ACT_ON_SPECIAL_NPS</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>

View file

@ -449,7 +449,7 @@ with the following.
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">".\n"</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Plugins::Manage::plugged_in</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">Plugins::Manage::plugged_in</span></span>:<br/>How To Compile - <a href="1-htc.html#SP2_1">&#167;2.1</a><br/>Index Physical World - <a href="5-ipw.html#SP2">&#167;2</a><br/>Refine Parse Tree - <a href="9-rpt.html#SP9_5">&#167;9.5</a><br/>Instance Counting - <a href="16-ic.html#SP15">&#167;15</a><br/>Rules - <a href="21-rl.html#SP8">&#167;8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">plugin</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Plugins::Manage::plugged_in</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">Plugins::Manage::plugged_in</span></span>:<br/>How To Compile - <a href="1-htc.html#SP2_1">&#167;2.1</a><br/>Index Physical World - <a href="5-ipw.html#SP2">&#167;2</a><br/>Instance Counting - <a href="16-ic.html#SP15">&#167;15</a><br/>Rules - <a href="21-rl.html#SP8">&#167;8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">plugin</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">P</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">now_plugged_in</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>

View file

@ -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="6-rlt.html#SP15_1_5">&#167;15.1.5</a>, <a href="6-rlt.html#SP29">&#167;29</a><br/>Refine Parse Tree - <a href="9-rpt.html#SP9_5_1">&#167;9.5.1</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="6-rlt.html#SP15_1_5">&#167;15.1.5</a>, <a href="6-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="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>
@ -970,7 +970,7 @@ so the fact that it runs relatively slowly does not matter.
</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::get_reversal</span><button class="popup" onclick="togglePopup('usagePopup32')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup32">Usage of <span class="code-font"><span class="function-syntax">BinaryPredicates::get_reversal</span></span>:<br/><a href="6-bp.html#SP17">&#167;17</a><br/>New Verbs - <a href="6-nv.html#SP10">&#167;10</a><br/>Refine Parse Tree - <a href="9-rpt.html#SP9_5">&#167;9.5</a><br/>The Creator - <a href="9-tc.html#SP1_2_2">&#167;1.2.2</a>, <a href="9-tc.html#SP8">&#167;8</a><br/>Relation Knowledge - <a href="9-rk.html#SP1_1">&#167;1.1</a>, <a href="9-rk.html#SP3">&#167;3</a><br/>Sentence Conversions - <a href="11-sc.html#SP1_13_1">&#167;1.13.1</a><br/>Simplifications - <a href="11-sm.html#SP11">&#167;11</a><br/>Valued Properties - <a href="15-vp.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">binary_predicate</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::get_reversal</span><button class="popup" onclick="togglePopup('usagePopup32')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup32">Usage of <span class="code-font"><span class="function-syntax">BinaryPredicates::get_reversal</span></span>:<br/><a href="6-bp.html#SP17">&#167;17</a><br/>New Verbs - <a href="6-nv.html#SP10">&#167;10</a><br/>The Creator - <a href="9-tc.html#SP1_2_2">&#167;1.2.2</a>, <a href="9-tc.html#SP8">&#167;8</a><br/>Relation Knowledge - <a href="9-rk.html#SP1_1">&#167;1.1</a>, <a href="9-rk.html#SP3">&#167;3</a><br/>Sentence Conversions - <a href="11-sc.html#SP1_13_1">&#167;1.13.1</a><br/>Simplifications - <a href="11-sm.html#SP11">&#167;11</a><br/>Valued Properties - <a href="15-vp.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">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 reversal 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">reversal</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>

View file

@ -684,64 +684,6 @@ Problem message than the one they will otherwise receive later on.
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP21"></a><b>&#167;21. </b></p>
<pre class="Preform-displayed-code all-displayed-code code-font">
<span class="Preform-function-syntax">&lt;np-relative-phrase-implicit&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">worn</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="7-ns.html#SP21_1" class="named-paragraph-link"><span class="named-paragraph">Act on the implicit RP worn</span><span class="named-paragraph-number">21.1</span></a></span><span class="Preform-constant-syntax">;</span><span class="Preform-plain-syntax"> </span><span class="Preform-comment-syntax"> player\_plugin</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">carried</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="7-ns.html#SP21_2" class="named-paragraph-link"><span class="named-paragraph">Act on the implicit RP carried</span><span class="named-paragraph-number">21.2</span></a></span><span class="Preform-constant-syntax">;</span><span class="Preform-plain-syntax"> </span><span class="Preform-comment-syntax"> player\_plugin</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">initially</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">carried</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="7-ns.html#SP21_3" class="named-paragraph-link"><span class="named-paragraph">Act on the implicit RP initially carried</span><span class="named-paragraph-number">21.3</span></a></span><span class="Preform-constant-syntax">;</span><span class="Preform-plain-syntax"> </span><span class="Preform-comment-syntax"> player\_plugin</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">here</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="7-ns.html#SP21_4" class="named-paragraph-link"><span class="named-paragraph">Act on the implicit RP here</span><span class="named-paragraph-number">21.4</span></a></span><span class="Preform-constant-syntax">;</span><span class="Preform-plain-syntax"> </span><span class="Preform-comment-syntax"> spatial\_plugin</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="SP21_1"></a><b>&#167;21.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Act on the implicit RP worn</span><span class="named-paragraph-number">21.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">ifndef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</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="identifier-syntax">endif</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">X</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">; *</span><span class="identifier-syntax">XP</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NounPhrases::PN_rel</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">R_wearing</span><span class="plain-syntax">, -1, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="7-ns.html#SP21">&#167;21</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP21_2"></a><b>&#167;21.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Act on the implicit RP carried</span><span class="named-paragraph-number">21.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">ifndef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</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="identifier-syntax">endif</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">X</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">; *</span><span class="identifier-syntax">XP</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NounPhrases::PN_rel</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">R_carrying</span><span class="plain-syntax">, -1, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="7-ns.html#SP21">&#167;21</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP21_3"></a><b>&#167;21.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Act on the implicit RP initially carried</span><span class="named-paragraph-number">21.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">ifndef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</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="identifier-syntax">endif</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">X</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">; *</span><span class="identifier-syntax">XP</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NounPhrases::PN_rel</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">R_carrying</span><span class="plain-syntax">, -1, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="7-ns.html#SP21">&#167;21</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP21_4"></a><b>&#167;21.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Act on the implicit RP here</span><span class="named-paragraph-number">21.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">ifndef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</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="identifier-syntax">endif</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">X</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">; *</span><span class="identifier-syntax">XP</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NounPhrases::PN_rel</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">PARENTAGE_HERE_RELN</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">endif</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="7-ns.html#SP21">&#167;21</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="7-hdn.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-nl.html">3</a></li><li class="progresschapter"><a href="4-its.html">4</a></li><li class="progresschapter"><a href="5-lp.html">5</a></li><li class="progresschapter"><a href="6-up.html">6</a></li><li class="progresscurrentchapter">7</li><li class="progresssection"><a href="7-ptu.html">ptu</a></li><li class="progresssection"><a href="7-hdn.html">hdn</a></li><li class="progresscurrent">ns</li><li class="progresssection"><a href="7-oaf.html">oaf</a></li><li class="progresssection"><a href="7-rs.html">rs</a></li><li class="progresschapter"><a href="8-ef.html">8</a></li><li class="progresschapter"><a href="9-ita.html">9</a></li><li class="progresschapter"><a href="10-aots.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="7-oaf.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->

View file

@ -275,7 +275,6 @@ also makes it easier for us to manipulate the results.
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow</span><span class="plain-syntax">(</span><span class="identifier-syntax">VERB_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">listing_sense_ANNOT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow</span><span class="plain-syntax">(</span><span class="identifier-syntax">COMMON_NOUN_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">action_meaning_ANNOT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow</span><span class="plain-syntax">(</span><span class="identifier-syntax">COMMON_NOUN_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">creation_site_ANNOT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow</span><span class="plain-syntax">(</span><span class="identifier-syntax">COMMON_NOUN_NT</span><span class="plain-syntax">, </span><span class="identifier-syntax">implicitly_refers_to_ANNOT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow</span><span class="plain-syntax">(</span><span class="identifier-syntax">COMMON_NOUN_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">multiplicity_ANNOT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow</span><span class="plain-syntax">(</span><span class="identifier-syntax">COMMON_NOUN_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">quant_ANNOT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow</span><span class="plain-syntax">(</span><span class="identifier-syntax">COMMON_NOUN_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">quantification_parameter_ANNOT</span><span class="plain-syntax">);</span>
@ -556,7 +555,6 @@ be such that their head nodes each pass this test:
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">show_refers</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_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">)) { </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" refers:$j"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Node::get_subject</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">Node::get_evaluation</span><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">)) { </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" eval:$P"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Node::get_evaluation</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">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">, </span><span class="identifier-syntax">implicitly_refers_to_ANNOT</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" (implicit)"</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">show_eval</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">Node::get_evaluation</span><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">))) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" eval:$P"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Node::get_evaluation</span><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">));</span>

View file

@ -154,6 +154,8 @@ of <span class="extract"><span class="extract-syntax">px</span></span> and <span
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">x</span><span class="plain-syntax">=-1, </span><span class="identifier-syntax">y</span><span class="plain-syntax">=-1;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">node_type_t</span><span class="plain-syntax"> </span><span class="identifier-syntax">wx</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">px</span><span class="plain-syntax">), </span><span class="identifier-syntax">wy</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">py</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">wx</span><span class="plain-syntax"> == </span><span class="identifier-syntax">PRONOUN_NT</span><span class="plain-syntax">) </span><span class="identifier-syntax">wx</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PROPER_NOUN_NT</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">wy</span><span class="plain-syntax"> == </span><span class="identifier-syntax">PRONOUN_NT</span><span class="plain-syntax">) </span><span class="identifier-syntax">wy</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PROPER_NOUN_NT</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">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax">&lt;</span><span class="constant-syntax">ASSERTION_MATRIX_DIM</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">assertion_matrix</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">].</span><span class="element-syntax">row_node_type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">wx</span><span class="plain-syntax">) </span><span class="identifier-syntax">x</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">assertion_matrix</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">].</span><span class="element-syntax">row_node_type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">wy</span><span class="plain-syntax">) </span><span class="identifier-syntax">y</span><span class="plain-syntax">=</span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
@ -1253,18 +1255,17 @@ in this case.
</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">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">px</span><span class="plain-syntax">, </span><span class="identifier-syntax">relationship_node_type_ANNOT</span><span class="plain-syntax">) == </span><span class="identifier-syntax">DIRECTION_RELN</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">py</span><span class="plain-syntax">, </span><span class="identifier-syntax">relationship_node_type_ANNOT</span><span class="plain-syntax">) == </span><span class="identifier-syntax">DIRECTION_RELN</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">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">PL::MapDirections::get_mapping_relationship</span><span class="plain-syntax">(</span><span class="identifier-syntax">px</span><span class="plain-syntax">)) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">PL::MapDirections::get_mapping_relationship</span><span class="plain-syntax">(</span><span class="identifier-syntax">py</span><span class="plain-syntax">))) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PL::Map::enter_one_way_mode</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
<span class="plain-syntax"> </span><a href="9-ma.html#SP3" class="function-link"><span class="function-syntax">Assertions::Maker::make_assertion_recursive</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">px</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="9-ma.html#SP3" class="function-link"><span class="function-syntax">Assertions::Maker::make_assertion_recursive</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">px</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">down</span><span class="plain-syntax">, </span><span class="identifier-syntax">py</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PL::Map::exit_one_way_mode</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">return</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</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_RelationsEquated</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="string-syntax">"this says that two different relations are the same"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"like saying that 'in the box is on the table'. (Sometimes this "</span>

View file

@ -100,15 +100,15 @@ objects or values, but there are two exceptional cases to take care of.
<span class="plain-syntax"> </span><a href="9-rk.html#SP1" class="function-link"><span class="function-syntax">Assertions::Relational::assert_subtree_in_relationship</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">value</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">relationship_subtree</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">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">PL::MapDirections::get_mapping_relationship</span><span class="plain-syntax">(</span><span class="identifier-syntax">relationship_subtree</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="9-rk.html#SP1_3" class="named-paragraph-link"><span class="named-paragraph">Exceptional relationship nodes for map connections</span><span class="named-paragraph-number">1.3</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pronoun_usage</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pro</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_pronoun</span><span class="plain-syntax">(</span><span class="identifier-syntax">relationship_subtree</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">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">pro</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">pro</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">pronoun_used</span><span class="plain-syntax"> == </span><span class="identifier-syntax">here_pronoun</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="9-rk.html#SP1_2" class="named-paragraph-link"><span class="named-paragraph">Exceptional relationship nodes for placing objects "here"</span><span class="named-paragraph-number">1.2</span></a></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">switch</span><span class="plain-syntax">(</span><span class="identifier-syntax">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">relationship_subtree</span><span class="plain-syntax">, </span><span class="identifier-syntax">relationship_node_type_ANNOT</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">STANDARD_RELN:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="9-rk.html#SP1_1" class="named-paragraph-link"><span class="named-paragraph">Standard relationship nodes (the vast majority)</span><span class="named-paragraph-number">1.1</span></a></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="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PARENTAGE_HERE_RELN:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="9-rk.html#SP1_2" class="named-paragraph-link"><span class="named-paragraph">Exceptional relationship nodes for placing objects "here"</span><span class="named-paragraph-number">1.2</span></a></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">DIRECTION_RELN:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="9-rk.html#SP1_3" class="named-paragraph-link"><span class="named-paragraph">Exceptional relationship nodes for map connections</span><span class="named-paragraph-number">1.3</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">default:</span><span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"unknown RELATIONSHIP node type"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="9-rk.html#SP1_1" class="named-paragraph-link"><span class="named-paragraph">Standard relationship nodes (the vast majority)</span><span class="named-paragraph-number">1.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP1_1"></a><b>&#167;1.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Standard relationship nodes (the vast majority)</span><span class="named-paragraph-number">1.1</span></span><span class="comment-syntax"> =</span>
@ -119,7 +119,7 @@ objects or values, but there are two exceptional cases to take care of.
<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">"asserted bp-less relationship subtree"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="15-spr2.html#SP4" class="function-link"><span class="function-syntax">Properties::SettingRelations::fix_property_bp</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="9-rk.html#SP3" class="function-link"><span class="function-syntax">Assertions::Relational::assert_relation_between_subtrees</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">value</span><span class="plain-syntax">, </span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="identifier-syntax">relationship_subtree</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">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="9-rk.html#SP1">&#167;1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP1_2"></a><b>&#167;1.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Exceptional relationship nodes for placing objects "here"</span><span class="named-paragraph-number">1.2</span></span><span class="comment-syntax"> =</span>
@ -137,7 +137,7 @@ objects or values, but there are two exceptional cases to take care of.
<span class="plain-syntax"> </span><a href="11-tc.html#SP5" class="function-link"><span class="function-syntax">Calculus::Propositions::Abstract::to_put_here</span></a><span class="plain-syntax">(),</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::get_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">value</span><span class="plain-syntax">), </span><span class="identifier-syntax">prevailing_mood</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">return</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="9-rk.html#SP1">&#167;1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP1_3"></a><b>&#167;1.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Exceptional relationship nodes for map connections</span><span class="named-paragraph-number">1.3</span></span><span class="comment-syntax"> =</span>
@ -161,7 +161,7 @@ objects or values, but there are two exceptional cases to take care of.
<span class="plain-syntax"> </span><span class="string-syntax">"the source of a map connection has to be a room or door"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"so sentences like 'The pink door is south of 0.' are not "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"allowed."</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">return</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">iy</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">id</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</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">"malformed directional subtree"</span><span class="plain-syntax">);</span>
@ -176,7 +176,7 @@ objects or values, but there are two exceptional cases to take care of.
<span class="plain-syntax"> </span><span class="string-syntax">"a door or 'nowhere'"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"but here the destination doesn't even seem to be an object."</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">return</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="9-rk.html#SP1">&#167;1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP1_3_1"></a><b>&#167;1.3.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Make some paranoid checks that the map subtree is valid</span><span class="named-paragraph-number">1.3.1</span></span><span class="comment-syntax"> =</span>
@ -191,13 +191,13 @@ objects or values, but there are two exceptional cases to take care of.
<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">BelievedImpossible</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="string-syntax">"this is not straightforward in saying which room (or door) leads away from"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"and should just name the source."</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">return</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">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">relationship_subtree</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">PROPER_NOUN_NT</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">BelievedImpossible</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="string-syntax">"this is not straightforward in saying which direction the room (or door) lies in"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"and should just name the direction."</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">return</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="9-rk.html#SP1_3">&#167;1.3</a>.</li></ul>

View file

@ -100,7 +100,7 @@ nodes, thus decomposing the NP into smaller clauses which are refined in turn.
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_evaluation</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><a href="16-is.html#SP18" class="function-link"><span class="function-syntax">InferenceSubjects::as_constant</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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Assertions::Refiner::noun_from_value</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">Assertions::Refiner::noun_from_value</span></span>:<br/><a href="9-rpt.html#SP6">&#167;6</a>, <a href="9-rpt.html#SP9_8_5">&#167;9.8.5</a>, <a href="9-rpt.html#SP9_8_5_5">&#167;9.8.5.5</a><br/>The Creator - <a href="9-tc.html#SP5_4">&#167;5.4</a>, <a href="9-tc.html#SP5_4_1_1">&#167;5.4.1.1</a><br/>Make Assertions - <a href="9-ma.html#SP3_3_11">&#167;3.3.11</a>, <a href="9-ma.html#SP5">&#167;5</a><br/>Relation Knowledge - <a href="9-rk.html#SP2">&#167;2</a><br/>Tables - <a href="19-tb.html#SP25_1">&#167;25.1</a><br/>Tables of Definitions - <a href="19-tod.html#SP6_3">&#167;6.3</a>, <a href="19-tod.html#SP6_4_3_1">&#167;6.4.3.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">p</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">Assertions::Refiner::noun_from_value</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">Assertions::Refiner::noun_from_value</span></span>:<br/><a href="9-rpt.html#SP6">&#167;6</a>, <a href="9-rpt.html#SP9_8_4">&#167;9.8.4</a>, <a href="9-rpt.html#SP9_8_4_5">&#167;9.8.4.5</a><br/>The Creator - <a href="9-tc.html#SP5_4">&#167;5.4</a>, <a href="9-tc.html#SP5_4_1_1">&#167;5.4.1.1</a><br/>Make Assertions - <a href="9-ma.html#SP3_3_11">&#167;3.3.11</a>, <a href="9-ma.html#SP5">&#167;5</a><br/>Relation Knowledge - <a href="9-rk.html#SP2">&#167;2</a><br/>Tables - <a href="19-tb.html#SP25_1">&#167;25.1</a><br/>Tables of Definitions - <a href="19-tod.html#SP6_3">&#167;6.3</a>, <a href="19-tod.html#SP6_4_3_1">&#167;6.4.3.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">p</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">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#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">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>
@ -222,7 +222,7 @@ compare "clothing" and "clothes", which has no adequate singular.)
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">forbid_nowhere</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Assertions::Refiner::refine</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">Assertions::Refiner::refine</span></span>:<br/><a href="9-rpt.html#SP9_1">&#167;9.1</a>, <a href="9-rpt.html#SP9_2">&#167;9.2</a>, <a href="9-rpt.html#SP9_2_1">&#167;9.2.1</a>, <a href="9-rpt.html#SP9_3">&#167;9.3</a>, <a href="9-rpt.html#SP9_4">&#167;9.4</a>, <a href="9-rpt.html#SP9_5">&#167;9.5</a>, <a href="9-rpt.html#SP9_6">&#167;9.6</a>, <a href="9-rpt.html#SP9_8_3">&#167;9.8.3</a><br/>To Be and To Have - <a href="9-tbath.html#SP5">&#167;5</a><br/>Property Declarations - <a href="9-pd.html#SP5">&#167;5</a><br/>Tree Conversions - <a href="11-tc.html#SP7_1">&#167;7.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">p</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">creation_rule</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Assertions::Refiner::refine</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">Assertions::Refiner::refine</span></span>:<br/><a href="9-rpt.html#SP9_1">&#167;9.1</a>, <a href="9-rpt.html#SP9_2">&#167;9.2</a>, <a href="9-rpt.html#SP9_2_1">&#167;9.2.1</a>, <a href="9-rpt.html#SP9_3">&#167;9.3</a>, <a href="9-rpt.html#SP9_4">&#167;9.4</a>, <a href="9-rpt.html#SP9_5">&#167;9.5</a>, <a href="9-rpt.html#SP9_6">&#167;9.6</a>, <a href="9-rpt.html#SP9_8_2">&#167;9.8.2</a><br/>To Be and To Have - <a href="9-tbath.html#SP5">&#167;5</a><br/>Property Declarations - <a href="9-pd.html#SP5">&#167;5</a><br/>Tree Conversions - <a href="11-tc.html#SP7_1">&#167;7.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">p</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">creation_rule</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">p</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">"Refine parse tree on null 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">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="constant-syntax">resolved_ANNOT</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
@ -378,12 +378,8 @@ has the marble and the box as its children, the relationship being containment.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">down</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="9-rpt.html#SP8" class="function-link"><span class="function-syntax">Assertions::Refiner::refine</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">creation_rule</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="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_relationship</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">bp</span><span class="plain-syntax">) &amp;&amp; (</span><a href="26-pl.html#SP14" class="function-link"><span class="function-syntax">Plugins::Manage::plugged_in</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">map_plugin</span><span class="plain-syntax">))) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">dir</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PL::MapDirections::get_mapping_direction</span><span class="plain-syntax">(</span><a href="6-bp.html#SP39" class="function-link"><span class="function-syntax">BinaryPredicates::get_reversal</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">dir</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">dir</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PL::MapDirections::get_mapping_direction</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">dir</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="9-rpt.html#SP9_5_1" class="named-paragraph-link"><span class="named-paragraph">Make the relation one which refers to a map direction</span><span class="named-paragraph-number">9.5.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">dir</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PL::MapDirections::get_mapping_relationship</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">dir</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="9-rpt.html#SP9_5_1" class="named-paragraph-link"><span class="named-paragraph">Make the relation one which refers to a map direction</span><span class="named-paragraph-number">9.5.1</span></a></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">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><a href="9-rpt.html#SP8" class="function-link"><span class="function-syntax">Assertions::Refiner::refine</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">creation_rule</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
@ -399,9 +395,7 @@ direction object for "north".
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">NOUN_RESOLUTION</span><span class="plain-syntax">, </span><span class="string-syntax">"Directional predicate with BP %S ($O)\n"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="6-bp.html#SP36" class="function-link"><span class="function-syntax">BinaryPredicates::get_log_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">), </span><span class="identifier-syntax">dir</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">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">relationship_node_type_ANNOT</span><span class="plain-syntax">, </span><span class="identifier-syntax">DIRECTION_RELN</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">NOUN_RESOLUTION</span><span class="plain-syntax">, </span><span class="string-syntax">"Directional predicate with BP from $O\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">dir</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">DW</span><span class="plain-syntax"> = </span><a href="5-ins.html#SP14" class="function-link"><span class="function-syntax">Instances::get_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">dir</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">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">NounPhrases::new_raw</span><span class="plain-syntax">(</span><span class="identifier-syntax">DW</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="9-rpt.html#SP1" class="function-link"><span class="function-syntax">Assertions::Refiner::noun_from_infs</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><a href="5-ins.html#SP13" class="function-link"><span class="function-syntax">Instances::as_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">dir</span><span class="plain-syntax">));</span>
@ -476,6 +470,15 @@ inference subject representing the domain to which any new kind would belong.
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">pronoun_usage</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pro</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_pronoun</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pro</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">pro</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">pronoun_used</span><span class="plain-syntax"> == </span><span class="identifier-syntax">here_pronoun</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">RELATIONSHIP_NT</span><span class="plain-syntax">);</span>
<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">NounPhrases::new_pronoun</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="identifier-syntax">pro</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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pro</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">pronoun_used</span><span class="plain-syntax"> == </span><span class="identifier-syntax">implied_pronoun</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="26-pc.html#SP6" class="function-link"><span class="function-syntax">Plugins::Call::refine_implicit_noun</span></a><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="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">PROPER_NOUN_NT</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">Stock::usage_might_be_singular</span><span class="plain-syntax">(</span><span class="identifier-syntax">pro</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">usage</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><a href="9-tfa.html#SP12" class="function-link"><span class="function-syntax">Assertions::Traverse::get_current_subject_plurality</span></a><span class="plain-syntax">())) {</span>
@ -515,42 +518,17 @@ complicated description is as follows:
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">PROPER_NOUN_NT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="9-rpt.html#SP9_8_1" class="named-paragraph-link"><span class="named-paragraph">Act on the special no-words word range which implies the player</span><span class="named-paragraph-number">9.8.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="9-rpt.html#SP9_8_3" class="named-paragraph-link"><span class="named-paragraph">Act on a newly-discovered property of something</span><span class="named-paragraph-number">9.8.3</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">forbid_nowhere</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="9-rpt.html#SP9_8_4" class="named-paragraph-link"><span class="named-paragraph">Act on any special noun phrases significant to plugins</span><span class="named-paragraph-number">9.8.4</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="9-rpt.html#SP9_8_2" class="named-paragraph-link"><span class="named-paragraph">Act on a newly-discovered property of something</span><span class="named-paragraph-number">9.8.2</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">forbid_nowhere</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="9-rpt.html#SP9_8_3" class="named-paragraph-link"><span class="named-paragraph">Act on any special noun phrases significant to plugins</span><span class="named-paragraph-number">9.8.3</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">creation_rule</span><span class="plain-syntax"> != </span><span class="constant-syntax">MANDATE_CREATION</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="9-rpt.html#SP9_8_5" class="named-paragraph-link"><span class="named-paragraph">Interpret this as an existing noun if possible</span><span class="named-paragraph-number">9.8.5</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="9-rpt.html#SP9_8_4" class="named-paragraph-link"><span class="named-paragraph">Interpret this as an existing noun if possible</span><span class="named-paragraph-number">9.8.4</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">creation_rule</span><span class="plain-syntax"> != </span><span class="constant-syntax">FORBID_CREATION</span><span class="plain-syntax">) </span><span class="identifier-syntax">Node::set_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="constant-syntax">CREATED_NT</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_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</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="9-rpt.html#SP9">&#167;9</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP9_8_1"></a><b>&#167;9.8.1. </b>There's just one case where an empty word range can be used as a noun
phrase &mdash; when it represents an implicit noun, as here, where the person
doing the carrying is implicit:
</p>
<blockquote>
<p>The black box is carried.</p>
</blockquote>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Act on the special no-words word range which implies the player</span><span class="named-paragraph-number">9.8.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="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">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">implicitly_refers_to_ANNOT</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><a href="26-pc.html#SP6" class="function-link"><span class="function-syntax">Plugins::Call::refine_implicit_noun</span></a><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="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::empty</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">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">"$T"</span><span class="plain-syntax">, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"Tried to resolve malformed noun-phrase"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="9-rpt.html#SP9_8">&#167;9.8</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP9_8_2"></a><b>&#167;9.8.2. </b>The following is needed to handle something like "colour of the box",
<p class="commentary firstcommentary"><a id="SP9_8_1"></a><b>&#167;9.8.1. </b>The following is needed to handle something like "colour of the box",
where "colour" is a property name. We must be careful, though, to avoid
confusion with variable declarations:
</p>
@ -571,7 +549,7 @@ property of something.
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">{&lt;property-name-v&gt;}</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">of</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; *XP = 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="SP9_8_3"></a><b>&#167;9.8.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Act on a newly-discovered property of something</span><span class="named-paragraph-number">9.8.3</span></span><span class="Preform-comment-syntax"> =</span>
<p class="commentary firstcommentary"><a id="SP9_8_2"></a><b>&#167;9.8.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Act on a newly-discovered property of something</span><span class="named-paragraph-number">9.8.2</span></span><span class="Preform-comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -597,35 +575,35 @@ property of something.
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="9-rpt.html#SP9_8">&#167;9.8</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP9_8_4"></a><b>&#167;9.8.4. </b>For example, "above" and "below" become significant if the mapping plugin
<p class="commentary firstcommentary"><a id="SP9_8_3"></a><b>&#167;9.8.3. </b>For example, "above" and "below" become significant if the mapping plugin
is active, and "nowhere" if the spatial one is.
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Act on any special noun phrases significant to plugins</span><span class="named-paragraph-number">9.8.4</span></span><span class="comment-syntax"> =</span>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Act on any special noun phrases significant to plugins</span><span class="named-paragraph-number">9.8.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><a href="26-pc.html#SP6" class="function-link"><span class="function-syntax">Plugins::Call::act_on_special_NPs</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="9-rpt.html#SP9_8">&#167;9.8</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP9_8_5"></a><b>&#167;9.8.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Interpret this as an existing noun if possible</span><span class="named-paragraph-number">9.8.5</span></span><span class="comment-syntax"> =</span>
<p class="commentary firstcommentary"><a id="SP9_8_4"></a><b>&#167;9.8.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Interpret this as an existing noun if possible</span><span class="named-paragraph-number">9.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="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="9-rpt.html#SP9_8_5_1" class="named-paragraph-link"><span class="named-paragraph">Parse the noun phrase as a value property name</span><span class="named-paragraph-number">9.8.5.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">spec</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="9-rpt.html#SP9_8_5_3" class="named-paragraph-link"><span class="named-paragraph">Parse the noun phrase as a value</span><span class="named-paragraph-number">9.8.5.3</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="9-rpt.html#SP9_8_4_1" class="named-paragraph-link"><span class="named-paragraph">Parse the noun phrase as a value property name</span><span class="named-paragraph-number">9.8.4.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">spec</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="9-rpt.html#SP9_8_4_3" class="named-paragraph-link"><span class="named-paragraph">Parse the noun phrase as a value</span><span class="named-paragraph-number">9.8.4.3</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">Node::is</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="constant-syntax">NONLOCAL_VARIABLE_NT</span><span class="plain-syntax">)) ||</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">))) {</span>
<span class="plain-syntax"> </span><a href="9-rpt.html#SP1" class="function-link"><span class="function-syntax">Assertions::Refiner::noun_from_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</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>
<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#SP3" class="function-link"><span class="function-syntax">Specifications::is_description</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="named-paragraph-container code-font"><a href="9-rpt.html#SP9_8_5_5" class="named-paragraph-link"><span class="named-paragraph">Act on a description used as a noun phrase</span><span class="named-paragraph-number">9.8.5.5</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="9-rpt.html#SP9_8_5_4" class="named-paragraph-link"><span class="named-paragraph">Act on an action pattern used as a noun phrase</span><span class="named-paragraph-number">9.8.5.4</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="9-rpt.html#SP9_8_4_5" class="named-paragraph-link"><span class="named-paragraph">Act on a description used as a noun phrase</span><span class="named-paragraph-number">9.8.4.5</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="9-rpt.html#SP9_8_4_4" class="named-paragraph-link"><span class="named-paragraph">Act on an action pattern used as a noun phrase</span><span class="named-paragraph-number">9.8.4.4</span></a></span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="9-rpt.html#SP9_8">&#167;9.8</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP9_8_5_1"></a><b>&#167;9.8.5.1. </b>Perhaps it is the name of a valued property? If so, it is used as a noun,
<p class="commentary firstcommentary"><a id="SP9_8_4_1"></a><b>&#167;9.8.4.1. </b>Perhaps it is the name of a valued property? If so, it is used as a noun,
without obvious reference to any owner: we convert it to a noun node.
</p>
@ -633,14 +611,14 @@ without obvious reference to any owner: we convert it to a noun node.
property name meaning, not as the name of a kind of value.)
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse the noun phrase as a value property name</span><span class="named-paragraph-number">9.8.5.1</span></span><span class="comment-syntax"> =</span>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse the noun phrase as a value property name</span><span class="named-paragraph-number">9.8.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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax">&lt;value-property-name&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">spec</span><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="function-syntax">&lt;&lt;rp&gt;&gt;</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="9-rpt.html#SP9_8_5">&#167;9.8.5</a>.</li></ul>
<ul class="endnotetexts"><li>This code is used in <a href="9-rpt.html#SP9_8_4">&#167;9.8.4</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP_1"></a><b>&#167;.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_VagueVariable problem</span><span class="named-paragraph-number">.1</span></span><span class="comment-syntax"> =</span>
</p>
@ -652,8 +630,8 @@ property name meaning, not as the name of a kind of value.)
<span class="plain-syntax"> </span><span class="string-syntax">"'number variable' or 'a number that varies' - whatever kind of value you "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"need - would be much clearer."</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="9-rpt.html#SP9_8_5_2">&#167;9.8.5.2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP9_8_5_2"></a><b>&#167;9.8.5.2. </b>When a noun phrase in an assertion represents a value, it's normally a
<ul class="endnotetexts"><li>This code is used in <a href="9-rpt.html#SP9_8_4_2">&#167;9.8.4.2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP9_8_4_2"></a><b>&#167;9.8.4.2. </b>When a noun phrase in an assertion represents a value, it's normally a
constant ("13") or else something like a description of values ("a number").
It wouldn't make sense to refer to a temporary value like a local variable,
but a global ("player" or "time of day") is possible.
@ -672,7 +650,7 @@ a noun instead of a condition testing the current action.
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;s-global-variable&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> TRUE; *XP = 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="SP9_8_5_3"></a><b>&#167;9.8.5.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse the noun phrase as a value</span><span class="named-paragraph-number">9.8.5.3</span></span><span class="Preform-comment-syntax"> =</span>
<p class="commentary firstcommentary"><a id="SP9_8_4_3"></a><b>&#167;9.8.4.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse the noun phrase as a value</span><span class="named-paragraph-number">9.8.4.3</span></span><span class="Preform-comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -683,10 +661,10 @@ a noun instead of a condition testing the current action.
<span class="plain-syntax"> </span><span class="identifier-syntax">spec</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">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="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="14-ds.html#SP9" class="function-link"><span class="function-syntax">Descriptions::get_quantifier</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="named-paragraph-container code-font"><a href="9-rpt.html#SP9_8_5_3_1" class="named-paragraph-link"><span class="named-paragraph">Check that this noun phrase is allowed a quantifier</span><span class="named-paragraph-number">9.8.5.3.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="9-rpt.html#SP9_8_4_3_1" class="named-paragraph-link"><span class="named-paragraph">Check that this noun phrase is allowed a quantifier</span><span class="named-paragraph-number">9.8.4.3.1</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">NOUN_RESOLUTION</span><span class="plain-syntax">, </span><span class="string-syntax">"Noun phrase %W parsed as value: $P\n"</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="identifier-syntax">spec</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="9-rpt.html#SP9_8_5">&#167;9.8.5</a>.</li></ul>
<ul class="endnotetexts"><li>This code is used in <a href="9-rpt.html#SP9_8_4">&#167;9.8.4</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP_1"></a><b>&#167;.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue a problem for a variable described without a kind</span><span class="named-paragraph-number">.1</span></span><span class="comment-syntax"> =</span>
</p>
@ -694,7 +672,7 @@ a noun instead of a condition testing the current action.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>This code is never used.</li></ul>
<p class="commentary firstcommentary"><a id="SP9_8_5_3_1"></a><b>&#167;9.8.5.3.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Check that this noun phrase is allowed a quantifier</span><span class="named-paragraph-number">9.8.5.3.1</span></span><span class="comment-syntax"> =</span>
<p class="commentary firstcommentary"><a id="SP9_8_4_3_1"></a><b>&#167;9.8.4.3.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Check that this noun phrase is allowed a quantifier</span><span class="named-paragraph-number">9.8.4.3.1</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -729,8 +707,8 @@ a noun instead of a condition testing the current action.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="9-rpt.html#SP9_8_5_3">&#167;9.8.5.3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP9_8_5_4"></a><b>&#167;9.8.5.4. </b>If the noun phrase is a valid action pattern, such as "taking something",
<ul class="endnotetexts"><li>This code is used in <a href="9-rpt.html#SP9_8_4_3">&#167;9.8.4.3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP9_8_4_4"></a><b>&#167;9.8.4.4. </b>If the noun phrase is a valid action pattern, such as "taking something",
we change it to a new node type to mark this. We don't keep the pattern:
it will be reparsed much later on.
</p>
@ -742,7 +720,7 @@ piece of wood. So we parse action patterns with a lower priority than values
here, given that we know we are looking for a noun.
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Act on an action pattern used as a noun phrase</span><span class="named-paragraph-number">9.8.5.4</span></span><span class="comment-syntax"> =</span>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Act on an action pattern used as a noun phrase</span><span class="named-paragraph-number">9.8.4.4</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -756,8 +734,8 @@ here, given that we know we are looking for a noun.
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="9-rpt.html#SP9_8_5">&#167;9.8.5</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP9_8_5_5"></a><b>&#167;9.8.5.5. </b>This case has been left to last, since it's so much the most difficult.
<ul class="endnotetexts"><li>This code is used in <a href="9-rpt.html#SP9_8_4">&#167;9.8.4</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP9_8_4_5"></a><b>&#167;9.8.4.5. </b>This case has been left to last, since it's so much the most difficult.
Descriptions have to be converted into a surprising range of different
subtrees &mdash; otherwise it will not be possible to issue a wide range of
to-the-point problem messages for badly constructed sentences.
@ -766,7 +744,7 @@ to-the-point problem messages for badly constructed sentences.
<p class="commentary">Oddly, it's not the complicated descriptions which give trouble...
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Act on a description used as a noun phrase</span><span class="named-paragraph-number">9.8.5.5</span></span><span class="comment-syntax"> =</span>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Act on a description used as a noun phrase</span><span class="named-paragraph-number">9.8.4.5</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -775,10 +753,10 @@ to-the-point problem messages for badly constructed sentences.
<span class="plain-syntax"> </span><a href="9-rpt.html#SP1" class="function-link"><span class="function-syntax">Assertions::Refiner::noun_from_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</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>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="9-rpt.html#SP9_8_5_5_1" class="named-paragraph-link"><span class="named-paragraph">Act on a simple description</span><span class="named-paragraph-number">9.8.5.5.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="9-rpt.html#SP9_8_4_5_1" class="named-paragraph-link"><span class="named-paragraph">Act on a simple description</span><span class="named-paragraph-number">9.8.4.5.1</span></a></span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="9-rpt.html#SP9_8_5">&#167;9.8.5</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP9_8_5_5_1"></a><b>&#167;9.8.5.5.1. </b>...it's the shorter phrases where, perversely, the risk of a
<ul class="endnotetexts"><li>This code is used in <a href="9-rpt.html#SP9_8_4">&#167;9.8.4</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP9_8_4_5_1"></a><b>&#167;9.8.4.5.1. </b>...it's the shorter phrases where, perversely, the risk of a
misunderstanding is higher. For one thing, we deliberately ignore a valid
description in two cases:
</p>
@ -812,7 +790,7 @@ that this is not the same silver bar referred to in some previous
sentence.
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Act on a simple description</span><span class="named-paragraph-number">9.8.5.5.1</span></span><span class="comment-syntax"> =</span>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Act on a simple description</span><span class="named-paragraph-number">9.8.4.5.1</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -823,7 +801,7 @@ sentence.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="9-rpt.html#SP9_8_5_5">&#167;9.8.5.5</a>.</li></ul>
<ul class="endnotetexts"><li>This code is used in <a href="9-rpt.html#SP9_8_4_5">&#167;9.8.4.5</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP10"></a><b>&#167;10. </b>The following turns the node <span class="extract"><span class="extract-syntax">p</span></span> into a subtree representing the content of
a simple description in <span class="extract"><span class="extract-syntax">spec</span></span>. Besides being used above, it's also convenient
for assemblies.
@ -836,7 +814,7 @@ where the adjectives each become <span class="extract"><span class="extract-synt
</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">Assertions::Refiner::refine_from_simple_description</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">Assertions::Refiner::refine_from_simple_description</span></span>:<br/><a href="9-rpt.html#SP9_8_5_5_1">&#167;9.8.5.5.1</a><br/>Assemblies - <a href="9-ass.html#SP9_3">&#167;9.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">p</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">Assertions::Refiner::refine_from_simple_description</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">Assertions::Refiner::refine_from_simple_description</span></span>:<br/><a href="9-rpt.html#SP9_8_4_5_1">&#167;9.8.4.5.1</a><br/>Assemblies - <a href="9-ass.html#SP9_3">&#167;9.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">p</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">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">head</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="9-rpt.html#SP10_1" class="named-paragraph-link"><span class="named-paragraph">Set the attachment node to the headword, if there is one</span><span class="named-paragraph-number">10.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><a href="14-ds.html#SP8" class="function-link"><span class="function-syntax">Descriptions::number_of_adjectives_applied_to</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
@ -1123,8 +1101,6 @@ the two clauses are the wrong way around, so we perform surgery to turn:
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">x_pn</span><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">down</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">; </span><span class="comment-syntax"> "north" in the example</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name_pn</span><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="comment-syntax"> "hot and cold room" in the example</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">RELATIONSHIP_NT</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">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">relationship_node_type_ANNOT</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">down</span><span class="plain-syntax">, </span><span class="identifier-syntax">relationship_node_type_ANNOT</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_type</span><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">CALLED_NT</span><span class="plain-syntax">);</span>
<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">x_pn</span><span class="plain-syntax">;</span>
<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">down</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax"> = </span><span class="identifier-syntax">name_pn</span><span class="plain-syntax">;</span>

View file

@ -360,6 +360,17 @@ such.
<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">;</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="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::MapDirections::get_mapping_relationship</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">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_relationship</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">bp</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">Plugins::Manage::plugged_in</span><span class="plain-syntax">(</span><span class="identifier-syntax">map_plugin</span><span class="plain-syntax">))) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">dir</span><span class="plain-syntax"> = </span><a href="3-mcr.html#SP13" class="function-link"><span class="function-syntax">PL::MapDirections::get_mapping_direction</span></a><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BinaryPredicates::get_reversal</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">dir</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">dir</span><span class="plain-syntax"> = </span><a href="3-mcr.html#SP13" class="function-link"><span class="function-syntax">PL::MapDirections::get_mapping_direction</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">dir</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">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="3-tm.html">&#10094;</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifi.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-tnt.html">tnt</a></li><li class="progresssection"><a href="3-sm.html">sm</a></li><li class="progresssection"><a href="3-sr.html">sr</a></li><li class="progresssection"><a href="3-prs.html">prs</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-dvc.html">dvc</a></li><li class="progresssection"><a href="3-bck.html">bck</a></li><li class="progresssection"><a href="3-rgn.html">rgn</a></li><li class="progresssection"><a href="3-tm.html">tm</a></li><li class="progresscurrent">mcr</li><li class="progresssection"><a href="3-sg.html">sg</a></li><li class="progresssection"><a href="3-sm2.html">sm2</a></li><li class="progresssection"><a href="3-hm.html">hm</a></li><li class="progresssection"><a href="3-em.html">em</a></li><li class="progresssection"><a href="3-sc.html">sc</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresssection"><a href="3-tm2.html">tm2</a></li><li class="progresssection"><a href="3-ts.html">ts</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="3-sg.html">&#10095;</a></li></ul></div>

View file

@ -93,8 +93,6 @@ some new node types:
<span class="definition-keyword">enum</span> <span class="constant-syntax">occurrence_ANNOT</span><span class="plain-syntax"> </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">time_period</span></span><span class="comment-syntax">: any stipulation on occurrence</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">explicit_gender_marker_ANNOT</span><span class="plain-syntax"> </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">int</span></span><span class="comment-syntax">: used by PROPER NOUN nodes for evident genders</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">relationship_ANNOT</span><span class="plain-syntax"> </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">binary_predicate</span></span><span class="comment-syntax">: for RELATIONSHIP nodes</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">relationship_node_type_ANNOT</span><span class="plain-syntax"> </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">int</span></span><span class="comment-syntax">: what kind of inference this assertion makes</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">implicitly_refers_to_ANNOT</span><span class="plain-syntax"> </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">int</span></span><span class="comment-syntax">: this will implicitly refer to something</span>
</pre>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain-syntax">(</span><span class="reserved-syntax">verb</span><span class="plain-syntax">, </span><span class="reserved-syntax">verb_usage</span><span class="plain-syntax">)</span>
@ -158,12 +156,9 @@ nodes and annotations correctly:
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow</span><span class="plain-syntax">(</span><span class="constant-syntax">COMMON_NOUN_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">noun_ANNOT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow</span><span class="plain-syntax">(</span><span class="constant-syntax">RELATIONSHIP_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">preposition_ANNOT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow</span><span class="plain-syntax">(</span><span class="constant-syntax">RELATIONSHIP_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">relationship_ANNOT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow</span><span class="plain-syntax">(</span><span class="constant-syntax">RELATIONSHIP_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">relationship_node_type_ANNOT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow_for_category</span><span class="plain-syntax">(</span><span class="identifier-syntax">L3_NCAT</span><span class="plain-syntax">, </span><span class="constant-syntax">linguistic_error_here_ANNOT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow_for_category</span><span class="plain-syntax">(</span><span class="identifier-syntax">L3_NCAT</span><span class="plain-syntax">, </span><span class="constant-syntax">explicit_gender_marker_ANNOT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow_for_category</span><span class="plain-syntax">(</span><span class="identifier-syntax">L3_NCAT</span><span class="plain-syntax">, </span><span class="constant-syntax">article_ANNOT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow</span><span class="plain-syntax">(</span><span class="constant-syntax">UNPARSED_NOUN_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">implicitly_refers_to_ANNOT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow</span><span class="plain-syntax">(</span><span class="constant-syntax">PROPER_NOUN_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">implicitly_refers_to_ANNOT</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP5"></a><b>&#167;5. </b>And the following conveniently prints out a sentence in diagram form; this
@ -208,16 +203,8 @@ is used by <a href="../linguistics-test/index.html" class="internal">linguistics
<span class="plain-syntax"> </span><a href="2-art.html#SP3" class="function-link"><span class="function-syntax">Articles::write_usage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Node::get_article</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">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">RELATIONSHIP_NT:</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" {meaning: "</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">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">, </span><span class="constant-syntax">relationship_node_type_ANNOT</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">STANDARD_RELN:</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_relationship</span><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Node::get_relationship</span><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">)-&gt;</span><span class="identifier-syntax">debugging_log_name</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">PARENTAGE_HERE_RELN:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"(here)"</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">DIRECTION_RELN:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"(direction)"</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"}"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_relationship</span><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" {meaning: %S}"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Node::get_relationship</span><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">)-&gt;</span><span class="identifier-syntax">debugging_log_name</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>

View file

@ -251,7 +251,7 @@ or accusative case".
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">grammatical_usage</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">grammatical_usage</span><span class="plain-syntax"> *</span><span class="function-syntax">Stock::new_usage</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">Stock::new_usage</span></span>:<br/>Articles - <a href="2-art.html#SP11">&#167;11</a><br/>Nouns - <a href="2-nns.html#SP11_1">&#167;11.1</a><br/>Pronouns - <a href="2-prn.html#SP7">&#167;7</a><br/>Verb Usages - <a href="3-vu.html#SP7_1_3">&#167;7.1.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">linguistic_stock_item</span><span class="plain-syntax"> *</span><span class="identifier-syntax">item</span><span class="plain-syntax">, </span><span class="identifier-syntax">NATURAL_LANGUAGE_WORDS_TYPE</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">grammatical_usage</span><span class="plain-syntax"> *</span><span class="function-syntax">Stock::new_usage</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">Stock::new_usage</span></span>:<br/>Articles - <a href="2-art.html#SP11">&#167;11</a><br/>Nouns - <a href="2-nns.html#SP11_1">&#167;11.1</a><br/>Pronouns - <a href="2-prn.html#SP6">&#167;6</a>, <a href="2-prn.html#SP7">&#167;7</a><br/>Verb Usages - <a href="3-vu.html#SP7_1_3">&#167;7.1.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">linguistic_stock_item</span><span class="plain-syntax"> *</span><span class="identifier-syntax">item</span><span class="plain-syntax">, </span><span class="identifier-syntax">NATURAL_LANGUAGE_WORDS_TYPE</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">grammatical_usage</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gu</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">grammatical_usage</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gu</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">used</span><span class="plain-syntax"> = </span><span class="identifier-syntax">item</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gu</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">language</span><span class="plain-syntax"> = </span><span class="identifier-syntax">L</span><span class="plain-syntax">;</span>

View file

@ -109,10 +109,12 @@ matched against some form of a pronoun.
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"}"</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP4"></a><b>&#167;4. </b>The stock of pronouns is fixed at six. We are going to regard the three
<p class="commentary firstcommentary"><a id="SP4"></a><b>&#167;4. </b>The stock of pronouns is fixed, as follows. We are going to regard the three
persons as being different pronouns, since they make different references,
though not every grammarian would agree. So we have three "agent pronouns" &mdash;
those standing for subject or object &mdash; and then three possessives.
those standing for subject or object &mdash; and then three possessives, and "here",
which stands in the place of a noun referring to a location, and is thus also
a pronoun.
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -123,6 +125,8 @@ those standing for subject or object &mdash; and then three possessives.
<span class="reserved-syntax">pronoun</span><span class="plain-syntax"> *</span><span class="identifier-syntax">first_person_possessive_pronoun</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">pronoun</span><span class="plain-syntax"> *</span><span class="identifier-syntax">second_person_possessive_pronoun</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">pronoun</span><span class="plain-syntax"> *</span><span class="identifier-syntax">third_person_possessive_pronoun</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">pronoun</span><span class="plain-syntax"> *</span><span class="identifier-syntax">here_pronoun</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">pronoun</span><span class="plain-syntax"> *</span><span class="identifier-syntax">implied_pronoun</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">Pronouns::create_category</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">Pronouns::create_category</span></span>:<br/>Stock Control - <a href="1-sc.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pronouns_category</span><span class="plain-syntax"> = </span><a href="1-sc.html#SP3" class="function-link"><span class="function-syntax">Stock::new_category</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"pronoun"</span><span class="plain-syntax">);</span>
@ -133,6 +137,8 @@ those standing for subject or object &mdash; and then three possessives.
<span class="plain-syntax"> </span><span class="identifier-syntax">first_person_possessive_pronoun</span><span class="plain-syntax"> = </span><a href="2-prn.html#SP4" class="function-link"><span class="function-syntax">Pronouns::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"first person possessive pronoun"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">second_person_possessive_pronoun</span><span class="plain-syntax"> = </span><a href="2-prn.html#SP4" class="function-link"><span class="function-syntax">Pronouns::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"second person possessive pronoun"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">third_person_possessive_pronoun</span><span class="plain-syntax"> = </span><a href="2-prn.html#SP4" class="function-link"><span class="function-syntax">Pronouns::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"third person possessive pronoun"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">here_pronoun</span><span class="plain-syntax"> = </span><a href="2-prn.html#SP4" class="function-link"><span class="function-syntax">Pronouns::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"location pronoun"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">implied_pronoun</span><span class="plain-syntax"> = </span><a href="2-prn.html#SP4" class="function-link"><span class="function-syntax">Pronouns::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"implied pronoun"</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">pronoun</span><span class="plain-syntax"> *</span><span class="function-syntax">Pronouns::new</span><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>
@ -166,6 +172,10 @@ would be easy to form other subsets of the pronouns.
<span class="plain-syntax"> *</span><span class="identifier-syntax">first_person_possessive_pronouns_sws</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">second_person_possessive_pronouns_sws</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">third_person_possessive_pronouns_sws</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">small_word_set</span><span class="plain-syntax"> *</span><span class="identifier-syntax">here_pronouns_sws</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">pronoun_usage</span><span class="plain-syntax"> *</span><span class="identifier-syntax">implied_pronoun_usage</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
</pre>
<p class="commentary firstcommentary"><a id="SP6"></a><b>&#167;6. </b>And now we have to make them. The following capacity would be enough even if
we were simultaneously dealing with four languages in which every inflection
@ -219,6 +229,14 @@ produced a different word. So it really is not going to run out.
<span class="plain-syntax"> </span><span class="identifier-syntax">third_person_possessive_pronouns_sws</span><span class="plain-syntax"> = </span><a href="1-sc.html#SP11" class="function-link"><span class="function-syntax">Stock::new_sws</span></a><span class="plain-syntax">(</span><span class="constant-syntax">PRONOUN_SWS_CAPACITY</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-prn.html#SP7" class="function-link"><span class="function-syntax">Pronouns::add</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">third_person_possessive_pronouns_sws</span><span class="plain-syntax">, </span><span class="function-syntax">&lt;third-person-possessive-pronoun-table&gt;</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> -1, </span><span class="identifier-syntax">THIRD_PERSON</span><span class="plain-syntax">, </span><span class="identifier-syntax">third_person_possessive_pronoun</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">here_pronouns_sws</span><span class="plain-syntax"> = </span><a href="1-sc.html#SP11" class="function-link"><span class="function-syntax">Stock::new_sws</span></a><span class="plain-syntax">(</span><span class="constant-syntax">PRONOUN_SWS_CAPACITY</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-prn.html#SP7" class="function-link"><span class="function-syntax">Pronouns::add</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">here_pronouns_sws</span><span class="plain-syntax">, </span><span class="function-syntax">&lt;here-pronoun-table&gt;</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> -1, </span><span class="identifier-syntax">THIRD_PERSON</span><span class="plain-syntax">, </span><span class="identifier-syntax">here_pronoun</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">implied_pronoun_usage</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">pronoun_usage</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">implied_pronoun_usage</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">pronoun_used</span><span class="plain-syntax"> = </span><span class="identifier-syntax">implied_pronoun</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">implied_pronoun_usage</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">usage</span><span class="plain-syntax"> = </span><a href="1-sc.html#SP9" class="function-link"><span class="function-syntax">Stock::new_usage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">implied_pronoun</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">in_stock</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP7"></a><b>&#167;7. </b>All of which use the following, which extracts inflected forms from the
@ -327,6 +345,14 @@ parsed lies in the relevant small word set.
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> (*</span><span class="Preform-identifier-syntax">XP</span><span class="Preform-plain-syntax">) </span><span class="Preform-reserved-syntax">return</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">TRUE</span><span class="Preform-plain-syntax">;</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">return</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">FALSE</span><span class="Preform-plain-syntax">;</span>
<span class="Preform-plain-syntax">}</span>
<span class="Preform-function-syntax">&lt;here-pronoun&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">internal</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">1</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">{</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> (</span><span class="Preform-identifier-syntax">pronouns_sws</span><span class="Preform-plain-syntax"> == </span><span class="Preform-identifier-syntax">NULL</span><span class="Preform-plain-syntax">) </span><a href="2-prn.html#SP6" class="function-link"><span class="Preform-function-syntax">Pronouns::create_small_word_sets</span></a><span class="Preform-plain-syntax">();</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">vocabulary_entry</span><span class="Preform-plain-syntax"> *</span><span class="Preform-identifier-syntax">ve</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">Lexer::word</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">Wordings::first_wn</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">W</span><span class="Preform-plain-syntax">));</span>
<span class="Preform-plain-syntax"> *</span><span class="Preform-identifier-syntax">XP</span><span class="Preform-plain-syntax"> = (</span><span class="Preform-reserved-syntax">pronoun_usage</span><span class="Preform-plain-syntax"> *) </span><a href="1-sc.html#SP12" class="function-link"><span class="Preform-function-syntax">Stock::find_in_sws</span></a><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">here_pronouns_sws</span><span class="Preform-plain-syntax">, </span><span class="Preform-identifier-syntax">ve</span><span class="Preform-plain-syntax">);</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> (*</span><span class="Preform-identifier-syntax">XP</span><span class="Preform-plain-syntax">) </span><span class="Preform-reserved-syntax">return</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">TRUE</span><span class="Preform-plain-syntax">;</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">return</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">FALSE</span><span class="Preform-plain-syntax">;</span>
<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="SP9"></a><b>&#167;9. English pronouns. </b>So, then, these nonterminals are not parsed by Preform but are instead used
@ -363,6 +389,10 @@ feminine singular, feminine plural.
<span class="Preform-function-syntax">&lt;third-person-possessive-pronoun-table&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">its</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">their</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">his</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">their</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">her</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">their</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">its</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">their</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">his</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">their</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">her</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">their</span>
<span class="Preform-function-syntax">&lt;here-pronoun-table&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">here</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">here</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">here</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">here</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">here</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">here</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">here</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">here</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">here</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">here</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">here</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">here</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"></a><b>&#167;10. Unit testing. </b>The <a href="../linguistics-test/index.html" class="internal">linguistics-test</a> test case <span class="extract"><span class="Preform-extract-syntax">pronouns</span></span> calls this.

View file

@ -88,7 +88,7 @@ to ask for a reversal to be performed when needed.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="constant-syntax">VERB_MEANING_LINGUISTICS_TYPE</span><span class="plain-syntax"> *</span><span class="function-syntax">VerbMeanings::reverse_VMT</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">VerbMeanings::reverse_VMT</span></span>:<br/><a href="3-vm.html#SP11">&#167;11</a><br/>Verb Usages - <a href="3-vu.html#SP12">&#167;12</a><br/>Noun Phrases - <a href="4-np.html#SP14_1">&#167;14.1</a><br/>Verb Phrases - <a href="4-vp.html#SP9_1">&#167;9.1</a></span></button><span class="plain-syntax">(</span><span class="constant-syntax">VERB_MEANING_LINGUISTICS_TYPE</span><span class="plain-syntax"> *</span><span class="identifier-syntax">recto</span><span class="plain-syntax">) {</span>
<span class="constant-syntax">VERB_MEANING_LINGUISTICS_TYPE</span><span class="plain-syntax"> *</span><span class="function-syntax">VerbMeanings::reverse_VMT</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">VerbMeanings::reverse_VMT</span></span>:<br/><a href="3-vm.html#SP11">&#167;11</a><br/>Verb Usages - <a href="3-vu.html#SP12">&#167;12</a><br/>Noun Phrases - <a href="4-np.html#SP15_1">&#167;15.1</a><br/>Verb Phrases - <a href="4-vp.html#SP9_1">&#167;9.1</a></span></button><span class="plain-syntax">(</span><span class="constant-syntax">VERB_MEANING_LINGUISTICS_TYPE</span><span class="plain-syntax"> *</span><span class="identifier-syntax">recto</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">VERB_MEANING_REVERSAL_LINGUISTICS_CALLBACK</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">VERB_MEANING_REVERSAL_LINGUISTICS_CALLBACK</span><span class="plain-syntax">(</span><span class="identifier-syntax">recto</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
@ -245,7 +245,7 @@ have to follow any indirection, and reverse if necessary.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rel</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="constant-syntax">VERB_MEANING_LINGUISTICS_TYPE</span><span class="plain-syntax"> *</span><span class="function-syntax">VerbMeanings::get_regular_meaning_of_form</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">VerbMeanings::get_regular_meaning_of_form</span></span>:<br/>Verb Usages - <a href="3-vu.html#SP12">&#167;12</a><br/>Noun Phrases - <a href="4-np.html#SP14_1">&#167;14.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">verb_form</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vf</span><span class="plain-syntax">) {</span>
<span class="constant-syntax">VERB_MEANING_LINGUISTICS_TYPE</span><span class="plain-syntax"> *</span><span class="function-syntax">VerbMeanings::get_regular_meaning_of_form</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">VerbMeanings::get_regular_meaning_of_form</span></span>:<br/>Verb Usages - <a href="3-vu.html#SP12">&#167;12</a><br/>Noun Phrases - <a href="4-np.html#SP15_1">&#167;15.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">verb_form</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vf</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="3-vm.html#SP11" class="function-link"><span class="function-syntax">VerbMeanings::get_regular_meaning</span></a><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><a href="3-vm.html#SP9" class="function-link"><span class="function-syntax">VerbMeanings::first_unspecial_meaning_of_verb_form</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">vf</span><span class="plain-syntax">));</span>
<span class="plain-syntax">}</span>

View file

@ -301,7 +301,7 @@ of verb and two prepositions:
<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">verb_form</span><span class="plain-syntax"> *</span><span class="function-syntax">Verbs::find_form</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">Verbs::find_form</span></span>:<br/><a href="3-vrb.html#SP12_1">&#167;12.1</a><br/>Verb Usages - <a href="3-vu.html#SP12">&#167;12</a><br/>Noun Phrases - <a href="4-np.html#SP14_1">&#167;14.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">verb</span><span class="plain-syntax"> *</span><span class="identifier-syntax">V</span><span class="plain-syntax">, </span><span class="reserved-syntax">preposition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prep</span><span class="plain-syntax">, </span><span class="reserved-syntax">preposition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">second_prep</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">verb_form</span><span class="plain-syntax"> *</span><span class="function-syntax">Verbs::find_form</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">Verbs::find_form</span></span>:<br/><a href="3-vrb.html#SP12_1">&#167;12.1</a><br/>Verb Usages - <a href="3-vu.html#SP12">&#167;12</a><br/>Noun Phrases - <a href="4-np.html#SP15_1">&#167;15.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">verb</span><span class="plain-syntax"> *</span><span class="identifier-syntax">V</span><span class="plain-syntax">, </span><span class="reserved-syntax">preposition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prep</span><span class="plain-syntax">, </span><span class="reserved-syntax">preposition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">second_prep</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">V</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">verb_form</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vf</span><span class="plain-syntax"> = </span><span class="identifier-syntax">V</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">first_form</span><span class="plain-syntax">; </span><span class="identifier-syntax">vf</span><span class="plain-syntax">; </span><span class="identifier-syntax">vf</span><span class="plain-syntax"> = </span><span class="identifier-syntax">vf</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next_form</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">vf</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">preposition</span><span class="plain-syntax"> == </span><span class="identifier-syntax">prep</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">vf</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">second_clause_preposition</span><span class="plain-syntax"> == </span><span class="identifier-syntax">second_prep</span><span class="plain-syntax">))</span>

View file

@ -81,7 +81,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">linguistics</a></li><li><a href="index.html#4">Chapter 4: Diagramming Sentences</a></li><li><b>Noun Phrases</b></li></ul></div>
<p class="purpose">To construct noun-phrase subtrees for assertion sentences found in the parse tree.</p>
<ul class="toc"><li><a href="4-np.html#SP1">&#167;1. Hierarchy of noun phrases</a></li><li><a href="4-np.html#SP2">&#167;2. Creation</a></li><li><a href="4-np.html#SP4">&#167;4. Raw nounphrases (NP1)</a></li><li><a href="4-np.html#SP5">&#167;5. Articled nounphrases (NP2)</a></li><li><a href="4-np.html#SP7">&#167;7. Balanced variants</a></li><li><a href="4-np.html#SP8">&#167;8. List-divided nounphrases (NP3)</a></li><li><a href="4-np.html#SP11">&#167;11. Worldly nounphrases (NP4)</a></li><li><a href="4-np.html#SP19">&#167;19. Relationship nodes</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="4-np.html#SP1">&#167;1. Hierarchy of noun phrases</a></li><li><a href="4-np.html#SP2">&#167;2. Creation</a></li><li><a href="4-np.html#SP4">&#167;4. Raw nounphrases (NP1)</a></li><li><a href="4-np.html#SP5">&#167;5. Articled nounphrases (NP2)</a></li><li><a href="4-np.html#SP7">&#167;7. Balanced variants</a></li><li><a href="4-np.html#SP8">&#167;8. List-divided nounphrases (NP3)</a></li><li><a href="4-np.html#SP11">&#167;11. Worldly nounphrases (NP4)</a></li><li><a href="4-np.html#SP20">&#167;20. Relationship nodes</a></li></ul><hr class="tocbar">
<p class="commentary firstcommentary"><a id="SP1"></a><b>&#167;1. Hierarchy of noun phrases. </b>Noun phrase nodes are built at four levels of elaboration, which we take in
turn:
@ -95,10 +95,10 @@ relationships and properties (and other grammar meaningful only for references
to physical objects and kinds) are parsed.
</li></ul>
</li></ul>
<p class="commentary">At levels (NP1) and (NP2), a NP produces a single <span class="extract"><span class="extract-syntax">PROPER_NOUN_NT</span></span> node; at
level (NP3), the result is a subtree contining <span class="extract"><span class="extract-syntax">PROPER_NOUN_NT</span></span> and <span class="extract"><span class="extract-syntax">AND_NT</span></span>
<p class="commentary">At levels (NP1) and (NP2), a NP produces a single <span class="extract"><span class="extract-syntax">UNPARSED_NOUN_NT</span></span> node; at
level (NP3), the result is a subtree contining <span class="extract"><span class="extract-syntax">UNPARSED_NOUN_NT</span></span> and <span class="extract"><span class="extract-syntax">AND_NT</span></span>
nodes; but at level (NP4) this subtree may include any of <span class="extract"><span class="extract-syntax">RELATIONSHIP_NT</span></span>,
<span class="extract"><span class="extract-syntax">CALLED_NT</span></span>, <span class="extract"><span class="extract-syntax">WITH_NT</span></span>, <span class="extract"><span class="extract-syntax">AND_NT</span></span>, <span class="extract"><span class="extract-syntax">KIND_NT</span></span> or <span class="extract"><span class="extract-syntax">PROPER_NOUN_NT</span></span>.
<span class="extract"><span class="extract-syntax">CALLED_NT</span></span>, <span class="extract"><span class="extract-syntax">WITH_NT</span></span>, <span class="extract"><span class="extract-syntax">AND_NT</span></span>, <span class="extract"><span class="extract-syntax">KIND_NT</span></span> or <span class="extract"><span class="extract-syntax">UNPARSED_NOUN_NT</span></span>.
</p>
<p class="commentary">Because a small proportion of noun phrase subtrees is thrown away, due to
@ -115,7 +115,7 @@ about that: the proportion thrown away really is small).
<span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">; *</span><span class="identifier-syntax">XP</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><a href="4-np.html#SP2" class="function-link"><span class="function-syntax">NounPhrases::new_raw</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)):</span><span class="identifier-syntax">NULL</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">NounPhrases::new_raw</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">NounPhrases::new_raw</span></span>:<br/><a href="4-np.html#SP19">&#167;19</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">NounPhrases::new_raw</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">PN</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::new</span><span class="plain-syntax">(</span><span class="constant-syntax">UNPARSED_NOUN_NT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">PN</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><span class="identifier-syntax">PN</span><span class="plain-syntax">;</span>
@ -126,20 +126,28 @@ about that: the proportion thrown away really is small).
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">PN</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><span class="identifier-syntax">PN</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">NounPhrases::new_pronoun</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">NounPhrases::new_pronoun</span></span>:<br/><a href="4-np.html#SP16">&#167;16</a>, <a href="4-np.html#SP20">&#167;20</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">pronoun_usage</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pro</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">preform_lookahead_mode</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="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">PN</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::new</span><span class="plain-syntax">(</span><span class="constant-syntax">PRONOUN_NT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">PN</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_pronoun</span><span class="plain-syntax">(</span><span class="identifier-syntax">PN</span><span class="plain-syntax">, </span><span class="identifier-syntax">pro</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">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP3"></a><b>&#167;3. </b>Other node types are generated as follows. Note that these make nothing in
lookahead mode; this prevents needless memory allocation.
</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">NounPhrases::PN_void</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">NounPhrases::PN_void</span></span>:<br/><a href="4-np.html#SP16">&#167;16</a>, <a href="4-np.html#SP18">&#167;18</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">node_type_t</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</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">NounPhrases::PN_void</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">NounPhrases::PN_void</span></span>:<br/><a href="4-np.html#SP17">&#167;17</a>, <a href="4-np.html#SP19">&#167;19</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">node_type_t</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">preform_lookahead_mode</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="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">t</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</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><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="function-syntax">NounPhrases::PN_single</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">NounPhrases::PN_single</span></span>:<br/><a href="4-np.html#SP18">&#167;18</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">node_type_t</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</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="identifier-syntax">A</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">NounPhrases::PN_single</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">NounPhrases::PN_single</span></span>:<br/><a href="4-np.html#SP19">&#167;19</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">node_type_t</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</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="identifier-syntax">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">preform_lookahead_mode</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="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">t</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
@ -147,7 +155,7 @@ lookahead mode; this prevents needless memory allocation.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</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="function-syntax">NounPhrases::PN_pair</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">NounPhrases::PN_pair</span></span>:<br/><a href="4-np.html#SP8">&#167;8</a>, <a href="4-np.html#SP10">&#167;10</a>, <a href="4-np.html#SP15">&#167;15</a>, <a href="4-np.html#SP16">&#167;16</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">node_type_t</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</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="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="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">NounPhrases::PN_pair</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">NounPhrases::PN_pair</span></span>:<br/><a href="4-np.html#SP8">&#167;8</a>, <a href="4-np.html#SP10">&#167;10</a>, <a href="4-np.html#SP16">&#167;16</a>, <a href="4-np.html#SP17">&#167;17</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">node_type_t</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</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="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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">preform_lookahead_mode</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="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">t</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
@ -384,7 +392,52 @@ in the case of a participle like "holding".
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;np-relative-phrase-explicit&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> 0; *XP = 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="SP13"></a><b>&#167;13. </b>Inform guesses above that most English words ending in "-ing" are present
<p class="commentary firstcommentary"><a id="SP13"></a><b>&#167;13. </b></p>
<pre class="Preform-displayed-code all-displayed-code code-font">
<span class="Preform-function-syntax">&lt;np-relative-phrase-implicit&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">worn</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-np.html#SP13_1" class="named-paragraph-link"><span class="named-paragraph">Act on the implicit RP worn</span><span class="named-paragraph-number">13.1</span></a></span><span class="Preform-constant-syntax">;</span><span class="Preform-plain-syntax"> </span><span class="Preform-comment-syntax"> player\_plugin</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">carried</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-np.html#SP13_2" class="named-paragraph-link"><span class="named-paragraph">Act on the implicit RP carried</span><span class="named-paragraph-number">13.2</span></a></span><span class="Preform-constant-syntax">;</span><span class="Preform-plain-syntax"> </span><span class="Preform-comment-syntax"> player\_plugin</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">initially</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">carried</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-np.html#SP13_3" class="named-paragraph-link"><span class="named-paragraph">Act on the implicit RP initially carried</span><span class="named-paragraph-number">13.3</span></a></span><span class="Preform-constant-syntax">;</span><span class="Preform-plain-syntax"> </span><span class="Preform-comment-syntax"> player\_plugin</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="SP13_1"></a><b>&#167;13.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Act on the implicit RP worn</span><span class="named-paragraph-number">13.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">ifndef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</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="identifier-syntax">endif</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">X</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">; *</span><span class="identifier-syntax">XP</span><span class="plain-syntax"> = </span><a href="4-np.html#SP20" class="function-link"><span class="function-syntax">NounPhrases::PN_implied_rel</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">R_wearing</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-np.html#SP13">&#167;13</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP13_2"></a><b>&#167;13.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Act on the implicit RP carried</span><span class="named-paragraph-number">13.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">ifndef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</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="identifier-syntax">endif</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">X</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">; *</span><span class="identifier-syntax">XP</span><span class="plain-syntax"> = </span><a href="4-np.html#SP20" class="function-link"><span class="function-syntax">NounPhrases::PN_implied_rel</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">R_carrying</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-np.html#SP13">&#167;13</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP13_3"></a><b>&#167;13.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Act on the implicit RP initially carried</span><span class="named-paragraph-number">13.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">ifndef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</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="identifier-syntax">endif</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">X</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">; *</span><span class="identifier-syntax">XP</span><span class="plain-syntax"> = </span><a href="4-np.html#SP20" class="function-link"><span class="function-syntax">NounPhrases::PN_implied_rel</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">R_carrying</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-np.html#SP13">&#167;13</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP14"></a><b>&#167;14. </b>Inform guesses above that most English words ending in "-ing" are present
participles &mdash; like guessing, bluffing, cheating, and so on. But there is
a conspicuous exception to this; so any word found in &lt;non-participles&gt;
is never treated as a participle.
@ -403,7 +456,7 @@ is never treated as a participle.
<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>Finally, we define what we mean by implicit and explicit relative phrases.
<p class="commentary firstcommentary"><a id="SP15"></a><b>&#167;15. </b>Finally, we define what we mean by implicit and explicit relative phrases.
As examples, the right-hand sides of:
</p>
@ -430,20 +483,20 @@ directions, in particular, a little better.
<span class="Preform-function-syntax">&lt;np-relative-phrase-explicit&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;permitted-preposition&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">_,/and</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; return FAIL_NONTERMINAL;</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;permitted-preposition&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">_,/and</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; return FAIL_NONTERMINAL;</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;permitted-preposition&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;np-inner-without-rp&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> 0; </span><span class="named-paragraph-container code-font"><a href="4-np.html#SP14_1" class="named-paragraph-link"><span class="named-paragraph">Work out a meaning</span><span class="named-paragraph-number">14.1</span></a></span><span class="Preform-constant-syntax">;</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;permitted-preposition&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;np-inner-without-rp&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> 0; </span><span class="named-paragraph-container code-font"><a href="4-np.html#SP15_1" class="named-paragraph-link"><span class="named-paragraph">Work out a meaning</span><span class="named-paragraph-number">15.1</span></a></span><span class="Preform-constant-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_1"></a><b>&#167;14.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Work out a meaning</span><span class="named-paragraph-number">14.1</span></span><span class="Preform-comment-syntax"> =</span>
<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">Work out a meaning</span><span class="named-paragraph-number">15.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="constant-syntax">VERB_MEANING_LINGUISTICS_TYPE</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax"> = </span><a href="3-vm.html#SP11" class="function-link"><span class="function-syntax">VerbMeanings::get_regular_meaning_of_form</span></a><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><a href="3-vrb.html#SP11" class="function-link"><span class="function-syntax">Verbs::find_form</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">permitted_verb</span><span class="plain-syntax">, </span><span class="identifier-syntax">RP</span><span class="plain-syntax">[1], </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">R</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="identifier-syntax">XP</span><span class="plain-syntax"> = </span><a href="4-np.html#SP19" class="function-link"><span class="function-syntax">NounPhrases::PN_rel</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><a href="3-vm.html#SP2" class="function-link"><span class="function-syntax">VerbMeanings::reverse_VMT</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">), -1, </span><span class="identifier-syntax">RP</span><span class="plain-syntax">[2]);</span>
<span class="plain-syntax"> *</span><span class="identifier-syntax">XP</span><span class="plain-syntax"> = </span><a href="4-np.html#SP20" class="function-link"><span class="function-syntax">NounPhrases::PN_rel</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><a href="3-vm.html#SP2" class="function-link"><span class="function-syntax">VerbMeanings::reverse_VMT</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</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="4-np.html#SP14">&#167;14</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP15"></a><b>&#167;15. </b>Now the heart of it. There are basically seven constructions which can make
<ul class="endnotetexts"><li>This code is used in <a href="4-np.html#SP15">&#167;15</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP16"></a><b>&#167;16. </b>Now the heart of it. There are basically seven constructions which can make
complex NPs from simple ones: we've already seen one of these, the relative
phrase. The sequence of checking these is very important, because it decides
which clauses are represented higher in the parse tree when multiple structures
@ -460,8 +513,8 @@ are present within the NP. For instance, we want to turn
<pre class="Preform-displayed-code all-displayed-code code-font">
<span class="Preform-plain-syntax"> RELATIONSHIP_NT "in" = containment</span>
<span class="Preform-plain-syntax"> CALLED_NT "called"</span>
<span class="Preform-plain-syntax"> PROPER_NOUN_NT "container" article:indefinite</span>
<span class="Preform-plain-syntax"> PROPER_NOUN_NT "flask and cap with flange" article:definite</span>
<span class="Preform-plain-syntax"> UNPARSED_NOUN_NT "container" article:indefinite</span>
<span class="Preform-plain-syntax"> UNPARSED_NOUN_NT "flask and cap with flange" article:definite</span>
</pre>
<p class="commentary">but we also want:
</p>
@ -473,7 +526,7 @@ are present within the NP. For instance, we want to turn
<pre class="Preform-displayed-code all-displayed-code code-font">
<span class="Preform-plain-syntax"> RELATIONSHIP_NT "in" = containment</span>
<span class="Preform-plain-syntax"> WITH_NT "with"</span>
<span class="Preform-plain-syntax"> PROPER_NOUN_NT "container" article:indefinite</span>
<span class="Preform-plain-syntax"> UNPARSED_NOUN_NT "container" article:indefinite</span>
<span class="Preform-plain-syntax"> AND_NT "and"</span>
<span class="Preform-plain-syntax"> PROPERTY_LIST_NT "carrying capacity 10"</span>
<span class="Preform-plain-syntax"> PROPERTY_LIST_NT "diameter 12"</span>
@ -537,11 +590,12 @@ speed optimisation, and doesn't affect the language's definition.
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;np-inner&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;np-with-or-having-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"> 0; *XP = NounPhrases::PN_pair(WITH_NT, Wordings::one_word(R[2]), RP[1], RP[2])</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;np-inner&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;np-and-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"> 0; *XP = NounPhrases::PN_pair(AND_NT, Wordings::one_word(R[2]), RP[1], RP[2])</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;np-kind-phrase&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; *XP = RP[1]</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;agent-pronoun&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"> GENERATE_RAW_NP; Node::set_type(*XP, PRONOUN_NT); Node::set_pronoun(*XP, RP[1]);</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;agent-pronoun&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; *XP = NounPhrases::new_pronoun(W, RP[1])</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;here-pronoun&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; *XP = NounPhrases::new_pronoun(W, RP[1])</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;np-articled-balanced&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> 0; *XP = 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="SP16"></a><b>&#167;16. </b>The tail of with-or-having parses for instance "with carrying capacity 5"
<p class="commentary firstcommentary"><a id="SP17"></a><b>&#167;17. </b>The tail of with-or-having parses for instance "with carrying capacity 5"
in the NP
</p>
@ -578,7 +632,7 @@ bogus object called "locking it".)
<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;np-new-property-list&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> Wordings::first_wn(W); *XP= 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="SP17"></a><b>&#167;17. </b>The "and" tail is much easier:
<p class="commentary firstcommentary"><a id="SP18"></a><b>&#167;18. </b>The "and" tail is much easier:
</p>
<pre class="Preform-displayed-code all-displayed-code code-font">
@ -587,7 +641,7 @@ bogus object called "locking it".)
<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;np-inner&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> Wordings::first_wn(W); *XP= 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="SP18"></a><b>&#167;18. </b>Kind phrases are easier:
<p class="commentary firstcommentary"><a id="SP19"></a><b>&#167;19. </b>Kind phrases are easier:
</p>
<blockquote>
@ -608,29 +662,24 @@ but definite articles are not.
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">kind/kinds</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">of</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;np-inner&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> 0; *XP = NounPhrases::PN_single(KIND_NT, W, 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="SP19"></a><b>&#167;19. Relationship nodes. </b>A modest utility routine to construct and annotate RELATIONSHIP nodes.
<p class="commentary firstcommentary"><a id="SP20"></a><b>&#167;20. Relationship nodes. </b>A modest utility routine to construct and annotate RELATIONSHIP nodes.
</p>
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="Preform-constant-syntax">STANDARD_RELN</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">0</span><span class="Preform-plain-syntax"> </span><span class="Preform-comment-syntax"> the default annotation value: never explicitly set</span>
<span class="definition-keyword">define</span> <span class="Preform-constant-syntax">PARENTAGE_HERE_RELN</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">1</span><span class="Preform-plain-syntax"> </span><span class="Preform-comment-syntax"> only ever set by the Spatial plugin</span>
<span class="definition-keyword">define</span> <span class="Preform-constant-syntax">DIRECTION_RELN</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">2</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">NounPhrases::PN_rel</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">NounPhrases::PN_rel</span></span>:<br/><a href="4-np.html#SP14_1">&#167;14.1</a><br/>Verb Phrases - <a href="4-vp.html#SP9_1">&#167;9.1</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="constant-syntax">VERB_MEANING_LINGUISTICS_TYPE</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">reln_type</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">referent</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">NounPhrases::PN_rel</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">NounPhrases::PN_rel</span></span>:<br/><a href="4-np.html#SP15_1">&#167;15.1</a><br/>Verb Phrases - <a href="4-vp.html#SP9_1">&#167;9.1</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="constant-syntax">VERB_MEANING_LINGUISTICS_TYPE</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</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="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="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">O</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 object for relationship"</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">P</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::new</span><span class="plain-syntax">(</span><span class="constant-syntax">RELATIONSHIP_NT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">R</span><span class="plain-syntax">) </span><span class="identifier-syntax">Node::set_relationship</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</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">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">reln_type</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">0</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">P</span><span class="plain-syntax">, </span><span class="constant-syntax">relationship_node_type_ANNOT</span><span class="plain-syntax">, </span><span class="identifier-syntax">reln_type</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"undefined relationship node"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">referent</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">referent</span><span class="plain-syntax"> = </span><a href="4-np.html#SP2" class="function-link"><span class="function-syntax">NounPhrases::new_raw</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::write_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">referent</span><span class="plain-syntax">, </span><span class="constant-syntax">implicitly_refers_to_ANNOT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">P</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">down</span><span class="plain-syntax"> = </span><span class="identifier-syntax">referent</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_relationship</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">R</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">P</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">down</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">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="function-syntax">NounPhrases::PN_implied_rel</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">NounPhrases::PN_implied_rel</span></span>:<br/><a href="4-np.html#SP13_1">&#167;13.1</a>, <a href="4-np.html#SP13_2">&#167;13.2</a>, <a href="4-np.html#SP13_3">&#167;13.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="constant-syntax">VERB_MEANING_LINGUISTICS_TYPE</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">preform_lookahead_mode</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="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">O</span><span class="plain-syntax"> = </span><a href="4-np.html#SP2" class="function-link"><span class="function-syntax">NounPhrases::new_pronoun</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">implied_pronoun_usage</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-np.html#SP20" class="function-link"><span class="function-syntax">NounPhrases::PN_rel</span></a><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><span class="identifier-syntax">O</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="3-apoo.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-lm.html">1</a></li><li class="progresschapter"><a href="2-adj.html">2</a></li><li class="progresschapter"><a href="3-vrb.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresscurrent">np</li><li class="progresssection"><a href="4-vp.html">vp</a></li><li class="progressnext"><a href="4-vp.html">&#10095;</a></li></ul></div>

View file

@ -748,8 +748,8 @@ the exactly equivalent idea of the hat being worn by Darcy.
<span class="plain-syntax"> </span><span class="constant-syntax">VERB_MEANING_LINGUISTICS_TYPE</span><span class="plain-syntax"> *</span><span class="identifier-syntax">meaning</span><span class="plain-syntax"> = </span><a href="3-vm.html#SP11" class="function-link"><span class="function-syntax">VerbMeanings::get_regular_meaning</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">vm</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">meaning</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">meaning</span><span class="plain-syntax"> != </span><span class="identifier-syntax">VERB_MEANING_EQUALITY</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="identifier-syntax">next</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">next</span><span class="plain-syntax"> = </span><a href="4-np.html#SP19" class="function-link"><span class="function-syntax">NounPhrases::PN_rel</span></a><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">), </span><a href="3-vm.html#SP2" class="function-link"><span class="function-syntax">VerbMeanings::reverse_VMT</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">meaning</span><span class="plain-syntax">), </span><span class="constant-syntax">STANDARD_RELN</span><span class="plain-syntax">, </span><span class="identifier-syntax">O_PN</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="identifier-syntax">next</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">next</span><span class="plain-syntax"> = </span><a href="4-np.html#SP20" class="function-link"><span class="function-syntax">NounPhrases::PN_rel</span></a><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">), </span><a href="3-vm.html#SP2" class="function-link"><span class="function-syntax">VerbMeanings::reverse_VMT</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">meaning</span><span class="plain-syntax">), </span><span class="identifier-syntax">O_PN</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-vp.html#SP9">&#167;9</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP10"></a><b>&#167;10. </b></p>

View file

@ -479,6 +479,13 @@ for example.
<span class="plain-syntax"> PRONOUN_NT'you' {second person pronoun n/m/f s/p nom/acc 2p}</span>
<span class="plain-syntax"> RELATIONSHIP_NT'know' {meaning: knows-reversed}</span>
<span class="plain-syntax"> PRONOUN_NT'us' {first person pronoun n/m/f 1p p acc}</span>
<span class="plain-syntax">(6) anna is here</span>
<span class="plain-syntax">SENTENCE_NT'anna is here'</span>
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'anna' {proper nom/acc f s}</span>
<span class="plain-syntax"> PRONOUN_NT'here' {location pronoun n/m/f s/p nom/acc 3p}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP13"></a><b>&#167;13. </b>"Callings" use the special syntax "X called Y", which has to be handled
here in the <a href="index.html" class="internal">linguistics</a> module so that Y can safely wording which would

View file

@ -301,12 +301,12 @@ Within each categpry, items are listed in order of creation.
<span class="plain-syntax">adjective: 137 items</span>
<span class="plain-syntax">article: 2 items</span>
<span class="plain-syntax">noun: 2381 items</span>
<span class="plain-syntax">pronoun: 6 items</span>
<span class="plain-syntax">pronoun: 8 items</span>
<span class="plain-syntax">preposition: 273 items</span>
<span class="plain-syntax">determiner: 22 items</span>
<span class="plain-syntax">verb: 108 items</span>
<span class="plain-syntax">verb_form: 386 items</span>
<span class="plain-syntax">total in all categories: 3315</span>
<span class="plain-syntax">total in all categories: 3317</span>
<span class="plain-syntax">adjective: A0'even'</span>
<span class="plain-syntax">adjective: A1'odd'</span>
@ -2837,6 +2837,8 @@ Within each categpry, items are listed in order of creation.
<span class="plain-syntax">pronoun: first person possessive pronoun</span>
<span class="plain-syntax">pronoun: second person possessive pronoun</span>
<span class="plain-syntax">pronoun: third person possessive pronoun</span>
<span class="plain-syntax">pronoun: location pronoun</span>
<span class="plain-syntax">pronoun: implied pronoun</span>
<span class="plain-syntax">preposition: meant by</span>
<span class="plain-syntax">preposition: meaning</span>

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
Total memory consumption was 257140K = 251 MB
Total memory consumption was 257150K = 251 MB
62.5% was used for 1344520 objects, in 273549 frames in 201 x 800K = 160800K = 157 MB:
62.5% was used for 1344546 objects, in 273575 frames in 201 x 800K = 160800K = 157 MB:
9.8% inter_tree_node_array 36 x 8192 = 294912 objects, 25953408 bytes
5.4% text_stream_array 2570 x 100 = 257000 objects, 14474240 bytes
@ -20,9 +20,9 @@ Total memory consumption was 257140K = 251 MB
0.3% excerpt_meaning 3102 objects, 967824 bytes
0.3% inter_name_array 20 x 1000 = 20000 objects, 960640 bytes
0.3% inter_package 13201 objects, 950472 bytes
0.3% production 3897 objects, 904104 bytes
0.3% ptoken 8400 objects, 873600 bytes
0.3% grammatical_usage 3612 objects, 866880 bytes
0.3% production 3899 objects, 904568 bytes
0.3% ptoken 8412 objects, 874848 bytes
0.3% grammatical_usage 3614 objects, 867360 bytes
0.3% individual_form 2564 objects, 861504 bytes
0.3% inter_symbols_table 13201 objects, 844864 bytes
0.3% inter_schema_node 8692 objects, 834432 bytes
@ -43,10 +43,10 @@ Total memory consumption was 257140K = 251 MB
---- inter_annotation_array 1 x 8192 objects, 196640 bytes
---- inference 1703 objects, 177112 bytes
---- linked_list_item_array 10 x 1000 = 10000 objects, 160320 bytes
---- linguistic_stock_item 3315 objects, 159120 bytes
---- linguistic_stock_item 3317 objects, 159216 bytes
---- stacked_variable_owner_list_array 38 x 100 = 3800 objects, 153216 bytes
---- index_lexicon_entry 395 objects, 142200 bytes
---- nonterminal 754 objects, 138736 bytes
---- nonterminal 756 objects, 139104 bytes
---- action_pattern_array 6 x 100 = 600 objects, 129792 bytes
---- documentation_ref 1275 objects, 112200 bytes
---- hierarchy_location 731 objects, 105264 bytes
@ -72,7 +72,7 @@ Total memory consumption was 257140K = 251 MB
---- inter_node_list 750 objects, 42000 bytes
---- activity_list_array 1 x 1000 objects, 40032 bytes
---- response_message 407 objects, 35816 bytes
---- production_list 618 objects, 34608 bytes
---- production_list 619 objects, 34664 bytes
---- unary_predicate_array 8 x 1000 = 8000 objects, 32192 bytes
---- HTML_tag_array 1 x 1000 objects, 32032 bytes
---- regions_data 660 objects, 31680 bytes
@ -130,11 +130,11 @@ Total memory consumption was 257140K = 251 MB
---- equation_symbol 30 objects, 2400 bytes
---- semver_range 22 objects, 2288 bytes
---- method_set 56 objects, 1792 bytes
---- table_contribution_array 1 x 100 objects, 1632 bytes
---- activity_crossref_array 1 x 100 objects, 1632 bytes
---- pronoun_usage 42 objects, 1680 bytes
---- plugin_call_array 1 x 100 objects, 1632 bytes
---- activity_crossref_array 1 x 100 objects, 1632 bytes
---- table_contribution_array 1 x 100 objects, 1632 bytes
---- use_option 29 objects, 1624 bytes
---- pronoun_usage 40 objects, 1600 bytes
---- kind_interaction 39 objects, 1560 bytes
---- inter_annotation_form 37 objects, 1480 bytes
---- pipeline_step 12 objects, 1440 bytes
@ -162,27 +162,27 @@ Total memory consumption was 257140K = 251 MB
---- rulebook_outcome 17 objects, 680 bytes
---- inform_language 6 objects, 672 bytes
---- inter_warehouse_room 10 objects, 640 bytes
---- relation_guard 5 objects, 640 bytes
---- I6T_intervention 8 objects, 640 bytes
---- relation_guard 5 objects, 640 bytes
---- nascent_array 7 objects, 616 bytes
---- named_rulebook_outcome 15 objects, 600 bytes
---- inbuild_search_result 15 objects, 600 bytes
---- label_namespace 10 objects, 560 bytes
---- small_word_set 11 objects, 528 bytes
---- inform_kit 5 objects, 520 bytes
---- small_word_set 10 objects, 480 bytes
---- i6_memory_setting 13 objects, 416 bytes
---- equation 4 objects, 416 bytes
---- i6_memory_setting 13 objects, 416 bytes
---- dval_written 10 objects, 400 bytes
---- module_package 10 objects, 400 bytes
---- article_usage 8 objects, 384 bytes
---- source_file 5 objects, 360 bytes
---- inbuild_genre 7 objects, 336 bytes
---- grammatical_category 8 objects, 320 bytes
---- pronoun 8 objects, 320 bytes
---- door_dir_notice 5 objects, 320 bytes
---- build_step 4 objects, 288 bytes
---- door_to_notice 5 objects, 280 bytes
---- inform_pipeline 4 objects, 256 bytes
---- pronoun 6 objects, 240 bytes
---- verb_usage_tier 5 objects, 240 bytes
---- test_scenario 1 object, 208 bytes
---- build_skill 5 objects, 200 bytes
@ -190,13 +190,13 @@ Total memory consumption was 257140K = 251 MB
---- plural_dictionary_entry 4 objects, 192 bytes
---- kit_dependency 4 objects, 192 bytes
---- inform_project 1 object, 176 bytes
---- inter_architecture 4 objects, 160 bytes
---- code_generation_target 4 objects, 160 bytes
---- link_instruction 4 objects, 160 bytes
---- pointer_allocation 2 objects, 160 bytes
---- code_generation_target 4 objects, 160 bytes
---- inter_architecture 4 objects, 160 bytes
---- kind_template_obligation 4 objects, 160 bytes
---- element_activation 4 objects, 128 bytes
---- codegen_pipeline 1 object, 128 bytes
---- element_activation 4 objects, 128 bytes
---- inbuild_nest 3 objects, 120 bytes
---- inform_kit_ittt 2 objects, 96 bytes
---- compile_task_data 1 object, 80 bytes
@ -212,13 +212,13 @@ Total memory consumption was 257140K = 251 MB
37.4% was used for memory not allocated for objects:
15.8% text stream storage 41852724 bytes in 263306 claims
15.8% text stream storage 41853780 bytes in 263312 claims
3.5% dictionary storage 9265152 bytes in 16345 claims
---- sorting 1112 bytes in 3 claims
2.7% source text 7200000 bytes in 3 claims
4.1% source text details 10800000 bytes in 2 claims
---- linguistic stock array 81920 bytes in 2 claims
---- small word set array 96000 bytes in 20 claims
---- small word set array 105600 bytes in 22 claims
0.8% inter symbols storage 2276992 bytes in 13911 claims
6.3% inter bytecode storage 16802820 bytes in 14 claims
3.3% inter links storage 8750208 bytes in 246 claims
@ -229,5 +229,5 @@ Total memory consumption was 257140K = 251 MB
---- emitter array storage 14368 bytes in 8 claims
---- code generation workspace for objects 9200 bytes in 9 claims
20.1% was overhead - 53156144 bytes = 51910K = 50 MB
20.1% was overhead - 53153224 bytes = 51907K = 50 MB

View file

@ -1,11 +1,11 @@
<s-literal> hits 2097/23834 nti 24 constraint (none) extremes [1, infinity)
<s-literal> hits 2097/23834 nti 25 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/1493) constraint DS = {24} extremes [2, 2]
(hits 0/1291) constraint DS = {25} extremes [2, 2]
(@1)<quoted-text>=1 (@2)( (@3)<response-letter>=2 (@4))
(hits 273/834) (matched: '"[current item from the multiple object list]: [run paragraph on]" ( a )') constraint DS = {24} extremes [4, 4]
(hits 273/802) (matched: '"[current item from the multiple object list]: [run paragraph on]" ( a )') constraint DS = {25} 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/709) (matched: 'false') constraint CS = {18} extremes [1, 1]
(hits 78/228) (matched: 'false') constraint CS = {19} extremes [1, 1]
<s-literal-list>=1
(hits 0/3249) constraint DS = {20} extremes [2, infinity)
(hits 0/3243) constraint DS = {21} extremes [2, infinity)
(@1)unicode <s-unicode-character>=1
(hits 0/3500) constraint DS = {24} extremes [2, infinity)
(hits 0/3111) constraint DS = {25} extremes [2, infinity)
<s-literal-time>=1
(hits 0/3459) constraint DW = {21, 22, 23} extremes [2, 5]
(hits 0/3463) constraint DW = {22, 23, 24} 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
65.7% in compilation to Inter
25.2% in //Phrases::Manager::compile_first_block//
8.4% in //Phrases::Manager::compile_as_needed//
7.1% in //Strings::compile_responses//
66.1% in compilation to Inter
25.1% in //Phrases::Manager::compile_first_block//
9.0% in //Phrases::Manager::compile_as_needed//
6.8% in //Strings::compile_responses//
5.9% in //World::Compile::compile//
3.3% in //Assertions::Traverse::traverse1//
3.1% in //Sentences::VPs::traverse//
2.0% in //Phrases::Manager::RulePrintingRule_routine//
3.4% in //Assertions::Traverse::traverse1//
3.2% in //Sentences::VPs::traverse//
1.9% in //Phrases::Manager::RulePrintingRule_routine//
1.8% in //Phrases::Manager::rulebooks_array//
1.1% in //NewVerbs::ConjugateVerb//
1.0% in //NewVerbs::ConjugateVerb//
0.7% in //Phrases::Manager::traverse//
0.5% in //Phrases::Manager::parse_rule_parameters//
0.3% in //Phrases::Manager::compile_rulebooks//
@ -19,11 +19,11 @@
0.1% in //Sentences::RuleSubtrees::register_recently_lexed_phrases//
0.1% in //Task::load_types//
0.1% in //World::complete//
4.0% not specifically accounted for
31.8% in running Inter pipeline
10.6% in step preparation
10.1% in inter step 2/12: link
7.4% in inter step 12/12: generate inform6 -> auto.inf
4.3% not specifically accounted for
31.4% in running Inter pipeline
10.4% in step preparation
10.3% in inter step 2/12: link
7.0% 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
@ -32,6 +32,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
1.9% not specifically accounted for
2.0% in supervisor
0.4% not specifically accounted for
2.0% not specifically accounted for
2.1% in supervisor
0.2% not specifically accounted for

View file

@ -543,42 +543,3 @@ void Sentences::VPs::log(int verb_number) {
default: LOG("(number %d)", verb_number); break;
}
}
@ =
<np-relative-phrase-implicit> ::=
worn | ==> @<Act on the implicit RP worn@>; /* player\_plugin */
carried | ==> @<Act on the implicit RP carried@>; /* player\_plugin */
initially carried | ==> @<Act on the implicit RP initially carried@>; /* player\_plugin */
here ==> @<Act on the implicit RP here@>; /* spatial\_plugin */
@<Act on the implicit RP worn@> =
#ifndef IF_MODULE
return FALSE;
#endif
#ifdef IF_MODULE
*X = 0; *XP = NounPhrases::PN_rel(W, R_wearing, -1, NULL);
#endif
@<Act on the implicit RP carried@> =
#ifndef IF_MODULE
return FALSE;
#endif
#ifdef IF_MODULE
*X = 0; *XP = NounPhrases::PN_rel(W, R_carrying, -1, NULL);
#endif
@<Act on the implicit RP initially carried@> =
#ifndef IF_MODULE
return FALSE;
#endif
#ifdef IF_MODULE
*X = 0; *XP = NounPhrases::PN_rel(W, R_carrying, -1, NULL);
#endif
@<Act on the implicit RP here@> =
#ifndef IF_MODULE
return FALSE;
#endif
#ifdef IF_MODULE
*X = 0; *XP = NounPhrases::PN_rel(W, NULL, PARENTAGE_HERE_RELN, NULL);
#endif

View file

@ -209,7 +209,6 @@ void ParseTreeUsage::write_permissions(void) {
Annotations::allow(VERB_NT, listing_sense_ANNOT);
Annotations::allow(COMMON_NOUN_NT, action_meaning_ANNOT);
Annotations::allow(COMMON_NOUN_NT, creation_site_ANNOT);
Annotations::allow(COMMON_NOUN_NT, implicitly_refers_to_ANNOT);
Annotations::allow(COMMON_NOUN_NT, multiplicity_ANNOT);
Annotations::allow(COMMON_NOUN_NT, quant_ANNOT);
Annotations::allow(COMMON_NOUN_NT, quantification_parameter_ANNOT);
@ -481,7 +480,6 @@ void ParseTreeUsage::log_node(OUTPUT_STREAM, parse_node *pn) {
if (show_refers) {
if (Node::get_subject(pn)) { WRITE(" refers:$j", Node::get_subject(pn)); }
if (Node::get_evaluation(pn)) { WRITE(" eval:$P", Node::get_evaluation(pn)); }
if (Annotations::read_int(pn, implicitly_refers_to_ANNOT)) WRITE(" (implicit)");
}
if ((show_eval) && (Node::get_evaluation(pn))) {
WRITE(" eval:$P", Node::get_evaluation(pn));

View file

@ -68,6 +68,8 @@ int Assertions::Maker::which_assertion_case(parse_node *px, parse_node *py) {
}
int i, x=-1, y=-1;
node_type_t wx = Node::get_type(px), wy = Node::get_type(py);
if (wx == PRONOUN_NT) wx = PROPER_NOUN_NT;
if (wy == PRONOUN_NT) wy = PROPER_NOUN_NT;
for (i=0; i<ASSERTION_MATRIX_DIM; i++) {
if (assertion_matrix[i].row_node_type == wx) x=i;
if (assertion_matrix[i].row_node_type == wy) y=i;
@ -909,18 +911,17 @@ in this case.
>> (1) In the box is on the desk. (2) East of the Pitch is north of the Pavilion.
@<Case 28 - RELATIONSHIP on both sides@> =
if ((Annotations::read_int(px, relationship_node_type_ANNOT) == DIRECTION_RELN) &&
(Annotations::read_int(py, relationship_node_type_ANNOT) == DIRECTION_RELN)) {
#ifdef IF_MODULE
#ifdef IF_MODULE
if ((PL::MapDirections::get_mapping_relationship(px)) &&
(PL::MapDirections::get_mapping_relationship(py))) {
PL::Map::enter_one_way_mode();
#endif
Assertions::Maker::make_assertion_recursive(px, py->down);
Assertions::Maker::make_assertion_recursive(px->down, py);
#ifdef IF_MODULE
PL::Map::exit_one_way_mode();
#endif
return;
}
#endif
Problems::Using::assertion_problem(Task::syntax_tree(), _p_(PM_RelationsEquated),
"this says that two different relations are the same",
"like saying that 'in the box is on the table'. (Sometimes this "

View file

@ -257,12 +257,8 @@ has the marble and the box as its children, the relationship being containment.
if (p->down) {
Assertions::Refiner::refine(p->down, creation_rule);
#ifdef IF_MODULE
binary_predicate *bp = Node::get_relationship(p);
if ((bp) && (Plugins::Manage::plugged_in(map_plugin))) {
instance *dir = PL::MapDirections::get_mapping_direction(BinaryPredicates::get_reversal(bp));
if (dir == NULL) dir = PL::MapDirections::get_mapping_direction(bp);
if (dir) @<Make the relation one which refers to a map direction@>;
}
instance *dir = PL::MapDirections::get_mapping_relationship(p);
if (dir) @<Make the relation one which refers to a map direction@>;
#endif
if (p->down->next) Assertions::Refiner::refine(p->down->next, creation_rule);
}
@ -273,9 +269,7 @@ the relation is mapped-north-of, then the second child will become the
direction object for "north".
@<Make the relation one which refers to a map direction@> =
LOGIF(NOUN_RESOLUTION, "Directional predicate with BP %S ($O)\n",
BinaryPredicates::get_log_name(bp), dir);
Annotations::write_int(p, relationship_node_type_ANNOT, DIRECTION_RELN);
LOGIF(NOUN_RESOLUTION, "Directional predicate with BP from $O\n", dir);
wording DW = Instances::get_name(dir, FALSE);
p->down->next = NounPhrases::new_raw(DW);
Assertions::Refiner::noun_from_infs(p->down->next, Instances::as_subject(dir));
@ -332,6 +326,15 @@ inference subject representing the domain to which any new kind would belong.
@<Refine a pronoun@> =
pronoun_usage *pro = Node::get_pronoun(p);
if (pro) {
if (pro->pronoun_used == here_pronoun) {
Node::set_type(p, RELATIONSHIP_NT);
p->down = NounPhrases::new_pronoun(Node::get_text(p), pro);
return;
}
if (pro->pronoun_used == implied_pronoun) {
Plugins::Call::refine_implicit_noun(p);
return;
}
Node::set_type(p, PROPER_NOUN_NT);
if ((Stock::usage_might_be_singular(pro->usage) == FALSE) &&
(Assertions::Traverse::get_current_subject_plurality())) {
@ -366,7 +369,6 @@ complicated description is as follows:
@<Refine what seems to be a noun phrase@> =
Node::set_type(p, PROPER_NOUN_NT);
@<Act on the special no-words word range which implies the player@>;
@<Act on a newly-discovered property of something@>;
if (forbid_nowhere == FALSE) @<Act on any special noun phrases significant to plugins@>;
@ -376,23 +378,6 @@ complicated description is as follows:
if (creation_rule != FORBID_CREATION) Node::set_type(p, CREATED_NT);
else Node::set_subject(p, NULL);
@ There's just one case where an empty word range can be used as a noun
phrase -- when it represents an implicit noun, as here, where the person
doing the carrying is implicit:
>> The black box is carried.
@<Act on the special no-words word range which implies the player@> =
if (Annotations::read_int(p, implicitly_refers_to_ANNOT)) {
Plugins::Call::refine_implicit_noun(p);
return;
}
if (Wordings::empty(Node::get_text(p))) {
LOG("$T", current_sentence);
internal_error("Tried to resolve malformed noun-phrase");
}
@ The following is needed to handle something like "colour of the box",
where "colour" is a property name. We must be careful, though, to avoid
confusion with variable declarations:
@ -865,8 +850,6 @@ void Assertions::Refiner::perform_called_surgery(parse_node *p) {
parse_node *x_pn = p->down->down->next; /* "north" in the example */
parse_node *name_pn = p->down->next; /* "hot and cold room" in the example */
Node::set_type(p, RELATIONSHIP_NT);
Annotations::write_int(p, relationship_node_type_ANNOT,
Annotations::read_int(p->down, relationship_node_type_ANNOT));
Node::set_type(p->down, CALLED_NT);
p->down->next = x_pn;
p->down->down->next = name_pn;

View file

@ -21,15 +21,15 @@ void Assertions::Relational::assert_subtree_in_relationship(parse_node *value, p
Assertions::Relational::assert_subtree_in_relationship(value->down->next, relationship_subtree);
return;
}
#ifdef IF_MODULE
if (PL::MapDirections::get_mapping_relationship(relationship_subtree))
@<Exceptional relationship nodes for map connections@>;
pronoun_usage *pro = Node::get_pronoun(relationship_subtree->down);
if ((pro) && (pro->pronoun_used == here_pronoun))
@<Exceptional relationship nodes for placing objects "here"@>;
#endif
switch(Annotations::read_int(relationship_subtree, relationship_node_type_ANNOT)) {
case STANDARD_RELN: @<Standard relationship nodes (the vast majority)@>;
#ifdef IF_MODULE
case PARENTAGE_HERE_RELN: @<Exceptional relationship nodes for placing objects "here"@>;
case DIRECTION_RELN: @<Exceptional relationship nodes for map connections@>;
#endif
default: internal_error("unknown RELATIONSHIP node type");
}
@<Standard relationship nodes (the vast majority)@>;
}
@<Standard relationship nodes (the vast majority)@> =
@ -37,7 +37,7 @@ void Assertions::Relational::assert_subtree_in_relationship(parse_node *value, p
if (bp == NULL) internal_error("asserted bp-less relationship subtree");
Properties::SettingRelations::fix_property_bp(bp);
Assertions::Relational::assert_relation_between_subtrees(value, bp, relationship_subtree->down);
break;
return;
@<Exceptional relationship nodes for placing objects "here"@> =
if (Node::get_subject(value) == NULL) {
@ -51,7 +51,7 @@ void Assertions::Relational::assert_subtree_in_relationship(parse_node *value, p
Calculus::Propositions::Abstract::to_put_here(),
Node::get_subject(value), prevailing_mood);
}
break;
return;
@<Exceptional relationship nodes for map connections@> =
@<Make some paranoid checks that the map subtree is valid@>;
@ -71,7 +71,7 @@ void Assertions::Relational::assert_subtree_in_relationship(parse_node *value, p
"the source of a map connection has to be a room or door",
"so sentences like 'The pink door is south of 0.' are not "
"allowed.");
break;
return;
}
if ((iy == NULL) || (id == NULL))
internal_error("malformed directional subtree");
@ -86,7 +86,7 @@ void Assertions::Relational::assert_subtree_in_relationship(parse_node *value, p
"a door or 'nowhere'",
"but here the destination doesn't even seem to be an object.");
}
break;
return;
@<Make some paranoid checks that the map subtree is valid@> =
if ((relationship_subtree->down == NULL) ||
@ -97,13 +97,13 @@ void Assertions::Relational::assert_subtree_in_relationship(parse_node *value, p
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(BelievedImpossible),
"this is not straightforward in saying which room (or door) leads away from",
"and should just name the source.");
break;
return;
}
if (Node::get_type(relationship_subtree->down->next) != PROPER_NOUN_NT) {
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(BelievedImpossible),
"this is not straightforward in saying which direction the room (or door) lies in",
"and should just name the direction.");
break;
return;
}
@ =

View file

@ -271,3 +271,13 @@ instance *PL::MapDirections::get_mapping_direction(binary_predicate *bp) {
return NULL;
}
instance *PL::MapDirections::get_mapping_relationship(parse_node *p) {
binary_predicate *bp = Node::get_relationship(p);
if ((bp) && (Plugins::Manage::plugged_in(map_plugin))) {
instance *dir = PL::MapDirections::get_mapping_direction(
BinaryPredicates::get_reversal(bp));
if (dir == NULL) dir = PL::MapDirections::get_mapping_direction(bp);
return dir;
}
return NULL;
}

View file

@ -1,5 +1,5 @@
Size of lexicon: 3102 excerpt meanings
Stored among 841 words out of total vocabulary of 10553
Stored among 841 words out of total vocabulary of 10555
711 words have a start list: longest belongs to report (with 293 meanings)
15 words have an end list: longest belongs to case (with 6 meanings)
29 words have a middle list: longest belongs to to (with 4 meanings)

View file

@ -35,8 +35,6 @@ some new node types:
@e occurrence_ANNOT /* |time_period|: any stipulation on occurrence */
@e explicit_gender_marker_ANNOT /* |int|: used by PROPER NOUN nodes for evident genders */
@e relationship_ANNOT /* |binary_predicate|: for RELATIONSHIP nodes */
@e relationship_node_type_ANNOT /* |int|: what kind of inference this assertion makes */
@e implicitly_refers_to_ANNOT /* |int|: this will implicitly refer to something */
=
DECLARE_ANNOTATION_FUNCTIONS(verb, verb_usage)
@ -98,12 +96,9 @@ void Diagrams::permissions(void) {
Annotations::allow(COMMON_NOUN_NT, noun_ANNOT);
Annotations::allow(RELATIONSHIP_NT, preposition_ANNOT);
Annotations::allow(RELATIONSHIP_NT, relationship_ANNOT);
Annotations::allow(RELATIONSHIP_NT, relationship_node_type_ANNOT);
Annotations::allow_for_category(L3_NCAT, linguistic_error_here_ANNOT);
Annotations::allow_for_category(L3_NCAT, explicit_gender_marker_ANNOT);
Annotations::allow_for_category(L3_NCAT, article_ANNOT);
Annotations::allow(UNPARSED_NOUN_NT, implicitly_refers_to_ANNOT);
Annotations::allow(PROPER_NOUN_NT, implicitly_refers_to_ANNOT);
}
@ And the following conveniently prints out a sentence in diagram form; this
@ -147,16 +142,8 @@ void Diagrams::log_node(OUTPUT_STREAM, parse_node *pn) {
Articles::write_usage(OUT, Node::get_article(pn));
break;
case RELATIONSHIP_NT:
WRITE(" {meaning: ");
switch (Annotations::read_int(pn, relationship_node_type_ANNOT)) {
case STANDARD_RELN:
if (Node::get_relationship(pn))
WRITE("%S", Node::get_relationship(pn)->debugging_log_name);
break;
case PARENTAGE_HERE_RELN: WRITE("(here)"); break;
case DIRECTION_RELN: WRITE("(direction)"); break;
}
WRITE("}");
if (Node::get_relationship(pn))
WRITE(" {meaning: %S}", Node::get_relationship(pn)->debugging_log_name);
break;
}
}

View file

@ -36,10 +36,12 @@ void Pronouns::write_usage(OUTPUT_STREAM, pronoun_usage *pu) {
WRITE("}");
}
@ The stock of pronouns is fixed at six. We are going to regard the three
@ The stock of pronouns is fixed, as follows. We are going to regard the three
persons as being different pronouns, since they make different references,
though not every grammarian would agree. So we have three "agent pronouns" --
those standing for subject or object -- and then three possessives.
those standing for subject or object -- and then three possessives, and "here",
which stands in the place of a noun referring to a location, and is thus also
a pronoun.
=
grammatical_category *pronouns_category = NULL;
@ -49,6 +51,8 @@ pronoun *third_person_pronoun = NULL;
pronoun *first_person_possessive_pronoun = NULL;
pronoun *second_person_possessive_pronoun = NULL;
pronoun *third_person_possessive_pronoun = NULL;
pronoun *here_pronoun = NULL;
pronoun *implied_pronoun = NULL;
void Pronouns::create_category(void) {
pronouns_category = Stock::new_category(I"pronoun");
@ -59,6 +63,8 @@ void Pronouns::create_category(void) {
first_person_possessive_pronoun = Pronouns::new(I"first person possessive pronoun");
second_person_possessive_pronoun = Pronouns::new(I"second person possessive pronoun");
third_person_possessive_pronoun = Pronouns::new(I"third person possessive pronoun");
here_pronoun = Pronouns::new(I"location pronoun");
implied_pronoun = Pronouns::new(I"implied pronoun");
}
pronoun *Pronouns::new(text_stream *name) {
@ -92,6 +98,10 @@ small_word_set *possessive_pronouns_sws = NULL, /* all possessive pronouns of an
*second_person_possessive_pronouns_sws = NULL,
*third_person_possessive_pronouns_sws = NULL;
small_word_set *here_pronouns_sws = NULL;
pronoun_usage *implied_pronoun_usage = NULL;
@ And now we have to make them. The following capacity would be enough even if
we were simultaneously dealing with four languages in which every inflection
produced a different word. So it really is not going to run out.
@ -143,6 +153,14 @@ void Pronouns::create_small_word_sets(void) {
third_person_possessive_pronouns_sws = Stock::new_sws(PRONOUN_SWS_CAPACITY);
Pronouns::add(third_person_possessive_pronouns_sws, <third-person-possessive-pronoun-table>,
-1, THIRD_PERSON, third_person_possessive_pronoun);
here_pronouns_sws = Stock::new_sws(PRONOUN_SWS_CAPACITY);
Pronouns::add(here_pronouns_sws, <here-pronoun-table>,
-1, THIRD_PERSON, here_pronoun);
implied_pronoun_usage = CREATE(pronoun_usage);
implied_pronoun_usage->pronoun_used = implied_pronoun;
implied_pronoun_usage->usage = Stock::new_usage(implied_pronoun->in_stock, NULL);
}
@ All of which use the following, which extracts inflected forms from the
@ -250,6 +268,14 @@ parsed lies in the relevant small word set.
return FALSE;
}
<here-pronoun> internal 1 {
if (pronouns_sws == NULL) Pronouns::create_small_word_sets();
vocabulary_entry *ve = Lexer::word(Wordings::first_wn(W));
*XP = (pronoun_usage *) Stock::find_in_sws(here_pronouns_sws, ve);
if (*XP) return TRUE;
return FALSE;
}
@h English pronouns.
So, then, these nonterminals are not parsed by Preform but are instead used
to stock small word sets above.
@ -284,6 +310,10 @@ feminine singular, feminine plural.
its their his their her their |
its their his their her their
<here-pronoun-table> ::=
here here here here here here |
here here here here here here
@h Unit testing.
The //linguistics-test// test case |pronouns| calls this.

View file

@ -14,10 +14,10 @@ turn:
relationships and properties (and other grammar meaningful only for references
to physical objects and kinds) are parsed.
At levels (NP1) and (NP2), a NP produces a single |PROPER_NOUN_NT| node; at
level (NP3), the result is a subtree contining |PROPER_NOUN_NT| and |AND_NT|
At levels (NP1) and (NP2), a NP produces a single |UNPARSED_NOUN_NT| node; at
level (NP3), the result is a subtree contining |UNPARSED_NOUN_NT| and |AND_NT|
nodes; but at level (NP4) this subtree may include any of |RELATIONSHIP_NT|,
|CALLED_NT|, |WITH_NT|, |AND_NT|, |KIND_NT| or |PROPER_NOUN_NT|.
|CALLED_NT|, |WITH_NT|, |AND_NT|, |KIND_NT| or |UNPARSED_NOUN_NT|.
Because a small proportion of noun phrase subtrees is thrown away, due to
backtracking on mistaken guesses at parsing of sentences, it is important
@ -44,6 +44,14 @@ parse_node *NounPhrases::new_proper_noun(wording W) {
return PN;
}
parse_node *NounPhrases::new_pronoun(wording W, pronoun_usage *pro) {
if (preform_lookahead_mode) return NULL;
parse_node *PN = Node::new(PRONOUN_NT);
Node::set_text(PN, W);
Node::set_pronoun(PN, pro);
return PN;
}
@ Other node types are generated as follows. Note that these make nothing in
lookahead mode; this prevents needless memory allocation.
@ -256,6 +264,36 @@ in the case of a participle like "holding".
<np-relative-phrase-implicit> | ==> 0; *XP = RP[1]
<np-relative-phrase-explicit> ==> 0; *XP = RP[1]
@ =
<np-relative-phrase-implicit> ::=
worn | ==> @<Act on the implicit RP worn@>; /* player\_plugin */
carried | ==> @<Act on the implicit RP carried@>; /* player\_plugin */
initially carried ==> @<Act on the implicit RP initially carried@>; /* player\_plugin */
@<Act on the implicit RP worn@> =
#ifndef IF_MODULE
return FALSE;
#endif
#ifdef IF_MODULE
*X = 0; *XP = NounPhrases::PN_implied_rel(W, R_wearing);
#endif
@<Act on the implicit RP carried@> =
#ifndef IF_MODULE
return FALSE;
#endif
#ifdef IF_MODULE
*X = 0; *XP = NounPhrases::PN_implied_rel(W, R_carrying);
#endif
@<Act on the implicit RP initially carried@> =
#ifndef IF_MODULE
return FALSE;
#endif
#ifdef IF_MODULE
*X = 0; *XP = NounPhrases::PN_implied_rel(W, R_carrying);
#endif
@ Inform guesses above that most English words ending in "-ing" are present
participles -- like guessing, bluffing, cheating, and so on. But there is
a conspicuous exception to this; so any word found in <non-participles>
@ -298,7 +336,7 @@ directions, in particular, a little better.
VERB_MEANING_LINGUISTICS_TYPE *R = VerbMeanings::get_regular_meaning_of_form(
Verbs::find_form(permitted_verb, RP[1], NULL));
if (R == NULL) return FALSE;
*XP = NounPhrases::PN_rel(W, VerbMeanings::reverse_VMT(R), -1, RP[2]);
*XP = NounPhrases::PN_rel(W, VerbMeanings::reverse_VMT(R), RP[2]);
@ Now the heart of it. There are basically seven constructions which can make
complex NPs from simple ones: we've already seen one of these, the relative
@ -312,8 +350,8 @@ into the subtree:
= (text)
RELATIONSHIP_NT "in" = containment
CALLED_NT "called"
PROPER_NOUN_NT "container" article:indefinite
PROPER_NOUN_NT "flask and cap with flange" article:definite
UNPARSED_NOUN_NT "container" article:indefinite
UNPARSED_NOUN_NT "flask and cap with flange" article:definite
=
but we also want:
@ -321,7 +359,7 @@ but we also want:
= (text)
RELATIONSHIP_NT "in" = containment
WITH_NT "with"
PROPER_NOUN_NT "container" article:indefinite
UNPARSED_NOUN_NT "container" article:indefinite
AND_NT "and"
PROPERTY_LIST_NT "carrying capacity 10"
PROPERTY_LIST_NT "diameter 12"
@ -377,7 +415,8 @@ speed optimisation, and doesn't affect the language's definition.
<np-inner> <np-with-or-having-tail> | ==> 0; *XP = NounPhrases::PN_pair(WITH_NT, Wordings::one_word(R[2]), RP[1], RP[2])
<np-inner> <np-and-tail> | ==> 0; *XP = NounPhrases::PN_pair(AND_NT, Wordings::one_word(R[2]), RP[1], RP[2])
<np-kind-phrase> | ==> 0; *XP = RP[1]
<agent-pronoun> | ==> GENERATE_RAW_NP; Node::set_type(*XP, PRONOUN_NT); Node::set_pronoun(*XP, RP[1]);
<agent-pronoun> | ==> 0; *XP = NounPhrases::new_pronoun(W, RP[1])
<here-pronoun> | ==> 0; *XP = NounPhrases::new_pronoun(W, RP[1])
<np-articled-balanced> ==> 0; *XP = RP[1]
@ The tail of with-or-having parses for instance "with carrying capacity 5"
@ -438,23 +477,18 @@ but definite articles are not.
@h Relationship nodes.
A modest utility routine to construct and annotate RELATIONSHIP nodes.
@d STANDARD_RELN 0 /* the default annotation value: never explicitly set */
@d PARENTAGE_HERE_RELN 1 /* only ever set by the Spatial plugin */
@d DIRECTION_RELN 2
=
parse_node *NounPhrases::PN_rel(wording W, VERB_MEANING_LINGUISTICS_TYPE *R, int reln_type, parse_node *referent) {
parse_node *NounPhrases::PN_rel(wording W, VERB_MEANING_LINGUISTICS_TYPE *R, parse_node *O) {
if (preform_lookahead_mode) return NULL;
if (O == NULL) internal_error("no object for relationship");
parse_node *P = Node::new(RELATIONSHIP_NT);
Node::set_text(P, W);
if (R) Node::set_relationship(P, R);
else if (reln_type >= 0)
Annotations::write_int(P, relationship_node_type_ANNOT, reln_type);
else internal_error("undefined relationship node");
if (referent == NULL) {
referent = NounPhrases::new_raw(W);
Annotations::write_int(referent, implicitly_refers_to_ANNOT, TRUE);
}
P->down = referent;
Node::set_relationship(P, R);
P->down = O;
return P;
}
parse_node *NounPhrases::PN_implied_rel(wording W, VERB_MEANING_LINGUISTICS_TYPE *R) {
if (preform_lookahead_mode) return NULL;
parse_node *O = NounPhrases::new_pronoun(W, implied_pronoun_usage);
return NounPhrases::PN_rel(W, R, O);
}

View file

@ -569,7 +569,7 @@ the exactly equivalent idea of the hat being worn by Darcy.
if (meaning == NULL) return FALSE;
if (meaning != VERB_MEANING_EQUALITY)
V->next->next = NounPhrases::PN_rel(
Node::get_text(V), VerbMeanings::reverse_VMT(meaning), STANDARD_RELN, O_PN);
Node::get_text(V), VerbMeanings::reverse_VMT(meaning), O_PN);
@

View file

@ -1,12 +1,12 @@
adjective: 137 items
article: 2 items
noun: 2381 items
pronoun: 6 items
pronoun: 8 items
preposition: 273 items
determiner: 22 items
verb: 108 items
verb_form: 386 items
total in all categories: 3315
total in all categories: 3317
adjective: A0'even'
adjective: A1'odd'
@ -2537,6 +2537,8 @@ pronoun: third person pronoun
pronoun: first person possessive pronoun
pronoun: second person possessive pronoun
pronoun: third person possessive pronoun
pronoun: location pronoun
pronoun: implied pronoun
preposition: meant by
preposition: meaning

View file

@ -38,3 +38,10 @@ SENTENCE_NT'you know us'
RELATIONSHIP_NT'know' {meaning: knows-reversed}
PRONOUN_NT'us' {first person pronoun n/m/f 1p p acc}
(6) anna is here
SENTENCE_NT'anna is here'
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
PROPER_NOUN_NT'anna' {proper nom/acc f s}
PRONOUN_NT'here' {location pronoun n/m/f s/p nom/acc 3p}

View file

@ -38,3 +38,10 @@ SENTENCE_NT'you know us'
RELATIONSHIP_NT'know' {meaning: knows-reversed}
PRONOUN_NT'us' {first person pronoun n/m/f 1p p acc}
(6) anna is here
SENTENCE_NT'anna is here'
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
PROPER_NOUN_NT'anna' {proper nom/acc f s}
PRONOUN_NT'here' {location pronoun n/m/f s/p nom/acc 3p}

View file

@ -7,3 +7,5 @@ I carry the Ming Vase.
The sailors know them.
You know us.
Anna is here.