1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-06-26 12:10:44 +03:00

Better imperative verbs and special meanings

This commit is contained in:
Graham Nelson 2020-07-27 17:44:29 +01:00
parent c6766f6f95
commit df4cfd0d84
42 changed files with 890 additions and 376 deletions

View file

@ -496,8 +496,8 @@ now absolutely any non-empty word range is accepted as the property name.
<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">BUILTIN_VERBM:</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">MW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">GET_RW</span><span class="plain-syntax">(</span><span class="function-syntax">&lt;verb-implies-sentence-object&gt;</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">vm</span><span class="plain-syntax"> = </span><span class="identifier-syntax">VerbMeanings::sm_by_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">Lexer::word_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">MW</span><span class="plain-syntax">)), &amp;</span><span class="identifier-syntax">priority</span><span 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::length</span><span class="plain-syntax">(</span><span class="identifier-syntax">MW</span><span class="plain-syntax">) != </span><span class="constant-syntax">1</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">VerbMeanings::is_meaningless</span><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">vm</span><span class="plain-syntax">))) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">special_meaning_holder</span><span class="plain-syntax"> *</span><span class="identifier-syntax">smh</span><span class="plain-syntax"> = </span><span class="identifier-syntax">SpecialMeanings::find_from_wording</span><span class="plain-syntax">(</span><span class="identifier-syntax">MW</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">smh</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">ifndef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">source_file</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pos</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Lexer::file_of_origin</span><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">MW</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">loc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Extensions::corresponding_to</span><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">);</span>
@ -508,6 +508,9 @@ now absolutely any non-empty word range is accepted as the property name.
<span class="plain-syntax"> </span><span class="string-syntax">"and should be one of the ones used in the Preamble to the "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"Standard Rules."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">vm</span><span class="plain-syntax"> = </span><span class="identifier-syntax">VerbMeanings::regular</span><span class="plain-syntax">(</span><span class="identifier-syntax">R_equality</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">vm</span><span class="plain-syntax"> = </span><span class="identifier-syntax">VerbMeanings::special</span><span class="plain-syntax">(</span><span class="identifier-syntax">smh</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">priority</span><span class="plain-syntax"> = </span><span class="identifier-syntax">SpecialMeanings::get_metadata_N</span><span class="plain-syntax">(</span><span class="identifier-syntax">smh</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>
@ -785,52 +788,52 @@ foreign verbs (4).
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">NewVerbs::bootstrap</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">NewVerbs::bootstrap</span></span>:<br/>Nonstructural Sentences - <a href="7-ns.html#SP9">&#167;9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VerbMeanings::declare_sm</span><span class="plain-syntax">(</span><a href="6-nv.html#SP14" class="function-link"><span class="function-syntax">NewVerbs::verb_means_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"verb-means"</span><span class="plain-syntax">, </span><span class="constant-syntax">3</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="6-nv.html#SP14" class="function-link"><span class="function-syntax">NewVerbs::verb_means_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"verb-means"</span><span class="plain-syntax">, </span><span class="constant-syntax">3</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VerbMeanings::declare_sm</span><span class="plain-syntax">(</span><a href="6-nv.html#SP12" class="function-link"><span class="function-syntax">NewVerbs::new_verb_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"new-verb"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VerbMeanings::declare_sm</span><span class="plain-syntax">(</span><a href="3-pd.html#SP2" class="function-link"><span class="function-syntax">Plurals::plural_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"new-plural"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VerbMeanings::declare_sm</span><span class="plain-syntax">(</span><a href="21-ac.html#SP4" class="function-link"><span class="function-syntax">Activities::new_activity_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"new-activity"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="6-nv.html#SP12" class="function-link"><span class="function-syntax">NewVerbs::new_verb_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"new-verb"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="3-pd.html#SP2" class="function-link"><span class="function-syntax">Plurals::plural_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"new-plural"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="21-ac.html#SP4" class="function-link"><span class="function-syntax">Activities::new_activity_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"new-activity"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VerbMeanings::declare_sm</span><span class="plain-syntax">(</span><span class="identifier-syntax">PL::Actions::new_action_SMF</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"new-action"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><span class="identifier-syntax">PL::Actions::new_action_SMF</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"new-action"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VerbMeanings::declare_sm</span><span class="plain-syntax">(</span><a href="6-nv.html#SP22" class="function-link"><span class="function-syntax">NewVerbs::new_adjective_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"new-adjective"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VerbMeanings::declare_sm</span><span class="plain-syntax">(</span><a href="9-pd.html#SP2" class="function-link"><span class="function-syntax">Assertions::Property::either_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"new-either-or"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VerbMeanings::declare_sm</span><span class="plain-syntax">(</span><a href="19-tod.html#SP5" class="function-link"><span class="function-syntax">Tables::Defining::defined_by_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"defined-by-table"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VerbMeanings::declare_sm</span><span class="plain-syntax">(</span><a href="21-rps.html#SP4" class="function-link"><span class="function-syntax">Rules::Placement::listed_in_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"rule-listed-in"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="6-nv.html#SP22" class="function-link"><span class="function-syntax">NewVerbs::new_adjective_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"new-adjective"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="9-pd.html#SP2" class="function-link"><span class="function-syntax">Assertions::Property::either_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"new-either-or"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="19-tod.html#SP5" class="function-link"><span class="function-syntax">Tables::Defining::defined_by_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"defined-by-table"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="21-rps.html#SP4" class="function-link"><span class="function-syntax">Rules::Placement::listed_in_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"rule-listed-in"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">MULTIMEDIA_MODULE</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VerbMeanings::declare_sm</span><span class="plain-syntax">(</span><span class="identifier-syntax">PL::Figures::new_figure_SMF</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"new-figure"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VerbMeanings::declare_sm</span><span class="plain-syntax">(</span><span class="identifier-syntax">PL::Sounds::new_sound_SMF</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"new-sound"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VerbMeanings::declare_sm</span><span class="plain-syntax">(</span><span class="identifier-syntax">PL::Files::new_file_SMF</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"new-file"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><span class="identifier-syntax">PL::Figures::new_figure_SMF</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"new-figure"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><span class="identifier-syntax">PL::Sounds::new_sound_SMF</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"new-sound"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><span class="identifier-syntax">PL::Files::new_file_SMF</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"new-file"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">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">VerbMeanings::declare_sm</span><span class="plain-syntax">(</span><span class="identifier-syntax">PL::Bibliographic::episode_SMF</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"episode"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><span class="identifier-syntax">PL::Bibliographic::episode_SMF</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"episode"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VerbMeanings::declare_sm</span><span class="plain-syntax">(</span><a href="6-rlt.html#SP6" class="function-link"><span class="function-syntax">Relations::new_relation_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"new-relation"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VerbMeanings::declare_sm</span><span class="plain-syntax">(</span><a href="9-pd.html#SP3" class="function-link"><span class="function-syntax">Assertions::Property::optional_either_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"can-be"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VerbMeanings::declare_sm</span><span class="plain-syntax">(</span><a href="5-lp.html#SP31" class="function-link"><span class="function-syntax">LiteralPatterns::specifies_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"specifies-notation"</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VerbMeanings::declare_sm</span><span class="plain-syntax">(</span><a href="21-rps.html#SP7" class="function-link"><span class="function-syntax">Rules::Placement::substitutes_for_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"rule-substitutes-for"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="6-rlt.html#SP6" class="function-link"><span class="function-syntax">Relations::new_relation_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"new-relation"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="9-pd.html#SP3" class="function-link"><span class="function-syntax">Assertions::Property::optional_either_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"can-be"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="5-lp.html#SP31" class="function-link"><span class="function-syntax">LiteralPatterns::specifies_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"specifies-notation"</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="21-rps.html#SP7" class="function-link"><span class="function-syntax">Rules::Placement::substitutes_for_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"rule-substitutes-for"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VerbMeanings::declare_sm</span><span class="plain-syntax">(</span><span class="identifier-syntax">PL::Scenes::begins_when_SMF</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"scene-begins-when"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VerbMeanings::declare_sm</span><span class="plain-syntax">(</span><span class="identifier-syntax">PL::Scenes::ends_when_SMF</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"scene-ends-when"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><span class="identifier-syntax">PL::Scenes::begins_when_SMF</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"scene-begins-when"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><span class="identifier-syntax">PL::Scenes::ends_when_SMF</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"scene-ends-when"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VerbMeanings::declare_sm</span><span class="plain-syntax">(</span><a href="21-rps.html#SP11" class="function-link"><span class="function-syntax">Rules::Placement::does_nothing_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"rule-does-nothing"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VerbMeanings::declare_sm</span><span class="plain-syntax">(</span><a href="21-rps.html#SP12" class="function-link"><span class="function-syntax">Rules::Placement::does_nothing_if_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"rule-does-nothing-if"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VerbMeanings::declare_sm</span><span class="plain-syntax">(</span><a href="21-rps.html#SP13" class="function-link"><span class="function-syntax">Rules::Placement::does_nothing_unless_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"rule-does-nothing-unless"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VerbMeanings::declare_sm</span><span class="plain-syntax">(</span><a href="7-ns.html#SP18" class="function-link"><span class="function-syntax">Sentences::VPs::translates_into_unicode_as_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"translates-into-unicode"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VerbMeanings::declare_sm</span><span class="plain-syntax">(</span><a href="7-ns.html#SP18" class="function-link"><span class="function-syntax">Sentences::VPs::translates_into_I6_as_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"translates-into-i6"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VerbMeanings::declare_sm</span><span class="plain-syntax">(</span><a href="7-ns.html#SP18" class="function-link"><span class="function-syntax">Sentences::VPs::translates_into_language_as_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"translates-into-language"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VerbMeanings::declare_sm</span><span class="plain-syntax">(</span><a href="26-uo.html#SP5" class="function-link"><span class="function-syntax">UseOptions::use_translates_as_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"use-translates"</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="21-rps.html#SP11" class="function-link"><span class="function-syntax">Rules::Placement::does_nothing_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"rule-does-nothing"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="21-rps.html#SP12" class="function-link"><span class="function-syntax">Rules::Placement::does_nothing_if_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"rule-does-nothing-if"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="21-rps.html#SP13" class="function-link"><span class="function-syntax">Rules::Placement::does_nothing_unless_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"rule-does-nothing-unless"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="7-ns.html#SP18" class="function-link"><span class="function-syntax">Sentences::VPs::translates_into_unicode_as_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"translates-into-unicode"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="7-ns.html#SP18" class="function-link"><span class="function-syntax">Sentences::VPs::translates_into_I6_as_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"translates-into-i6"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="7-ns.html#SP18" class="function-link"><span class="function-syntax">Sentences::VPs::translates_into_language_as_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"translates-into-language"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="26-uo.html#SP5" class="function-link"><span class="function-syntax">UseOptions::use_translates_as_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"use-translates"</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VerbMeanings::declare_sm</span><span class="plain-syntax">(</span><a href="26-ts.html#SP9" class="function-link"><span class="function-syntax">PL::Parsing::TestScripts::test_with_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"test-with"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VerbMeanings::declare_sm</span><span class="plain-syntax">(</span><span class="identifier-syntax">PL::Parsing::understand_as_SMF</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"understand-as"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="26-ts.html#SP9" class="function-link"><span class="function-syntax">PL::Parsing::TestScripts::test_with_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"test-with"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><span class="identifier-syntax">PL::Parsing::understand_as_SMF</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"understand-as"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VerbMeanings::declare_sm</span><span class="plain-syntax">(</span><a href="26-uo.html#SP11" class="function-link"><span class="function-syntax">UseOptions::use_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"use"</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="26-uo.html#SP11" class="function-link"><span class="function-syntax">UseOptions::use_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"use"</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VerbMeanings::declare_sm</span><span class="plain-syntax">(</span><span class="identifier-syntax">PL::Bibliographic::Release::release_along_with_SMF</span><span class="plain-syntax">,</span><span class="identifier-syntax">I</span><span class="string-syntax">"release-along-with"</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VerbMeanings::declare_sm</span><span class="plain-syntax">(</span><span class="identifier-syntax">PL::EPSMap::index_map_with_SMF</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"index-map-with"</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><span class="identifier-syntax">PL::Bibliographic::Release::release_along_with_SMF</span><span class="plain-syntax">,</span><span class="identifier-syntax">I</span><span class="string-syntax">"release-along-with"</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><span class="identifier-syntax">PL::EPSMap::index_map_with_SMF</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"index-map-with"</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VerbMeanings::declare_sm</span><span class="plain-syntax">(</span><a href="7-ns.html#SP11" class="function-link"><span class="function-syntax">Sentences::VPs::include_in_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"include-in"</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VerbMeanings::declare_sm</span><span class="plain-syntax">(</span><a href="7-ns.html#SP11" class="function-link"><span class="function-syntax">Sentences::VPs::omit_from_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"omit-from"</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="7-ns.html#SP11" class="function-link"><span class="function-syntax">Sentences::VPs::include_in_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"include-in"</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="7-ns.html#SP11" class="function-link"><span class="function-syntax">Sentences::VPs::omit_from_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"omit-from"</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">word_assemblage</span><span class="plain-syntax"> </span><span class="identifier-syntax">infinitive</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PreformUtilities::wording</span><span class="plain-syntax">(</span><span class="function-syntax">&lt;bootstrap-verb&gt;</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">verb_conjugation</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Conjugation::conjugate</span><span class="plain-syntax">(</span><span class="identifier-syntax">infinitive</span><span class="plain-syntax">, </span><span class="identifier-syntax">DefaultLanguage::get</span><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">));</span>
@ -844,7 +847,7 @@ foreign verbs (4).
<span class="plain-syntax"> </span><span class="identifier-syntax">vc</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">vc_conjugates</span><span class="plain-syntax"> = </span><span class="identifier-syntax">vi</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VerbUsages::register_all_usages_of_verb</span><span class="plain-syntax">(</span><span class="identifier-syntax">vi</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="constant-syntax">3</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">Verbs::add_form</span><span class="plain-syntax">(</span><span class="identifier-syntax">vi</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">VerbMeanings::sm_by_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="string-syntax">"verb-means"</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">), </span><span class="identifier-syntax">SVO_FS_BIT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Verbs::add_form</span><span class="plain-syntax">(</span><span class="identifier-syntax">vi</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">SpecialMeanings::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="string-syntax">"verb-means"</span><span class="plain-syntax">), </span><span class="identifier-syntax">SVO_FS_BIT</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP18"></a><b>&#167;18. Runtime conjugation. </b></p>

View file

@ -193,14 +193,14 @@ in quick succession, the second run-through does nothing.)
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::within</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">options_file_wording</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">special_meaning_fn</span><span class="plain-syntax"> </span><span class="identifier-syntax">soa</span><span class="plain-syntax"> = </span><span class="identifier-syntax">VerbMeanings::sm_of_verb_node</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="plain-syntax"> </span><span class="identifier-syntax">special_meaning_holder</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sm</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_special_meaning</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="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">err</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">soa</span><span class="plain-syntax"> == </span><a href="26-uo.html#SP11" class="function-link"><span class="function-syntax">UseOptions::use_SMF</span></a><span class="plain-syntax">) ||</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">soa</span><span class="plain-syntax"> == </span><a href="26-ts.html#SP9" class="function-link"><span class="function-syntax">PL::Parsing::TestScripts::test_with_SMF</span></a><span class="plain-syntax">) ||</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">soa</span><span class="plain-syntax"> == </span><a href="7-ns.html#SP11" class="function-link"><span class="function-syntax">Sentences::VPs::include_in_SMF</span></a><span class="plain-syntax">) ||</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">soa</span><span class="plain-syntax"> == </span><a href="7-ns.html#SP11" class="function-link"><span class="function-syntax">Sentences::VPs::omit_from_SMF</span></a><span class="plain-syntax">)) </span><span class="identifier-syntax">err</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">SpecialMeanings::is</span><span class="plain-syntax">(</span><span class="identifier-syntax">sm</span><span class="plain-syntax">, </span><a href="26-uo.html#SP11" class="function-link"><span class="function-syntax">UseOptions::use_SMF</span></a><span class="plain-syntax">)) ||</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">SpecialMeanings::is</span><span class="plain-syntax">(</span><span class="identifier-syntax">sm</span><span class="plain-syntax">, </span><a href="26-ts.html#SP9" class="function-link"><span class="function-syntax">PL::Parsing::TestScripts::test_with_SMF</span></a><span class="plain-syntax">)) ||</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">SpecialMeanings::is</span><span class="plain-syntax">(</span><span class="identifier-syntax">sm</span><span class="plain-syntax">, </span><a href="7-ns.html#SP11" class="function-link"><span class="function-syntax">Sentences::VPs::include_in_SMF</span></a><span class="plain-syntax">)) ||</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">SpecialMeanings::is</span><span class="plain-syntax">(</span><span class="identifier-syntax">sm</span><span class="plain-syntax">, </span><a href="7-ns.html#SP11" class="function-link"><span class="function-syntax">Sentences::VPs::omit_from_SMF</span></a><span class="plain-syntax">))) </span><span class="identifier-syntax">err</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">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">soa</span><span class="plain-syntax"> == </span><span class="identifier-syntax">PL::Bibliographic::Release::release_along_with_SMF</span><span class="plain-syntax">) </span><span class="identifier-syntax">err</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">SpecialMeanings::is</span><span class="plain-syntax">(</span><span class="identifier-syntax">sm</span><span class="plain-syntax">, </span><span class="identifier-syntax">PL::Bibliographic::Release::release_along_with_SMF</span><span class="plain-syntax">)) </span><span class="identifier-syntax">err</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">err</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::unlocated_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="comment-syntax"> not usefully testable, anyway</span>

View file

@ -719,10 +719,8 @@ subject carried over from previous sentences.
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Assertions::Traverse::try_special_meaning</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">Assertions::Traverse::try_special_meaning</span></span>:<br/>Construction Sequence - <a href="22-cs.html#SP9">&#167;9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">task</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">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="constant-syntax">verb_id_ANNOT</span><span class="plain-syntax">) == </span><span class="constant-syntax">SPECIAL_MEANING_VB</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">special_meaning_fn</span><span class="plain-syntax"> </span><span class="identifier-syntax">soa</span><span class="plain-syntax"> = </span><span class="identifier-syntax">VerbMeanings::sm_of_verb_node</span><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">soa</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> (*</span><span class="identifier-syntax">soa</span><span class="plain-syntax">)(</span><span class="identifier-syntax">task</span><span class="plain-syntax">, </span><span class="identifier-syntax">pn</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">special_meaning_holder</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sm</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_special_meaning</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">sm</span><span class="plain-syntax">) </span><span class="identifier-syntax">SpecialMeanings::call</span><span class="plain-syntax">(</span><span class="identifier-syntax">sm</span><span class="plain-syntax">, </span><span class="identifier-syntax">task</span><span class="plain-syntax">, </span><span class="identifier-syntax">pn</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>
</pre>

View file

@ -206,8 +206,8 @@ optionally be marked "public" (they appear on any website about it) or
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Bibliographic::Release::visit_to_quote</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">PL::Bibliographic::Release::visit_to_quote</span></span>:<br/><a href="2-ri.html#SP14_2_10">&#167;14.2.10</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">) == </span><span class="identifier-syntax">SENTENCE_NT</span><span class="plain-syntax">) &amp;&amp; (</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><span class="identifier-syntax">special_meaning_fn</span><span class="plain-syntax"> </span><span class="identifier-syntax">soa</span><span class="plain-syntax"> = </span><span class="identifier-syntax">VerbMeanings::sm_of_verb_node</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><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">soa</span><span class="plain-syntax"> == </span><a href="2-ri.html#SP7" class="function-link"><span class="function-syntax">PL::Bibliographic::Release::release_along_with_SMF</span></a><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">special_meaning_holder</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sm</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_special_meaning</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><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">SpecialMeanings::is</span><span class="plain-syntax">(</span><span class="identifier-syntax">sm</span><span class="plain-syntax">, </span><a href="2-ri.html#SP7" class="function-link"><span class="function-syntax">PL::Bibliographic::Release::release_along_with_SMF</span></a><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Index::link_to</span><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">)), </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"status instruction ||"</span><span class="plain-syntax">);</span>

View file

@ -193,7 +193,7 @@ is used by <a href="../linguistics-test/index.html" class="internal">linguistics
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" {existential}"</span><span 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_special_meaning</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">" {special meaning: %S}"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::get_special_meaning</span><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">)-&gt;</span><span class="element-syntax">sm_name</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-sm.html#SP7" class="function-link"><span class="function-syntax">SpecialMeanings::get_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_special_meaning</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="constant-syntax">verbal_certainty_ANNOT</span><span class="plain-syntax">) != </span><span class="constant-syntax">UNKNOWN_CE</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">" {certainty:"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-aoc.html#SP3" class="function-link"><span class="function-syntax">Certainty::write</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</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">verbal_certainty_ANNOT</span><span class="plain-syntax">));</span>

View file

@ -153,7 +153,7 @@ which use this module:
<span class="plain-syntax"> </span><span class="identifier-syntax">Writers::register_logger</span><span class="plain-syntax">(</span><span class="character-syntax">'t'</span><span class="plain-syntax">, </span><a href="3-apoo.html#SP4" class="function-link"><span class="function-syntax">Occurrence::log</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Writers::register_logger</span><span class="plain-syntax">(</span><span class="character-syntax">'p'</span><span class="plain-syntax">, </span><a href="3-prp.html#SP5" class="function-link"><span class="function-syntax">Prepositions::log</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Writers::register_logger</span><span class="plain-syntax">(</span><span class="character-syntax">'w'</span><span class="plain-syntax">, </span><a href="3-vrb.html#SP4" class="function-link"><span class="function-syntax">Verbs::log_verb</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Writers::register_logger</span><span class="plain-syntax">(</span><span class="character-syntax">'y'</span><span class="plain-syntax">, </span><a href="3-vm.html#SP13" class="function-link"><span class="function-syntax">VerbMeanings::log</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Writers::register_logger</span><span class="plain-syntax">(</span><span class="character-syntax">'y'</span><span class="plain-syntax">, </span><a href="3-vm.html#SP12" class="function-link"><span class="function-syntax">VerbMeanings::log</span></a><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="1-lm.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_3"></a><b>&#167;3.3. </b>Not all of our memory will be claimed in the form of structures: now and then

View file

@ -136,7 +136,7 @@ the case and what has been the case in the past.
</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>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="3-prp.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="progresscurrentchapter">3</li><li class="progresssection"><a href="3-vrb.html">vrb</a></li><li class="progresssection"><a href="3-vm.html">vm</a></li><li class="progresssection"><a href="3-vu.html">vu</a></li><li class="progresssection"><a href="3-prp.html">prp</a></li><li class="progresscurrent">aoc</li><li class="progresssection"><a href="3-apoo.html">apoo</a></li><li class="progresschapter"><a href="4-np.html">4</a></li><li class="progressnext"><a href="3-apoo.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="3-prp.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="progresscurrentchapter">3</li><li class="progresssection"><a href="3-vrb.html">vrb</a></li><li class="progresssection"><a href="3-vm.html">vm</a></li><li class="progresssection"><a href="3-sm.html">sm</a></li><li class="progresssection"><a href="3-vu.html">vu</a></li><li class="progresssection"><a href="3-prp.html">prp</a></li><li class="progresscurrent">aoc</li><li class="progresssection"><a href="3-apoo.html">apoo</a></li><li class="progresschapter"><a href="4-np.html">4</a></li><li class="progressnext"><a href="3-apoo.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -285,7 +285,7 @@ cannot contain any HR; this cuts down our parsing time considerably.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="3-aoc.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="progresscurrentchapter">3</li><li class="progresssection"><a href="3-vrb.html">vrb</a></li><li class="progresssection"><a href="3-vm.html">vm</a></li><li class="progresssection"><a href="3-vu.html">vu</a></li><li class="progresssection"><a href="3-prp.html">prp</a></li><li class="progresssection"><a href="3-aoc.html">aoc</a></li><li class="progresscurrent">apoo</li><li class="progresschapter"><a href="4-np.html">4</a></li><li class="progressnext"><a href="4-np.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="3-aoc.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="progresscurrentchapter">3</li><li class="progresssection"><a href="3-vrb.html">vrb</a></li><li class="progresssection"><a href="3-vm.html">vm</a></li><li class="progresssection"><a href="3-sm.html">sm</a></li><li class="progresssection"><a href="3-vu.html">vu</a></li><li class="progresssection"><a href="3-prp.html">prp</a></li><li class="progresssection"><a href="3-aoc.html">aoc</a></li><li class="progresscurrent">apoo</li><li class="progresschapter"><a href="4-np.html">4</a></li><li class="progressnext"><a href="4-np.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -217,7 +217,7 @@ So it will find the longest match.
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> (</span><span class="Preform-identifier-syntax">Vocabulary::test_flags</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-constant-syntax">PREPOSITION_MC</span><span class="Preform-plain-syntax">) == </span><span class="Preform-identifier-syntax">FALSE</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-reserved-syntax">for</span><span class="Preform-plain-syntax"> (</span><span class="Preform-reserved-syntax">verb_form</span><span class="Preform-plain-syntax"> *</span><span class="Preform-identifier-syntax">vf</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">copular_verb</span><span class="Preform-plain-syntax">-&gt;</span><span class="Preform-element-syntax">first_form</span><span class="Preform-plain-syntax">; </span><span class="Preform-identifier-syntax">vf</span><span class="Preform-plain-syntax">; </span><span class="Preform-identifier-syntax">vf</span><span class="Preform-plain-syntax">=</span><span class="Preform-identifier-syntax">vf</span><span class="Preform-plain-syntax">-&gt;</span><span class="Preform-element-syntax">next_form</span><span class="Preform-plain-syntax">) {</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">preposition</span><span class="Preform-plain-syntax"> *</span><span class="Preform-identifier-syntax">prep</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">vf</span><span class="Preform-plain-syntax">-&gt;</span><span class="Preform-element-syntax">preposition</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">prep</span><span class="Preform-plain-syntax">) &amp;&amp; (</span><a href="3-vm.html#SP5" class="function-link"><span class="Preform-function-syntax">VerbMeanings::is_meaningless</span></a><span class="Preform-plain-syntax">(&amp;(</span><span class="Preform-identifier-syntax">vf</span><span class="Preform-plain-syntax">-&gt;</span><span class="Preform-element-syntax">list_of_senses</span><span class="Preform-plain-syntax">-&gt;</span><span class="Preform-element-syntax">vm</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-reserved-syntax">if</span><span class="Preform-plain-syntax"> ((</span><span class="Preform-identifier-syntax">prep</span><span class="Preform-plain-syntax">) &amp;&amp; (</span><a href="3-vm.html#SP4" class="function-link"><span class="Preform-function-syntax">VerbMeanings::is_meaningless</span></a><span class="Preform-plain-syntax">(&amp;(</span><span class="Preform-identifier-syntax">vf</span><span class="Preform-plain-syntax">-&gt;</span><span class="Preform-element-syntax">list_of_senses</span><span class="Preform-plain-syntax">-&gt;</span><span class="Preform-element-syntax">vm</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-reserved-syntax">int</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">i</span><span class="Preform-plain-syntax"> = </span><a href="3-prp.html#SP8" class="function-link"><span class="Preform-function-syntax">Prepositions::parse_prep_against</span></a><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">W</span><span class="Preform-plain-syntax">, </span><span class="Preform-identifier-syntax">prep</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">i</span><span class="Preform-plain-syntax">&gt;</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">)) &amp;&amp; (</span><span class="Preform-identifier-syntax">i</span><span class="Preform-plain-syntax">&lt;=</span><span class="Preform-identifier-syntax">Wordings::last_wn</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">W</span><span class="Preform-plain-syntax">)+1)) {</span>
<span class="Preform-plain-syntax"> *</span><span class="Preform-identifier-syntax">XP</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">prep</span><span class="Preform-plain-syntax">;</span>
@ -239,7 +239,7 @@ with a given "permitted verb".
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> (</span><span class="Preform-identifier-syntax">permitted_verb</span><span class="Preform-plain-syntax">)</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">for</span><span class="Preform-plain-syntax"> (</span><span class="Preform-reserved-syntax">verb_form</span><span class="Preform-plain-syntax"> *</span><span class="Preform-identifier-syntax">vf</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">permitted_verb</span><span class="Preform-plain-syntax">-&gt;</span><span class="Preform-element-syntax">first_form</span><span class="Preform-plain-syntax">; </span><span class="Preform-identifier-syntax">vf</span><span class="Preform-plain-syntax">; </span><span class="Preform-identifier-syntax">vf</span><span class="Preform-plain-syntax">=</span><span class="Preform-identifier-syntax">vf</span><span class="Preform-plain-syntax">-&gt;</span><span class="Preform-element-syntax">next_form</span><span class="Preform-plain-syntax">) {</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">preposition</span><span class="Preform-plain-syntax"> *</span><span class="Preform-identifier-syntax">prep</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">vf</span><span class="Preform-plain-syntax">-&gt;</span><span class="Preform-element-syntax">preposition</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">prep</span><span class="Preform-plain-syntax">) &amp;&amp; (</span><a href="3-vm.html#SP5" class="function-link"><span class="Preform-function-syntax">VerbMeanings::is_meaningless</span></a><span class="Preform-plain-syntax">(&amp;(</span><span class="Preform-identifier-syntax">vf</span><span class="Preform-plain-syntax">-&gt;</span><span class="Preform-element-syntax">list_of_senses</span><span class="Preform-plain-syntax">-&gt;</span><span class="Preform-element-syntax">vm</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-reserved-syntax">if</span><span class="Preform-plain-syntax"> ((</span><span class="Preform-identifier-syntax">prep</span><span class="Preform-plain-syntax">) &amp;&amp; (</span><a href="3-vm.html#SP4" class="function-link"><span class="Preform-function-syntax">VerbMeanings::is_meaningless</span></a><span class="Preform-plain-syntax">(&amp;(</span><span class="Preform-identifier-syntax">vf</span><span class="Preform-plain-syntax">-&gt;</span><span class="Preform-element-syntax">list_of_senses</span><span class="Preform-plain-syntax">-&gt;</span><span class="Preform-element-syntax">vm</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-reserved-syntax">int</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">i</span><span class="Preform-plain-syntax"> = </span><a href="3-prp.html#SP8" class="function-link"><span class="Preform-function-syntax">Prepositions::parse_prep_against</span></a><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">W</span><span class="Preform-plain-syntax">, </span><span class="Preform-identifier-syntax">prep</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">i</span><span class="Preform-plain-syntax">&gt;</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">)) &amp;&amp; (</span><span class="Preform-identifier-syntax">i</span><span class="Preform-plain-syntax">&lt;=</span><span class="Preform-identifier-syntax">Wordings::last_wn</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">W</span><span class="Preform-plain-syntax">)+1)) {</span>
<span class="Preform-plain-syntax"> *</span><span class="Preform-identifier-syntax">XP</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">prep</span><span class="Preform-plain-syntax">;</span>
@ -272,7 +272,7 @@ with a given "permitted verb".
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="3-vu.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="progresscurrentchapter">3</li><li class="progresssection"><a href="3-vrb.html">vrb</a></li><li class="progresssection"><a href="3-vm.html">vm</a></li><li class="progresssection"><a href="3-vu.html">vu</a></li><li class="progresscurrent">prp</li><li class="progresssection"><a href="3-aoc.html">aoc</a></li><li class="progresssection"><a href="3-apoo.html">apoo</a></li><li class="progresschapter"><a href="4-np.html">4</a></li><li class="progressnext"><a href="3-aoc.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="3-vu.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="progresscurrentchapter">3</li><li class="progresssection"><a href="3-vrb.html">vrb</a></li><li class="progresssection"><a href="3-vm.html">vm</a></li><li class="progresssection"><a href="3-sm.html">sm</a></li><li class="progresssection"><a href="3-vu.html">vu</a></li><li class="progresscurrent">prp</li><li class="progresssection"><a href="3-aoc.html">aoc</a></li><li class="progresssection"><a href="3-apoo.html">apoo</a></li><li class="progresschapter"><a href="4-np.html">4</a></li><li class="progressnext"><a href="3-aoc.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -0,0 +1,210 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Special Meanings</title>
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
<meta name="viewport" content="width=device-width initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-gb">
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
<script>
function togglePopup(material_id) {
var popup = document.getElementById(material_id);
popup.classList.toggle("show");
}
</script>
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
</head>
<body class="commentary-font">
<nav role="navigation">
<h1><a href="../index.html">
<img src="../docs-assets/Inform.png" height=72">
</a></h1>
<ul><li><a href="../compiler.html">compiler tools</a></li>
<li><a href="../other.html">other tools</a></li>
<li><a href="../extensions.html">extensions and kits</a></li>
<li><a href="../units.html">unit test tools</a></li>
</ul><h2>Compiler Webs</h2><ul>
<li><a href="../inbuild/index.html">inbuild</a></li>
<li><a href="../inform7/index.html">inform7</a></li>
<li><a href="../inter/index.html">inter</a></li>
</ul><h2>Inbuild Modules</h2><ul>
<li><a href="../supervisor-module/index.html">supervisor</a></li>
</ul><h2>Inform7 Modules</h2><ul>
<li><a href="../core-module/index.html">core</a></li>
<li><a href="../kinds-module/index.html">kinds</a></li>
<li><a href="../if-module/index.html">if</a></li>
<li><a href="../multimedia-module/index.html">multimedia</a></li>
<li><a href="../index-module/index.html">index</a></li>
</ul><h2>Inter Modules</h2><ul>
<li><a href="../bytecode-module/index.html">bytecode</a></li>
<li><a href="../building-module/index.html">building</a></li>
<li><a href="../codegen-module/index.html">codegen</a></li>
</ul><h2>Services</h2><ul>
<li><a href="../arch-module/index.html">arch</a></li>
<li><a href="../syntax-module/index.html">syntax</a></li>
<li><a href="../words-module/index.html">words</a></li>
<li><a href="../html-module/index.html">html</a></li>
<li><a href="../inflections-module/index.html">inflections</a></li>
<li><a href="index.html"><span class="selectedlink">linguistics</span></a></li>
<li><a href="../problems-module/index.html">problems</a></li>
<li><a href="../../../inweb/docs/foundation-module/index.html">foundation</a></li>
</ul>
</nav>
<main role="main">
<!--Weave of 'Special Meanings' generated by Inweb-->
<div class="breadcrumbs">
<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#3">Chapter 3: VP Categories</a></li><li><b>Special Meanings</b></li></ul></div>
<p class="purpose">To abstract non-standard, perhaps non-SVO, meanings of a verb.</p>
<ul class="toc"><li><a href="3-sm.html#SP1">&#167;1. Special meaning functions</a></li><li><a href="3-sm.html#SP3">&#167;3. Special meaning holders</a></li></ul><hr class="tocbar">
<p class="commentary firstcommentary"><a id="SP1"></a><b>&#167;1. Special meaning functions. </b>Regular meanings of verbs are represented by <span class="extract"><span class="extract-syntax">VERB_MEANING_LINGUISTICS_TYPE</span></span>
pointers &mdash; see <a href="3-vm.html" class="internal">Verb Meanings</a>. In Inform, those are binary predicates.
They always take two terms.
</p>
<p class="commentary">However, Inform sometimes wants sentences which are written in non-standard
ways, with anything from one to three terms, and which don't correspond to
any of the relations. (For example, "Include Locksmith by Emily Short".)
</p>
<p class="commentary">These are represented by functions to perform the necessary business; the
type <span class="extract"><span class="extract-syntax">special_meaning_fn</span></span> gives the type of such a function.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> (*</span><span class="identifier-syntax">special_meaning_fn</span><span class="plain-syntax">)(</span><span class="reserved-syntax">int</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> *);</span>
</pre>
<p class="commentary firstcommentary"><a id="SP2"></a><b>&#167;2. </b>This is a convenient generic special-meaning function; it simply accumulates
non-empty SPs and OPs as unparsed noun phrases and accepts them.
</p>
<p class="commentary">The first parameter is the task to be performed on the verb node pointed
to by the second. The task number must belong to the <span class="extract"><span class="extract-syntax">*_SMFT</span></span> enumeration,
and the only task used by the Linguistics module is <span class="extract"><span class="extract-syntax">ACCEPT_SMFT</span></span>. This should
look at the array of wordings and either accept this as a valid usage, build
a subtree from the verb node, and return <span class="extract"><span class="extract-syntax">TRUE</span></span>, or else return <span class="extract"><span class="extract-syntax">FALSE</span></span> to
say that the usage is invalid: see Verb Phrases for more.
</p>
<p class="commentary">The user is then free to define further SMF tasks, and Inform does so.
</p>
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">ACCEPT_SMFT</span><span class="plain-syntax"> </span><span class="identifier-syntax">from</span><span class="plain-syntax"> </span><span class="constant-syntax">0</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">SpecialMeanings::generic_smf</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">SpecialMeanings::generic_smf</span></span>:<br/><a href="3-sm.html#SP5">&#167;5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">task</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">V</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> *</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">task</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">ACCEPT_SMFT:</span><span class="plain-syntax"> {</span>
<span class="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">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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax">&lt;3; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">]):</span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="function-syntax">&lt;np-unparsed&gt;</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">p</span><span class="plain-syntax"> = </span><span class="function-syntax">&lt;&lt;rp&gt;&gt;</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">A</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">next</span><span class="plain-syntax"> = </span><span class="identifier-syntax">p</span><span class="plain-syntax">; </span><span class="identifier-syntax">A</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="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP3"></a><b>&#167;3. Special meaning holders. </b>Although a SM is basically encapsulated by a function, it's convenient to
have some metadata with it too:
</p>
<p class="commentary firstcommentary"><a id="SP4"></a><b>&#167;4. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">special_meaning_holder</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">sm_func</span><span class="plain-syntax">)(</span><span class="reserved-syntax">int</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> *); </span><span class="comment-syntax"> (compiler doesn't like typedef here)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sm_name</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">metadata_N</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">special_meaning_holder</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure special_meaning_holder is private to this section.</li></ul>
<p class="commentary firstcommentary"><a id="SP5"></a><b>&#167;5. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">special_meaning_holder</span><span class="plain-syntax"> *</span><span class="function-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><span class="identifier-syntax">special_meaning_fn</span><span class="plain-syntax"> </span><span class="identifier-syntax">func</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</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">special_meaning_holder</span><span class="plain-syntax"> *</span><span class="identifier-syntax">smh</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">special_meaning_holder</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">func</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">func</span><span class="plain-syntax"> = </span><a href="3-sm.html#SP2" class="function-link"><span class="function-syntax">SpecialMeanings::generic_smf</span></a><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">smh</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">sm_func</span><span class="plain-syntax"> = </span><span class="identifier-syntax">func</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">smh</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">sm_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">smh</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">metadata_N</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">smh</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP6"></a><b>&#167;6. </b>SMHs can be found by name:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">verb_meaning</span><span class="plain-syntax"> </span><span class="function-syntax">SpecialMeanings::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">special_meaning_holder</span><span class="plain-syntax"> *</span><span class="identifier-syntax">smh</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">smh</span><span class="plain-syntax">, </span><span class="reserved-syntax">special_meaning_holder</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_wide_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">smh</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">sm_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="3-vm.html#SP5" class="function-link"><span class="function-syntax">VerbMeanings::special</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">smh</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#SP4" class="function-link"><span class="function-syntax">VerbMeanings::meaninglessness</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">special_meaning_holder</span><span class="plain-syntax"> *</span><span class="function-syntax">SpecialMeanings::find_from_wording</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">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="string-syntax">"%W"</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">special_meaning_holder</span><span class="plain-syntax"> *</span><span class="identifier-syntax">smh</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">smh</span><span class="plain-syntax">, </span><span class="reserved-syntax">special_meaning_holder</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_insensitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">smh</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">sm_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">name</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">smh</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP7"></a><b>&#167;7. </b>Metadata access:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">SpecialMeanings::get_metadata_N</span><span class="plain-syntax">(</span><span class="reserved-syntax">special_meaning_holder</span><span class="plain-syntax"> *</span><span class="identifier-syntax">smh</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">smh</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">smh</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">metadata_N</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">SpecialMeanings::get_name</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">SpecialMeanings::get_name</span></span>:<br/>Diagrams - <a href="1-dgr.html#SP5">&#167;5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">special_meaning_holder</span><span class="plain-syntax"> *</span><span class="identifier-syntax">smh</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">smh</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">smh</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">sm_name</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">SpecialMeanings::is</span><span class="plain-syntax">(</span><span class="reserved-syntax">special_meaning_holder</span><span class="plain-syntax"> *</span><span class="identifier-syntax">smh</span><span class="plain-syntax">, </span><span class="identifier-syntax">special_meaning_fn</span><span class="plain-syntax"> </span><span class="identifier-syntax">func</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">smh</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">smh</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">sm_func</span><span class="plain-syntax"> == </span><span class="identifier-syntax">func</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP8"></a><b>&#167;8. </b>Calling:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">SpecialMeanings::call</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">SpecialMeanings::call</span></span>:<br/>Verb Phrases - <a href="4-vp.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">special_meaning_holder</span><span class="plain-syntax"> *</span><span class="identifier-syntax">smh</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">task</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">V</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> *</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> (*(</span><span class="identifier-syntax">smh</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">sm_func</span><span class="plain-syntax">))(</span><span class="identifier-syntax">task</span><span class="plain-syntax">, </span><span class="identifier-syntax">V</span><span class="plain-syntax">, </span><span class="identifier-syntax">NPs</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-vm.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="progresscurrentchapter">3</li><li class="progresssection"><a href="3-vrb.html">vrb</a></li><li class="progresssection"><a href="3-vm.html">vm</a></li><li class="progresscurrent">sm</li><li class="progresssection"><a href="3-vu.html">vu</a></li><li class="progresssection"><a href="3-prp.html">prp</a></li><li class="progresssection"><a href="3-aoc.html">aoc</a></li><li class="progresssection"><a href="3-apoo.html">apoo</a></li><li class="progresschapter"><a href="4-np.html">4</a></li><li class="progressnext"><a href="3-vu.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>
</body>
</html>

View file

@ -66,7 +66,7 @@ function togglePopup(material_id) {
<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#3">Chapter 3: VP Categories</a></li><li><b>Verb Meanings</b></li></ul></div>
<p class="purpose">To abstract the meaning of a verb.</p>
<ul class="toc"><li><a href="3-vm.html#SP1">&#167;1. What we abstract</a></li><li><a href="3-vm.html#SP4">&#167;4. How this module stores verb meanings</a></li><li><a href="3-vm.html#SP10">&#167;10. Recording where assigned</a></li><li><a href="3-vm.html#SP11">&#167;11. The regular meaning</a></li><li><a href="3-vm.html#SP12">&#167;12. The special meaning</a></li><li><a href="3-vm.html#SP13">&#167;13. Logging</a></li><li><a href="3-vm.html#SP14">&#167;14. Special, second go</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="3-vm.html#SP1">&#167;1. What we abstract</a></li><li><a href="3-vm.html#SP3">&#167;3. How this module stores verb meanings</a></li><li><a href="3-vm.html#SP9">&#167;9. Recording where assigned</a></li><li><a href="3-vm.html#SP10">&#167;10. The regular meaning</a></li><li><a href="3-vm.html#SP11">&#167;11. The special meaning</a></li><li><a href="3-vm.html#SP12">&#167;12. Logging</a></li></ul><hr class="tocbar">
<p class="commentary firstcommentary"><a id="SP1"></a><b>&#167;1. What we abstract. </b>Because this module is concerned with the structure of sentences and not
their meanings, we don't really want to get into what verbs "mean". Instead,
@ -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#SP15_1">&#167;15.1</a><br/>Verb Phrases - <a href="4-vp.html#SP7_1">&#167;7.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#SP10">&#167;10</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#SP7_1">&#167;7.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>
@ -97,24 +97,7 @@ to ask for a reversal to be performed when needed.
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP3"></a><b>&#167;3. </b>We will, however, allow for a little more complication, in that the code
using this module can instead provide a function of the following type.
</p>
<p class="commentary">The first parameter is the task to be performed on the verb node pointed
to by the second. The task number must belong to the <span class="extract"><span class="extract-syntax">*_SMFT</span></span> enumeration,
and the only task used by the Linguistics module is <span class="extract"><span class="extract-syntax">ACCEPT_SMFT</span></span>. This should
look at the array of wordings and either accept this as a valid usage, build
a subtree from the verb node, and return <span class="extract"><span class="extract-syntax">TRUE</span></span>, or else return <span class="extract"><span class="extract-syntax">FALSE</span></span> to
say that the usage is invalid: see Verb Phrases for more.
</p>
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">ACCEPT_SMFT</span><span class="plain-syntax"> </span><span class="identifier-syntax">from</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span>
</pre>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> (*</span><span class="identifier-syntax">special_meaning_fn</span><span class="plain-syntax">)(</span><span class="reserved-syntax">int</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> *);</span>
</pre>
<p class="commentary firstcommentary"><a id="SP4"></a><b>&#167;4. How this module stores verb meanings. </b>We can now define an object to wrap up this abstracted idea of verb meaning:
<p class="commentary firstcommentary"><a id="SP3"></a><b>&#167;3. How this module stores verb meanings. </b>We can now define an object to wrap up this abstracted idea of verb meaning:
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -127,12 +110,12 @@ say that the usage is invalid: see Verb Phrases for more.
<span class="plain-syntax">} </span><span class="reserved-syntax">verb_meaning</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure verb_meaning is private to this section.</li></ul>
<p class="commentary firstcommentary"><a id="SP5"></a><b>&#167;5. </b>All VMs begin as meaningless, which indicates (e.g.) that no meaning
<p class="commentary firstcommentary"><a id="SP4"></a><b>&#167;4. </b>All VMs begin as meaningless, which indicates (e.g.) that no meaning
has been specified.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">verb_meaning</span><span class="plain-syntax"> </span><span class="function-syntax">VerbMeanings::meaninglessness</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">VerbMeanings::meaninglessness</span></span>:<br/><a href="3-vm.html#SP6">&#167;6</a>, <a href="3-vm.html#SP7">&#167;7</a>, <a href="3-vm.html#SP15">&#167;15</a><br/>Verbs - <a href="3-vrb.html#SP3_1">&#167;3.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">verb_meaning</span><span class="plain-syntax"> </span><span class="function-syntax">VerbMeanings::meaninglessness</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">VerbMeanings::meaninglessness</span></span>:<br/><a href="3-vm.html#SP5">&#167;5</a>, <a href="3-vm.html#SP6">&#167;6</a><br/>Verbs - <a href="3-vrb.html#SP3_1">&#167;3.1</a><br/>Special Meanings - <a href="3-sm.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">verb_meaning</span><span class="plain-syntax"> </span><span class="identifier-syntax">vm</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">vm</span><span class="plain-syntax">.</span><span class="element-syntax">regular_meaning</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">vm</span><span class="plain-syntax">.</span><span class="element-syntax">special_meaning</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
@ -143,30 +126,30 @@ has been specified.
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">VerbMeanings::is_meaningless</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">VerbMeanings::is_meaningless</span></span>:<br/>Verbs - <a href="3-vrb.html#SP12">&#167;12</a>, <a href="3-vrb.html#SP12_2">&#167;12.2</a><br/>Verb Usages - <a href="3-vu.html#SP15">&#167;15</a><br/>Prepositions - <a href="3-prp.html#SP10">&#167;10</a>, <a href="3-prp.html#SP11">&#167;11</a><br/>Verb Phrases - <a href="4-vp.html#SP5_4_1_1_1">&#167;5.4.1.1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">verb_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vm</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">vm</span><span class="plain-syntax"> = </span><a href="3-vm.html#SP8" class="function-link"><span class="function-syntax">VerbMeanings::follow_indirection</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="identifier-syntax">vm</span><span class="plain-syntax"> = </span><a href="3-vm.html#SP7" class="function-link"><span class="function-syntax">VerbMeanings::follow_indirection</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">vm</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">vm</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">regular_meaning</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">vm</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">special_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">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP6"></a><b>&#167;6. </b>In practice, we create VMs here. Note that regular and special meanings are
<p class="commentary firstcommentary"><a id="SP5"></a><b>&#167;5. </b>In practice, we create VMs here. Note that regular and special meanings are
alternatives to each other: you can't have both.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">verb_meaning</span><span class="plain-syntax"> </span><span class="function-syntax">VerbMeanings::regular</span><span class="plain-syntax">(</span><span class="constant-syntax">VERB_MEANING_LINGUISTICS_TYPE</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rel</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">verb_meaning</span><span class="plain-syntax"> </span><span class="identifier-syntax">vm</span><span class="plain-syntax"> = </span><a href="3-vm.html#SP5" class="function-link"><span class="function-syntax">VerbMeanings::meaninglessness</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">verb_meaning</span><span class="plain-syntax"> </span><span class="identifier-syntax">vm</span><span class="plain-syntax"> = </span><a href="3-vm.html#SP4" class="function-link"><span class="function-syntax">VerbMeanings::meaninglessness</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">vm</span><span class="plain-syntax">.</span><span class="element-syntax">regular_meaning</span><span class="plain-syntax"> = </span><span class="identifier-syntax">rel</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">vm</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">verb_meaning</span><span class="plain-syntax"> </span><span class="function-syntax">VerbMeanings::special</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">VerbMeanings::special</span></span>:<br/><a href="3-vm.html#SP15">&#167;15</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">special_meaning_holder</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sm</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">verb_meaning</span><span class="plain-syntax"> </span><span class="identifier-syntax">vm</span><span class="plain-syntax"> = </span><a href="3-vm.html#SP5" class="function-link"><span class="function-syntax">VerbMeanings::meaninglessness</span></a><span class="plain-syntax">();</span>
<span class="reserved-syntax">verb_meaning</span><span class="plain-syntax"> </span><span class="function-syntax">VerbMeanings::special</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">VerbMeanings::special</span></span>:<br/>Special Meanings - <a href="3-sm.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">special_meaning_holder</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sm</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">verb_meaning</span><span class="plain-syntax"> </span><span class="identifier-syntax">vm</span><span class="plain-syntax"> = </span><a href="3-vm.html#SP4" class="function-link"><span class="function-syntax">VerbMeanings::meaninglessness</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">vm</span><span class="plain-syntax">.</span><span class="element-syntax">special_meaning</span><span class="plain-syntax"> = </span><span class="identifier-syntax">sm</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">vm</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP7"></a><b>&#167;7. </b>You can, however, have neither one, if you instead choose to "indirect" the
<p class="commentary firstcommentary"><a id="SP6"></a><b>&#167;6. </b>You can, however, have neither one, if you instead choose to "indirect" the
meaning &mdash; this means saying "the same meaning as the regular sense of the base
form of a given verb", possibly reversed. Note that
</p>
@ -184,39 +167,39 @@ usages "is liking" and "is liked by" automatically change with it.
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">verb_meaning</span><span class="plain-syntax"> </span><span class="function-syntax">VerbMeanings::indirected</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">VerbMeanings::indirected</span></span>:<br/>Verb Usages - <a href="3-vu.html#SP6_1">&#167;6.1</a>, <a href="3-vu.html#SP7">&#167;7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">verb</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">reversed</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">verb_meaning</span><span class="plain-syntax"> </span><span class="identifier-syntax">vm</span><span class="plain-syntax"> = </span><a href="3-vm.html#SP5" class="function-link"><span class="function-syntax">VerbMeanings::meaninglessness</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">verb_meaning</span><span class="plain-syntax"> </span><span class="identifier-syntax">vm</span><span class="plain-syntax"> = </span><a href="3-vm.html#SP4" class="function-link"><span class="function-syntax">VerbMeanings::meaninglessness</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">vm</span><span class="plain-syntax">.</span><span class="element-syntax">take_meaning_reversed</span><span class="plain-syntax"> = </span><span class="identifier-syntax">reversed</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">vm</span><span class="plain-syntax">.</span><span class="element-syntax">take_meaning_from</span><span class="plain-syntax"> = </span><span class="identifier-syntax">from</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">vm</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP8"></a><b>&#167;8. </b>So the following function only needs to be used once.
<p class="commentary firstcommentary"><a id="SP7"></a><b>&#167;7. </b>So the following function only needs to be used once.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">verb_meaning</span><span class="plain-syntax"> *</span><span class="function-syntax">VerbMeanings::follow_indirection</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">VerbMeanings::follow_indirection</span></span>:<br/><a href="3-vm.html#SP5">&#167;5</a>, <a href="3-vm.html#SP11">&#167;11</a>, <a href="3-vm.html#SP12">&#167;12</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">verb_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vm</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">verb_meaning</span><span class="plain-syntax"> *</span><span class="function-syntax">VerbMeanings::follow_indirection</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">VerbMeanings::follow_indirection</span></span>:<br/><a href="3-vm.html#SP4">&#167;4</a>, <a href="3-vm.html#SP10">&#167;10</a>, <a href="3-vm.html#SP11">&#167;11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">verb_meaning</span><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">vm</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">vm</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">take_meaning_from</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#SP9" class="function-link"><span class="function-syntax">VerbMeanings::first_unspecial_meaning_of_verb_form</span></a><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#SP8" class="function-link"><span class="function-syntax">VerbMeanings::first_unspecial_meaning_of_verb_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::base_form</span></a><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">vm</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">take_meaning_from</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">vm</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP9"></a><b>&#167;9. </b>The following function may seem curious &mdash; what's so great about the first
<p class="commentary firstcommentary"><a id="SP8"></a><b>&#167;8. </b>The following function may seem curious &mdash; what's so great about the first
regular sense of a verb? The answer is that Inform generally gives a verb at
most one regular sense.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">verb_meaning</span><span class="plain-syntax"> *</span><span class="function-syntax">VerbMeanings::first_unspecial_meaning_of_verb_form</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">VerbMeanings::first_unspecial_meaning_of_verb_form</span></span>:<br/><a href="3-vm.html#SP8">&#167;8</a>, <a href="3-vm.html#SP11">&#167;11</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="reserved-syntax">verb_meaning</span><span class="plain-syntax"> *</span><span class="function-syntax">VerbMeanings::first_unspecial_meaning_of_verb_form</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">VerbMeanings::first_unspecial_meaning_of_verb_form</span></span>:<br/><a href="3-vm.html#SP7">&#167;7</a>, <a href="3-vm.html#SP10">&#167;10</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">if</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">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">verb_sense</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vs</span><span class="plain-syntax"> = </span><span class="identifier-syntax">vf</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">list_of_senses</span><span class="plain-syntax">; </span><span class="identifier-syntax">vs</span><span class="plain-syntax">; </span><span class="identifier-syntax">vs</span><span class="plain-syntax"> = </span><span class="identifier-syntax">vs</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next_sense</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-vm.html#SP12" class="function-link"><span class="function-syntax">VerbMeanings::get_special_meaning_fn</span></a><span class="plain-syntax">(&amp;(</span><span class="identifier-syntax">vs</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">vm</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="3-vm.html#SP11" class="function-link"><span class="function-syntax">VerbMeanings::get_special_meaning</span></a><span class="plain-syntax">(&amp;(</span><span class="identifier-syntax">vs</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">vm</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"> &amp;(</span><span class="identifier-syntax">vs</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">vm</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>
<p class="commentary firstcommentary"><a id="SP10"></a><b>&#167;10. Recording where assigned. </b>This helps Inform with correctly locating problem messages.
<p class="commentary firstcommentary"><a id="SP9"></a><b>&#167;9. Recording where assigned. </b>This helps Inform with correctly locating problem messages.
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -230,15 +213,15 @@ most one regular sense.
<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">"assigned location to null meaning"</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP11"></a><b>&#167;11. The regular meaning. </b>This is not as simple as returning the <span class="extract"><span class="extract-syntax">regular_meaning</span></span> field, because we
<p class="commentary firstcommentary"><a id="SP10"></a><b>&#167;10. The regular meaning. </b>This is not as simple as returning the <span class="extract"><span class="extract-syntax">regular_meaning</span></span> field, because we
have to follow any indirection, and reverse if necessary.
</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::get_regular_meaning</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">VerbMeanings::get_regular_meaning</span></span>:<br/><a href="3-vm.html#SP13">&#167;13</a><br/>Verb Phrases - <a href="4-vp.html#SP6">&#167;6</a>, <a href="4-vp.html#SP7_1">&#167;7.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">verb_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vm</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</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">VerbMeanings::get_regular_meaning</span></span>:<br/><a href="3-vm.html#SP12">&#167;12</a><br/>Verb Phrases - <a href="4-vp.html#SP6">&#167;6</a>, <a href="4-vp.html#SP7_1">&#167;7.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">verb_meaning</span><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">vm</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">rev</span><span class="plain-syntax"> = </span><span class="identifier-syntax">vm</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">take_meaning_reversed</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">vm</span><span class="plain-syntax"> = </span><a href="3-vm.html#SP8" class="function-link"><span class="function-syntax">VerbMeanings::follow_indirection</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="identifier-syntax">vm</span><span class="plain-syntax"> = </span><a href="3-vm.html#SP7" class="function-link"><span class="function-syntax">VerbMeanings::follow_indirection</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">vm</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="constant-syntax">VERB_MEANING_LINGUISTICS_TYPE</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rel</span><span class="plain-syntax"> = </span><span class="identifier-syntax">vm</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">regular_meaning</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">rev</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">rel</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</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">rel</span><span class="plain-syntax">);</span>
@ -246,19 +229,19 @@ have to follow any indirection, and reverse if necessary.
<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><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="3-vm.html#SP10" 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#SP8" 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>
</pre>
<p class="commentary firstcommentary"><a id="SP12"></a><b>&#167;12. The special meaning. </b>This is also not as simple as returning the <span class="extract"><span class="extract-syntax">regular_meaning</span></span> field, because
<p class="commentary firstcommentary"><a id="SP11"></a><b>&#167;11. The special meaning. </b>This is also not as simple as returning the <span class="extract"><span class="extract-syntax">regular_meaning</span></span> field, because
again we have to follow any indirection. Since we have no good way to modify
a special meaning function, we have to provide a function to tell the user
whether to reverse what that function does.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">special_meaning_holder</span><span class="plain-syntax"> *</span><span class="function-syntax">VerbMeanings::get_special_meaning_fn</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">VerbMeanings::get_special_meaning_fn</span></span>:<br/><a href="3-vm.html#SP9">&#167;9</a><br/>Verb Phrases - <a href="4-vp.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">verb_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vm</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">vm</span><span class="plain-syntax"> = </span><a href="3-vm.html#SP8" class="function-link"><span class="function-syntax">VerbMeanings::follow_indirection</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">vm</span><span class="plain-syntax">);</span>
<span class="reserved-syntax">special_meaning_holder</span><span class="plain-syntax"> *</span><span class="function-syntax">VerbMeanings::get_special_meaning</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">VerbMeanings::get_special_meaning</span></span>:<br/><a href="3-vm.html#SP8">&#167;8</a><br/>Verb Phrases - <a href="4-vp.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">verb_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vm</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">vm</span><span class="plain-syntax"> = </span><a href="3-vm.html#SP7" class="function-link"><span class="function-syntax">VerbMeanings::follow_indirection</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">vm</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">vm</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">special_meaning</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -268,7 +251,7 @@ whether to reverse what that function does.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">vm</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">take_meaning_reversed</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP13"></a><b>&#167;13. Logging. </b></p>
<p class="commentary firstcommentary"><a id="SP12"></a><b>&#167;12. Logging. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">VerbMeanings::log</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">VerbMeanings::log</span></span>:<br/>Linguistics Module - <a href="1-lm.html#SP3_2">&#167;3.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vvm</span><span class="plain-syntax">) {</span>
@ -276,7 +259,7 @@ whether to reverse what that function does.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">vm</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) { </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&lt;none&gt;"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax">; }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">vm</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">take_meaning_reversed</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"reversed-"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">vm</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">take_meaning_from</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&lt;$w&gt;="</span><span class="plain-syntax">, </span><span class="identifier-syntax">vm</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">take_meaning_from</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="identifier-syntax">m</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="constant-syntax">VERB_MEANING_LINGUISTICS_TYPE</span><span class="plain-syntax"> *</span><span class="identifier-syntax">m</span><span class="plain-syntax"> = </span><a href="3-vm.html#SP10" 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">m</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">CORE_MODULE</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">m</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">debugging_log_name</span><span class="plain-syntax">);</span>
@ -287,45 +270,8 @@ whether to reverse what that function does.
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"(meaningless)"</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP14"></a><b>&#167;14. Special, second go. </b></p>
<p class="commentary firstcommentary"><a id="SP15"></a><b>&#167;15. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">special_meaning_holder</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">sm_func</span><span class="plain-syntax">)(</span><span class="reserved-syntax">int</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> *); </span><span class="comment-syntax"> (for tangling reasons, can't use typedef here)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sm_name</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">verb_priority</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">special_meaning_holder</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">special_meaning_holder</span><span class="plain-syntax"> *</span><span class="function-syntax">VerbMeanings::declare_sm</span><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> (*</span><span class="identifier-syntax">func</span><span class="plain-syntax">)(</span><span class="reserved-syntax">int</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *, </span><span class="identifier-syntax">wording</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><span class="reserved-syntax">int</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">special_meaning_holder</span><span class="plain-syntax"> *</span><span class="identifier-syntax">smh</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">special_meaning_holder</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">smh</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">sm_func</span><span class="plain-syntax"> = </span><span class="identifier-syntax">func</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">smh</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">sm_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">smh</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">verb_priority</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">smh</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">verb_meaning</span><span class="plain-syntax"> </span><span class="function-syntax">VerbMeanings::sm_by_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</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">special_meaning_holder</span><span class="plain-syntax"> *</span><span class="identifier-syntax">smh</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">smh</span><span class="plain-syntax">, </span><span class="reserved-syntax">special_meaning_holder</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_wide_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">smh</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">sm_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">p</span><span class="plain-syntax">) *</span><span class="identifier-syntax">p</span><span class="plain-syntax"> = </span><span class="identifier-syntax">smh</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">verb_priority</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#SP6" class="function-link"><span class="function-syntax">VerbMeanings::special</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">smh</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><a href="3-vm.html#SP5" class="function-link"><span class="function-syntax">VerbMeanings::meaninglessness</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">special_meaning_fn</span><span class="plain-syntax"> </span><span class="function-syntax">VerbMeanings::sm_of_verb_node</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="plain-syntax"> </span><span class="reserved-syntax">special_meaning_holder</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sm</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_special_meaning</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">sm</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">sm</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">sm_func</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>
<ul class="endnotetexts"><li>The structure special_meaning_holder is accessed in 1/dgr, 4/vp and here.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="3-vrb.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="progresscurrentchapter">3</li><li class="progresssection"><a href="3-vrb.html">vrb</a></li><li class="progresscurrent">vm</li><li class="progresssection"><a href="3-vu.html">vu</a></li><li class="progresssection"><a href="3-prp.html">prp</a></li><li class="progresssection"><a href="3-aoc.html">aoc</a></li><li class="progresssection"><a href="3-apoo.html">apoo</a></li><li class="progresschapter"><a href="4-np.html">4</a></li><li class="progressnext"><a href="3-vu.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="3-vrb.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="progresscurrentchapter">3</li><li class="progresssection"><a href="3-vrb.html">vrb</a></li><li class="progresscurrent">vm</li><li class="progresssection"><a href="3-sm.html">sm</a></li><li class="progresssection"><a href="3-vu.html">vu</a></li><li class="progresssection"><a href="3-prp.html">prp</a></li><li class="progresssection"><a href="3-aoc.html">aoc</a></li><li class="progresssection"><a href="3-apoo.html">apoo</a></li><li class="progresschapter"><a href="4-np.html">4</a></li><li class="progressnext"><a href="3-sm.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -150,7 +150,7 @@ instead of a word: for example, the <span class="extract"><span class="extract-s
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><a href="3-vrb.html#SP12" class="function-link"><span class="function-syntax">Verbs::add_form</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">V</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><a href="3-vm.html#SP5" class="function-link"><span class="function-syntax">VerbMeanings::meaninglessness</span></a><span class="plain-syntax">(), </span><span class="constant-syntax">SVO_FS_BIT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-vrb.html#SP12" class="function-link"><span class="function-syntax">Verbs::add_form</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">V</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><a href="3-vm.html#SP4" class="function-link"><span class="function-syntax">VerbMeanings::meaninglessness</span></a><span class="plain-syntax">(), </span><span class="constant-syntax">SVO_FS_BIT</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-vrb.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_2"></a><b>&#167;3.2. </b>Note that the first verb submitted with the copular flag set is considered
@ -293,7 +293,7 @@ of verb and two prepositions:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">verb_form</span><span class="plain-syntax"> *</span><span class="function-syntax">Verbs::base_form</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">Verbs::base_form</span></span>:<br/>Verb Meanings - <a href="3-vm.html#SP8">&#167;8</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">verb_form</span><span class="plain-syntax"> *</span><span class="function-syntax">Verbs::base_form</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">Verbs::base_form</span></span>:<br/>Verb Meanings - <a href="3-vm.html#SP7">&#167;7</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="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">NULL</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">NULL</span><span class="plain-syntax">))</span>
@ -315,11 +315,11 @@ of verb and two prepositions:
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Verbs::add_form</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">Verbs::add_form</span></span>:<br/><a href="3-vrb.html#SP3_1">&#167;3.1</a>, <a href="3-vrb.html#SP5">&#167;5</a><br/>Verb Usages - <a href="3-vu.html#SP6_1">&#167;6.1</a>, <a href="3-vu.html#SP7">&#167;7</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="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_meaning</span><span class="plain-syntax"> </span><span class="identifier-syntax">vm</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">form_structs</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-vm.html#SP5" class="function-link"><span class="function-syntax">VerbMeanings::is_meaningless</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">vm</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><a href="3-vm.html#SP4" class="function-link"><span class="function-syntax">VerbMeanings::is_meaningless</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">vm</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">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">VERB_FORMS</span><span class="plain-syntax">, </span><span class="string-syntax">" Adding form: $w + $p + $p = $y\n"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">V</span><span class="plain-syntax">, </span><span class="identifier-syntax">prep</span><span class="plain-syntax">, </span><span class="identifier-syntax">second_prep</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">vm</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-vm.html#SP10" class="function-link"><span class="function-syntax">VerbMeanings::set_where_assigned</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">vm</span><span class="plain-syntax">, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-vm.html#SP9" class="function-link"><span class="function-syntax">VerbMeanings::set_where_assigned</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">vm</span><span class="plain-syntax">, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">V</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">"added form to null verb"</span><span class="plain-syntax">);</span>
@ -328,7 +328,7 @@ of verb and two prepositions:
<span class="plain-syntax"> </span><span class="identifier-syntax">vf</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">form_structures</span><span class="plain-syntax"> = ((</span><span class="identifier-syntax">vf</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">form_structures</span><span class="plain-syntax">) | </span><span class="identifier-syntax">form_structs</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="3-vm.html#SP5" class="function-link"><span class="function-syntax">VerbMeanings::is_meaningless</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">vm</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">vf</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">list_of_senses</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="3-vm.html#SP4" class="function-link"><span class="function-syntax">VerbMeanings::is_meaningless</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">vm</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">vf</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">list_of_senses</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="3-vrb.html#SP12_2" class="named-paragraph-link"><span class="named-paragraph">Add this meaning as a new sense of the verb form</span><span class="named-paragraph-number">12.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
@ -433,7 +433,7 @@ we overwrite that with the new (presumably meaningful) one.
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">verb_sense</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vs</span><span class="plain-syntax"> = </span><span class="identifier-syntax">vf</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">list_of_senses</span><span class="plain-syntax">, *</span><span class="identifier-syntax">prev</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">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">vs</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-vm.html#SP5" class="function-link"><span class="function-syntax">VerbMeanings::is_meaningless</span></a><span class="plain-syntax">(&amp;(</span><span class="identifier-syntax">vs</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">vm</span><span class="plain-syntax">))) { </span><span class="identifier-syntax">vs</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">vm</span><span class="plain-syntax"> = </span><span class="identifier-syntax">vm</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">if</span><span class="plain-syntax"> (</span><a href="3-vm.html#SP4" class="function-link"><span class="function-syntax">VerbMeanings::is_meaningless</span></a><span class="plain-syntax">(&amp;(</span><span class="identifier-syntax">vs</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">vm</span><span class="plain-syntax">))) { </span><span class="identifier-syntax">vs</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">vm</span><span class="plain-syntax"> = </span><span class="identifier-syntax">vm</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">; }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">prev</span><span class="plain-syntax"> = </span><span class="identifier-syntax">vs</span><span class="plain-syntax">; </span><span class="identifier-syntax">vs</span><span class="plain-syntax"> = </span><span class="identifier-syntax">vs</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next_sense</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">vs</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
@ -446,7 +446,7 @@ we overwrite that with the new (presumably meaningful) one.
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-vrb.html#SP12">&#167;12</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-prn.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="progresscurrentchapter">3</li><li class="progresscurrent">vrb</li><li class="progresssection"><a href="3-vm.html">vm</a></li><li class="progresssection"><a href="3-vu.html">vu</a></li><li class="progresssection"><a href="3-prp.html">prp</a></li><li class="progresssection"><a href="3-aoc.html">aoc</a></li><li class="progresssection"><a href="3-apoo.html">apoo</a></li><li class="progresschapter"><a href="4-np.html">4</a></li><li class="progressnext"><a href="3-vm.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-prn.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="progresscurrentchapter">3</li><li class="progresscurrent">vrb</li><li class="progresssection"><a href="3-vm.html">vm</a></li><li class="progresssection"><a href="3-sm.html">sm</a></li><li class="progresssection"><a href="3-vu.html">vu</a></li><li class="progresssection"><a href="3-prp.html">prp</a></li><li class="progresssection"><a href="3-aoc.html">aoc</a></li><li class="progresssection"><a href="3-apoo.html">apoo</a></li><li class="progresschapter"><a href="4-np.html">4</a></li><li class="progressnext"><a href="3-vm.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -273,7 +273,7 @@ an unfortunate mock-Indian sound to it.
<span class="plain-syntax"> </span><a href="3-prp.html#SP6" class="function-link"><span class="function-syntax">Prepositions::make</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">vc</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">present_participle</span><span class="plain-syntax">, </span><span class="identifier-syntax">unexpected_upper_casing_used</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">where</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-vrb.html#SP12" class="function-link"><span class="function-syntax">Verbs::add_form</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">copular_verb</span><span class="plain-syntax">, </span><span class="identifier-syntax">prep</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="3-vm.html#SP7" class="function-link"><span class="function-syntax">VerbMeanings::indirected</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">vi</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">), </span><span class="constant-syntax">SVO_FS_BIT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-vm.html#SP6" class="function-link"><span class="function-syntax">VerbMeanings::indirected</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">vi</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">), </span><span class="constant-syntax">SVO_FS_BIT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-vu.html#SP6">&#167;6</a>.</li></ul>
@ -293,7 +293,7 @@ of "to be", which is convenient however dubious in linguistic terms.
<span class="plain-syntax"> </span><a href="3-prp.html#SP6" class="function-link"><span class="function-syntax">Prepositions::make</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">vt</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">to_be_auxiliary</span><span class="plain-syntax">, </span><span class="identifier-syntax">unexpected_upper_casing_used</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">where</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-vrb.html#SP12" class="function-link"><span class="function-syntax">Verbs::add_form</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">copular_verb</span><span class="plain-syntax">, </span><span class="identifier-syntax">prep</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="3-vm.html#SP7" class="function-link"><span class="function-syntax">VerbMeanings::indirected</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">vi</span><span class="plain-syntax">, (</span><span class="identifier-syntax">mood</span><span class="plain-syntax"> == </span><span class="identifier-syntax">PASSIVE_MOOD</span><span class="plain-syntax">)?</span><span class="identifier-syntax">TRUE:FALSE</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><a href="3-vm.html#SP6" class="function-link"><span class="function-syntax">VerbMeanings::indirected</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">vi</span><span class="plain-syntax">, (</span><span class="identifier-syntax">mood</span><span class="plain-syntax"> == </span><span class="identifier-syntax">PASSIVE_MOOD</span><span class="plain-syntax">)?</span><span class="identifier-syntax">TRUE:FALSE</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="constant-syntax">SVO_FS_BIT</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>
@ -523,7 +523,7 @@ list, with lower priority numbers before higher ones.
<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">VerbUsages::get_regular_meaning</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">VerbUsages::get_regular_meaning</span></span>:<br/><a href="3-vu.html#SP18">&#167;18</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">verb_usage</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vu</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">vu</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="constant-syntax">VERB_MEANING_LINGUISTICS_TYPE</span><span class="plain-syntax"> *</span><span class="identifier-syntax">root</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><a href="3-vrb.html#SP11" class="function-link"><span class="function-syntax">Verbs::find_form</span></a><span class="plain-syntax">(</span><a href="3-vu.html#SP12" class="function-link"><span class="function-syntax">VerbUsages::get_verb</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">vu</span><span class="plain-syntax">), </span><span class="identifier-syntax">prep</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="constant-syntax">VERB_MEANING_LINGUISTICS_TYPE</span><span class="plain-syntax"> *</span><span class="identifier-syntax">root</span><span class="plain-syntax"> = </span><a href="3-vm.html#SP10" class="function-link"><span class="function-syntax">VerbMeanings::get_regular_meaning_of_form</span></a><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><a href="3-vu.html#SP12" class="function-link"><span class="function-syntax">VerbUsages::get_verb</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">vu</span><span class="plain-syntax">), </span><span class="identifier-syntax">prep</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">root</span><span class="plain-syntax">) &amp;&amp; (</span><a href="3-vu.html#SP12" class="function-link"><span class="function-syntax">VerbUsages::get_mood</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">vu</span><span class="plain-syntax">) == </span><span class="identifier-syntax">PASSIVE_MOOD</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">root</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">root</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">root</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">root</span><span class="plain-syntax">;</span>
@ -606,7 +606,7 @@ which has a meaning.
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">LOOP_OVER_USAGES</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">vu</span><span class="Preform-plain-syntax">) {</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">verb</span><span class="Preform-plain-syntax"> *</span><span class="Preform-identifier-syntax">vi</span><span class="Preform-plain-syntax"> = </span><a href="3-vu.html#SP12" class="function-link"><span class="Preform-function-syntax">VerbUsages::get_verb</span></a><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">vu</span><span class="Preform-plain-syntax">);</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">for</span><span class="Preform-plain-syntax"> (</span><span class="Preform-reserved-syntax">verb_form</span><span class="Preform-plain-syntax"> *</span><span class="Preform-identifier-syntax">vf</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">vi</span><span class="Preform-plain-syntax">-&gt;</span><span class="Preform-identifier-syntax">first_form</span><span class="Preform-plain-syntax">; </span><span class="Preform-identifier-syntax">vf</span><span class="Preform-plain-syntax">; </span><span class="Preform-identifier-syntax">vf</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">vf</span><span class="Preform-plain-syntax">-&gt;</span><span class="Preform-element-syntax">next_form</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><a href="3-vm.html#SP5" class="function-link"><span class="Preform-function-syntax">VerbMeanings::is_meaningless</span></a><span class="Preform-plain-syntax">(&amp;(</span><span class="Preform-identifier-syntax">vf</span><span class="Preform-plain-syntax">-&gt;</span><span class="Preform-element-syntax">list_of_senses</span><span class="Preform-plain-syntax">-&gt;</span><span class="Preform-element-syntax">vm</span><span class="Preform-plain-syntax">)) == </span><span class="Preform-identifier-syntax">FALSE</span><span class="Preform-plain-syntax">) &amp;&amp;</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> ((</span><a href="3-vm.html#SP4" class="function-link"><span class="Preform-function-syntax">VerbMeanings::is_meaningless</span></a><span class="Preform-plain-syntax">(&amp;(</span><span class="Preform-identifier-syntax">vf</span><span class="Preform-plain-syntax">-&gt;</span><span class="Preform-element-syntax">list_of_senses</span><span class="Preform-plain-syntax">-&gt;</span><span class="Preform-element-syntax">vm</span><span class="Preform-plain-syntax">)) == </span><span class="Preform-identifier-syntax">FALSE</span><span class="Preform-plain-syntax">) &amp;&amp;</span>
<span class="Preform-plain-syntax"> (</span><span class="Preform-identifier-syntax">vf</span><span class="Preform-plain-syntax">-&gt;</span><span class="Preform-element-syntax">form_structures</span><span class="Preform-plain-syntax"> &amp; (</span><span class="Preform-constant-syntax">SVO_FS_BIT</span><span class="Preform-plain-syntax"> + </span><span class="Preform-constant-syntax">SVOO_FS_BIT</span><span class="Preform-plain-syntax">))) {</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">int</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">i</span><span class="Preform-plain-syntax"> = </span><a href="3-vu.html#SP13" class="function-link"><span class="Preform-function-syntax">VerbUsages::parse_against_verb</span></a><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">W</span><span class="Preform-plain-syntax">, </span><span class="Preform-identifier-syntax">vu</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">i</span><span class="Preform-plain-syntax">&gt;</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">)) &amp;&amp; (</span><span class="Preform-identifier-syntax">i</span><span class="Preform-plain-syntax">&lt;=</span><span class="Preform-identifier-syntax">Wordings::last_wn</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">W</span><span class="Preform-plain-syntax">))) {</span>
@ -868,7 +868,7 @@ or "the verb to be able to see" use these.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="3-vm.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="progresscurrentchapter">3</li><li class="progresssection"><a href="3-vrb.html">vrb</a></li><li class="progresssection"><a href="3-vm.html">vm</a></li><li class="progresscurrent">vu</li><li class="progresssection"><a href="3-prp.html">prp</a></li><li class="progresssection"><a href="3-aoc.html">aoc</a></li><li class="progresssection"><a href="3-apoo.html">apoo</a></li><li class="progresschapter"><a href="4-np.html">4</a></li><li class="progressnext"><a href="3-prp.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="3-sm.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="progresscurrentchapter">3</li><li class="progresssection"><a href="3-vrb.html">vrb</a></li><li class="progresssection"><a href="3-vm.html">vm</a></li><li class="progresssection"><a href="3-sm.html">sm</a></li><li class="progresscurrent">vu</li><li class="progresssection"><a href="3-prp.html">prp</a></li><li class="progresssection"><a href="3-aoc.html">aoc</a></li><li class="progresssection"><a href="3-apoo.html">apoo</a></li><li class="progresschapter"><a href="4-np.html">4</a></li><li class="progressnext"><a href="3-prp.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -363,7 +363,7 @@ directions, in particular, a little better. But it means we do not recognise
</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><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#SP10" 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="1-dgr.html#SP7" class="function-link"><span class="function-syntax">Diagrams::new_RELATIONSHIP</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>

View file

@ -501,7 +501,7 @@ is handled in Inform.)
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">certainty</span><span class="plain-syntax"> = </span><span class="constant-syntax">UNKNOWN_CE</span><span class="plain-syntax">, </span><span class="identifier-syntax">pre_certainty</span><span class="plain-syntax"> = </span><span class="constant-syntax">UNKNOWN_CE</span><span class="plain-syntax">, </span><span class="identifier-syntax">post_certainty</span><span class="plain-syntax"> = </span><span class="constant-syntax">UNKNOWN_CE</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">vi</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">verb_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vm</span><span class="plain-syntax"> = &amp;(</span><span class="identifier-syntax">vf</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">list_of_senses</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">vm</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-vm.html#SP5" class="function-link"><span class="function-syntax">VerbMeanings::is_meaningless</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">vm</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><a href="3-vm.html#SP4" class="function-link"><span class="function-syntax">VerbMeanings::is_meaningless</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">vm</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">i</span><span class="plain-syntax"> &lt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><a href="3-vu.html#SP13" class="function-link"><span class="function-syntax">VerbUsages::parse_against_verb</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">TW</span><span class="plain-syntax">, </span><span class="identifier-syntax">vu</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (!((</span><span class="identifier-syntax">i</span><span class="plain-syntax">&gt;</span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">TW</span><span class="plain-syntax">)) &amp;&amp; (</span><span class="identifier-syntax">i</span><span class="plain-syntax">&lt;=</span><span class="identifier-syntax">Wordings::last_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">TW</span><span class="plain-syntax">)))) </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
@ -530,11 +530,12 @@ flash cards".
</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">vf</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">form_structures</span><span class="plain-syntax"> &amp; (</span><span class="constant-syntax">VO_FS_BIT</span><span class="plain-syntax"> + </span><span class="constant-syntax">VOO_FS_BIT</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pos</span><span class="plain-syntax"> &gt; </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">vf</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">form_structures</span><span class="plain-syntax"> &amp; (</span><span class="constant-syntax">VO_FS_BIT</span><span class="plain-syntax"> + </span><span class="constant-syntax">VOO_FS_BIT</span><span class="plain-syntax">)) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pos</span><span class="plain-syntax"> == </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">vf</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">form_structures</span><span class="plain-syntax"> &amp; (</span><span class="constant-syntax">SVO_FS_BIT</span><span class="plain-syntax"> + </span><span class="constant-syntax">SVOO_FS_BIT</span><span class="plain-syntax">)) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pos</span><span class="plain-syntax"> &gt; </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-vp.html#SP5_4_1_1_1">&#167;5.4.1.1.1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP5_4_1_1_1_2"></a><b>&#167;5.4.1.1.1.2. </b>So now we know that the verb definitely appears. We form <span class="extract"><span class="extract-syntax">ISW</span></span> as the
@ -766,21 +767,23 @@ if there is one.
<span class="plain-syntax"> </span><span class="reserved-syntax">verb_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vm</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">verb_sense</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vs</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="identifier-syntax">list_of_senses:NULL</span><span class="plain-syntax">; </span><span class="identifier-syntax">vs</span><span class="plain-syntax">; </span><span class="identifier-syntax">vs</span><span class="plain-syntax"> = </span><span class="identifier-syntax">vs</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next_sense</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">vm</span><span class="plain-syntax"> = &amp;(</span><span class="identifier-syntax">vs</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">vm</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">special_meaning_holder</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sm</span><span class="plain-syntax"> = </span><a href="3-vm.html#SP12" class="function-link"><span class="function-syntax">VerbMeanings::get_special_meaning_fn</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">special_meaning_holder</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sm</span><span class="plain-syntax"> = </span><a href="3-vm.html#SP11" class="function-link"><span class="function-syntax">VerbMeanings::get_special_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">sm</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">SNPs</span><span class="plain-syntax">[</span><span class="constant-syntax">MAX_NPS_IN_VP</span><span class="plain-syntax">];</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-vm.html#SP12" class="function-link"><span class="function-syntax">VerbMeanings::get_reversal_status_of_smf</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><a href="3-vm.html#SP11" class="function-link"><span class="function-syntax">VerbMeanings::get_reversal_status_of_smf</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="identifier-syntax">SNPs</span><span class="plain-syntax">[0] = </span><span class="identifier-syntax">NPs</span><span class="plain-syntax">[1]; </span><span class="identifier-syntax">SNPs</span><span class="plain-syntax">[1] = </span><span class="identifier-syntax">NPs</span><span class="plain-syntax">[0]; </span><span class="identifier-syntax">SNPs</span><span class="plain-syntax">[2] = </span><span class="identifier-syntax">NPs</span><span class="plain-syntax">[2];</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SNPs</span><span class="plain-syntax">[0] = </span><span class="identifier-syntax">NPs</span><span class="plain-syntax">[0]; </span><span class="identifier-syntax">SNPs</span><span class="plain-syntax">[1] = </span><span class="identifier-syntax">NPs</span><span class="plain-syntax">[1]; </span><span class="identifier-syntax">SNPs</span><span class="plain-syntax">[2] = </span><span class="identifier-syntax">NPs</span><span class="plain-syntax">[2];</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((*(</span><span class="identifier-syntax">sm</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">sm_func</span><span class="plain-syntax">))(</span><span class="constant-syntax">ACCEPT_SMFT</span><span class="plain-syntax">, </span><span class="identifier-syntax">VP_PN</span><span class="plain-syntax">, </span><span class="identifier-syntax">SNPs</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-sm.html#SP8" class="function-link"><span class="function-syntax">SpecialMeanings::call</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">sm</span><span class="plain-syntax">, </span><span class="constant-syntax">ACCEPT_SMFT</span><span class="plain-syntax">, </span><span class="identifier-syntax">VP_PN</span><span class="plain-syntax">, </span><span class="identifier-syntax">SNPs</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_special_meaning</span><span class="plain-syntax">(</span><span class="identifier-syntax">VP_PN</span><span class="plain-syntax">, </span><span class="identifier-syntax">sm</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">VP_PN</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</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">)) &amp;&amp;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="3-vm.html#SP10" 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">)) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">[0])) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">[1])) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::empty</span><span class="plain-syntax">(</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">[2])) &amp;&amp;</span>
<span class="plain-syntax"> (</span><a href="4-vp.html#SP7" class="function-link"><span class="function-syntax">VerbPhrases::default_verb</span></a><span class="plain-syntax">(</span><span class="constant-syntax">ACCEPT_SMFT</span><span class="plain-syntax">, </span><span class="identifier-syntax">VP_PN</span><span class="plain-syntax">, </span><span class="identifier-syntax">vm</span><span class="plain-syntax">, </span><span class="identifier-syntax">NPs</span><span class="plain-syntax">))) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">VP_PN</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>
@ -832,7 +835,7 @@ point of view, it is being worn.
</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">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="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#SP10" 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">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="1-dgr.html#SP7" class="function-link"><span class="function-syntax">Diagrams::new_RELATIONSHIP</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>

View file

@ -147,19 +147,6 @@ very limited stock of nouns, verbs and prepositions as follows:
</p>
<pre class="undisplayed-code all-displayed-code code-font">
<span class="plain-syntax">IS = relationship.</span>
<span class="plain-syntax">HAS = relationship.</span>
<span class="plain-syntax">CARRIES = relationship.</span>
<span class="plain-syntax">KNOWS = relationship.</span>
<span class="plain-syntax">be = verb meaning IS with priority 2.</span>
<span class="plain-syntax">have = verb meaning HAS with priority 1.</span>
<span class="plain-syntax">carry = verb meaning CARRIES with priority 3.</span>
<span class="plain-syntax">know = verb meaning KNOWS with priority 3.</span>
<span class="plain-syntax">be + on = preposition meaning CARRIES-reversed.</span>
<span class="plain-syntax">be + under = preposition meaning CARRIES.</span>
<span class="plain-syntax">Anna = feminine proper noun.</span>
<span class="plain-syntax">Beth = feminine proper noun.</span>
<span class="plain-syntax">Charles = masculine proper noun.</span>
@ -170,6 +157,31 @@ very limited stock of nouns, verbs and prepositions as follows:
<span class="plain-syntax">sailor = masculine common noun.</span>
<span class="plain-syntax">table = neuter common noun.</span>
<span class="plain-syntax">Ming vase = neuter common noun.</span>
<span class="plain-syntax">IS = relationship.</span>
<span class="plain-syntax">HAS = relationship.</span>
<span class="plain-syntax">CARRIES = relationship.</span>
<span class="plain-syntax">KNOWS = relationship.</span>
<span class="plain-syntax">COMBINES = special meaning.</span>
<span class="plain-syntax">COMBINESUP = special meaning.</span>
<span class="plain-syntax">GREETS = special meaning.</span>
<span class="plain-syntax">be = copular verb with priority 2.</span>
<span class="plain-syntax">have = verb with priority 1.</span>
<span class="plain-syntax">carry = verb with priority 3.</span>
<span class="plain-syntax">greet = verb with priority 3.</span>
<span class="plain-syntax">know = verb with priority 3.</span>
<span class="plain-syntax">combine = verb with priority 3.</span>
<span class="plain-syntax">-- be -- = IS.</span>
<span class="plain-syntax">-- have -- = HAS.</span>
<span class="plain-syntax">-- carry -- = CARRIES.</span>
<span class="plain-syntax">-- know -- = KNOWS.</span>
<span class="plain-syntax">-- be on -- = CARRIES-reversed.</span>
<span class="plain-syntax">-- be under -- = CARRIES.</span>
<span class="plain-syntax">combine -- with -- = COMBINES.</span>
<span class="plain-syntax">combine up -- with -- = COMBINESUP.</span>
<span class="plain-syntax">greet -- = GREETS.</span>
</pre>
<p class="commentary">We only know that Beth is feminine-gendered and sailor masculine-gendered<sup id="fnref:3"><a href="#fn:3" rel="footnote">3</a></sup>
because the vocabulary being used by <a href="../linguistics-test/index.html" class="internal">linguistics-test</a> says so. It's
@ -372,7 +384,33 @@ fresh nodes:
<span class="plain-syntax"> RELATIONSHIP_NT'carries' {meaning: carries-reversed}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'ming vase' {common nom/acc n s} {definite 'the' n/m/f s/p nom/acc}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP11"></a><b>&#167;11. </b>That shows the full range of what happens with verb nodes. Turning back
<p class="commentary firstcommentary"><a id="SP11"></a><b>&#167;11. </b>We can also support imperative verbs, with "special meanings" which are
not necessarily relational, and do not always lead to <span class="extract"><span class="extract-syntax">RELATIONSHIP_NT</span></span>
subtrees. See <a href="3-sm.html" class="internal">Special Meanings</a>.
</p>
<pre class="undisplayed-code all-displayed-code code-font">
<span class="plain-syntax">(1) greet beth</span>
<span class="plain-syntax">SENTENCE_NT'greet beth'</span>
<span class="plain-syntax"> VERB_NT'greet' {verb 'greet' 1p/2p s/p act IS_TENSE +ve + 3p p act IS_TENSE +ve} {special meaning: greets}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'beth' {proper nom/acc f s}</span>
<span class="plain-syntax">(2) combine the ming vase with the table</span>
<span class="plain-syntax">SENTENCE_NT'combine the ming vase with the table'</span>
<span class="plain-syntax"> VERB_NT'combine' {verb 'combine' 1p/2p s/p act IS_TENSE +ve + 3p p act IS_TENSE +ve} {special meaning: combines}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'the table' {common nom/acc n s}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'the ming vase' {common nom/acc n s}</span>
<span class="plain-syntax">(3) combine up the ming vase with the table</span>
<span class="plain-syntax">SENTENCE_NT'combine up the ming vase with the table'</span>
<span class="plain-syntax"> VERB_NT'combine up' {verb 'combine' 1p/2p s/p act IS_TENSE +ve + 3p p act IS_TENSE +ve} {special meaning: combinesup}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'the table' {common nom/acc n s}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'the ming vase' {common nom/acc n s}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP12"></a><b>&#167;12. </b>That shows the full range of what happens with verb nodes. Turning back
to noun phrases, we can have serial lists:
</p>
@ -451,7 +489,7 @@ disallow this. Unfortunately, less extreme zeugmas occur all the time:
<p>The red door is west of the Dining Room and east of the Ballroom.</p>
</blockquote>
<p class="commentary firstcommentary"><a id="SP12"></a><b>&#167;12. </b>Now we introduce pronouns to the mix. These are detected automatically
<p class="commentary firstcommentary"><a id="SP13"></a><b>&#167;13. </b>Now we introduce pronouns to the mix. These are detected automatically
by <a href="index.html" class="internal">linguistics</a>, and exist in nominative and accusative cases in
English. Note the difference in annotations between "them" and "you",
for example.
@ -505,7 +543,7 @@ for example.
<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
<p class="commentary firstcommentary"><a id="SP14"></a><b>&#167;14. </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
otherwise have a structural meaning. ("Called" is to Inform as the backslash
character, making letters literal, is to C.)
@ -559,7 +597,7 @@ character, making letters literal, is to C.)
<span class="plain-syntax"> COMMON_NOUN_NT'table' {common nom/acc n s} {indefinite 'a' n/m/f nom/acc s}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'billiards table with deep pockets' {definite 'the' n/m/f s/p nom/acc}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP14"></a><b>&#167;14. </b>The word "with", often but not always used in conjunction with "kind of":
<p class="commentary firstcommentary"><a id="SP15"></a><b>&#167;15. </b>The word "with", often but not always used in conjunction with "kind of":
</p>
<pre class="undisplayed-code all-displayed-code code-font">

View file

@ -282,7 +282,7 @@ other "to be" plus the preposition "in", which changes the meaning.
<p class="commentary">The user, then, creates <a href="3-vrb.html#SP1" class="internal">verb</a> objects and gives them //verb_form//s,
attaching meanings to each form via the mechanisms in <a href="3-vm.html" class="internal">Verb Meanings</a>
(which wrap those meanings in <a href="3-vm.html#SP4" class="internal">verb_meaning</a> objects). The linguistics
(which wrap those meanings in <a href="3-vm.html#SP3" class="internal">verb_meaning</a> objects). The linguistics
module then has to provide an efficient way to parse text to find uses
of these verbs, and it does so by constructing intermediate objects.
See <a href="3-vu.html" class="internal">Verb Usages</a>.

View file

@ -148,6 +148,11 @@
<spon class="sectiontitle">Verb Meanings</span></a> -
<span class="sectionpurpose">To abstract the meaning of a verb.</span></p>
</li>
<li>
<p class="sectionentry"><a href="3-sm.html">
<spon class="sectiontitle">Special Meanings</span></a> -
<span class="sectionpurpose">To abstract non-standard, perhaps non-SVO, meanings of a verb.</span></p>
</li>
<li>
<p class="sectionentry"><a href="3-vu.html">
<spon class="sectiontitle">Verb Usages</span></a> -

View file

@ -110,8 +110,8 @@ with the facilities offered by the <a href="../syntax-module/index.html" class="
<pre class="Preform-displayed-code all-displayed-code code-font">
<span class="Preform-plain-syntax"> CARRIES = relationship.</span>
<span class="Preform-plain-syntax"> be = verb meaning IS with priority 2.</span>
<span class="Preform-plain-syntax"> be + on = preposition meaning CARRIES.</span>
<span class="Preform-plain-syntax"> be = copular verb with priority 2.</span>
<span class="Preform-plain-syntax"> -- be on -- = CARRIES-reversed.</span>
<span class="Preform-plain-syntax"> Beth = feminine proper noun.</span>
<span class="Preform-plain-syntax"> sailor = neuter common noun.</span>
</pre>
@ -120,11 +120,19 @@ with the facilities offered by the <a href="../syntax-module/index.html" class="
<pre class="Preform-displayed-code all-displayed-code code-font">
<span class="Preform-function-syntax">&lt;vocabulary-line&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">=</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">relationship</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="1-bnk.html#SP3_1" class="named-paragraph-link"><span class="named-paragraph">Create relationship</span><span class="named-paragraph-number">3.1</span></a></span><span class="Preform-constant-syntax">;</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">=</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">verb</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">meaning</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;meaning&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">with</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">priority</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;cardinal-number&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-bnk.html#SP3_2" class="named-paragraph-link"><span class="named-paragraph">Create verb</span><span class="named-paragraph-number">3.2</span></a></span><span class="Preform-constant-syntax">;</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;existing-verb&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">+</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">=</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">preposition</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">meaning</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;meaning&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-bnk.html#SP3_3" class="named-paragraph-link"><span class="named-paragraph">Create preposition</span><span class="named-paragraph-number">3.3</span></a></span><span class="Preform-constant-syntax">;</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">=</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;gender&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">common</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">noun</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="1-bnk.html#SP3_4" class="named-paragraph-link"><span class="named-paragraph">Create common noun</span><span class="named-paragraph-number">3.4</span></a></span><span class="Preform-constant-syntax">;</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">=</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;gender&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">proper</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">noun</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="1-bnk.html#SP3_5" class="named-paragraph-link"><span class="named-paragraph">Create proper noun</span><span class="named-paragraph-number">3.5</span></a></span><span class="Preform-constant-syntax">;</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">=</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">relationship</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="1-bnk.html#SP3_1" class="named-paragraph-link"><span class="named-paragraph">Create relationship</span><span class="named-paragraph-number">3.1</span></a></span><span class="Preform-constant-syntax">;</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">=</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">special</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">meaning</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="1-bnk.html#SP3_2" class="named-paragraph-link"><span class="named-paragraph">Create special meaning</span><span class="named-paragraph-number">3.2</span></a></span><span class="Preform-constant-syntax">;</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">=</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">copular</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">verb</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">with</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">priority</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;cardinal-number&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-bnk.html#SP3_4" class="named-paragraph-link"><span class="named-paragraph">Create copular verb</span><span class="named-paragraph-number">3.4</span></a></span><span class="Preform-constant-syntax">;</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">=</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">verb</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">with</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">priority</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;cardinal-number&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-bnk.html#SP3_3" class="named-paragraph-link"><span class="named-paragraph">Create verb</span><span class="named-paragraph-number">3.3</span></a></span><span class="Preform-constant-syntax">;</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">--</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;existing-verb&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">--</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">=</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;meaning&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-bnk.html#SP3_5" class="named-paragraph-link"><span class="named-paragraph">Create SVO usage</span><span class="named-paragraph-number">3.5</span></a></span><span class="Preform-constant-syntax">;</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">--</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;existing-verb&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">###</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">--</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">=</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;meaning&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-bnk.html#SP3_6" class="named-paragraph-link"><span class="named-paragraph">Create SVPO usage</span><span class="named-paragraph-number">3.6</span></a></span><span class="Preform-constant-syntax">;</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;existing-verb&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">--</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">=</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;special-meaning&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-bnk.html#SP3_7" class="named-paragraph-link"><span class="named-paragraph">Create VO usage S</span><span class="named-paragraph-number">3.7</span></a></span><span class="Preform-constant-syntax">;</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">--</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;existing-verb&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">--</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">=</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;special-meaning&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-bnk.html#SP3_8" class="named-paragraph-link"><span class="named-paragraph">Create SVO usage S</span><span class="named-paragraph-number">3.8</span></a></span><span class="Preform-constant-syntax">;</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">--</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;existing-verb&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">###</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">--</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">=</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;special-meaning&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-bnk.html#SP3_9" class="named-paragraph-link"><span class="named-paragraph">Create SVPO usage S</span><span class="named-paragraph-number">3.9</span></a></span><span class="Preform-constant-syntax">;</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;existing-verb&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">--</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">###</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">--</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">=</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;special-meaning&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-bnk.html#SP3_10" class="named-paragraph-link"><span class="named-paragraph">Create VSPO usage S</span><span class="named-paragraph-number">3.10</span></a></span><span class="Preform-constant-syntax">;</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;existing-verb&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">###</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">--</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">###</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">--</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">=</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;special-meaning&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-bnk.html#SP3_11" class="named-paragraph-link"><span class="named-paragraph">Create VPSPO usage S</span><span class="named-paragraph-number">3.11</span></a></span><span class="Preform-constant-syntax">;</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">=</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;gender&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">common</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">noun</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="1-bnk.html#SP3_12" class="named-paragraph-link"><span class="named-paragraph">Create common noun</span><span class="named-paragraph-number">3.12</span></a></span><span class="Preform-constant-syntax">;</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">=</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;gender&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">proper</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">noun</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="1-bnk.html#SP3_13" class="named-paragraph-link"><span class="named-paragraph">Create proper noun</span><span class="named-paragraph-number">3.13</span></a></span><span class="Preform-constant-syntax">;</span>
<span class="Preform-function-syntax">&lt;gender&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">neuter</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"> NEUTER_GENDER</span>
@ -137,6 +145,12 @@ with the facilities offered by the <a href="../syntax-module/index.html" class="
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">return</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">FALSE</span><span class="Preform-plain-syntax">;</span>
<span class="Preform-plain-syntax">}</span>
<span class="Preform-function-syntax">&lt;special-meaning&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-identifier-syntax">XP</span><span class="Preform-plain-syntax"> = </span><a href="../linguistics-module/3-sm.html#SP6" class="function-link"><span class="Preform-function-syntax">SpecialMeanings::find_from_wording</span></a><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-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-constant-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-constant-syntax">FALSE</span><span class="Preform-plain-syntax">;</span>
<span class="Preform-plain-syntax">}</span>
<span class="Preform-function-syntax">&lt;existing-verb&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">{</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">verb</span><span class="Preform-plain-syntax"> *</span><span class="Preform-identifier-syntax">V</span><span class="Preform-plain-syntax">;</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">LOOP_OVER</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">V</span><span class="Preform-plain-syntax">, </span><span class="Preform-reserved-syntax">verb</span><span class="Preform-plain-syntax">)</span>
@ -154,32 +168,113 @@ with the facilities offered by the <a href="../syntax-module/index.html" class="
<span class="plain-syntax"> </span><a href="1-rlt.html#SP7" class="function-link"><span class="function-syntax">Relating::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">FW</span><span class="plain-syntax">[1]);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="1-bnk.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_2"></a><b>&#167;3.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Create verb</span><span class="named-paragraph-number">3.2</span></span><span class="comment-syntax"> =</span>
<p class="commentary firstcommentary"><a id="SP3_2"></a><b>&#167;3.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Create special meaning</span><span class="named-paragraph-number">3.2</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax"> = </span><a href="../../../inweb/docs/foundation-module/4-sm.html#SP2" class="function-link"><span class="function-syntax">Str::new</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="string-syntax">"%W"</span><span class="plain-syntax">, </span><span class="identifier-syntax">FW</span><span class="plain-syntax">[1]);</span>
<span class="plain-syntax"> </span><a href="../linguistics-module/3-sm.html#SP5" class="function-link"><span class="function-syntax">SpecialMeanings::declare</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="1-bnk.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_3"></a><b>&#167;3.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Create verb</span><span class="named-paragraph-number">3.3</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">rel</span><span class="plain-syntax"> *</span><span class="identifier-syntax">RN</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">rel</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">RP</span><span class="plain-syntax">[1];</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">verb_conjugation</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vc</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><a href="../inflections-module/3-vc.html#SP6" class="function-link"><span class="function-syntax">Conjugation::conjugate</span></a><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><a href="../words-module/2-wa.html#SP4" class="function-link"><span class="function-syntax">WordAssemblages::from_wording</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">FW</span><span class="plain-syntax">[1]), </span><a href="../inflections-module/4-dl.html#SP1" class="function-link"><span class="function-syntax">DefaultLanguage::get</span></a><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</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vi</span><span class="plain-syntax"> = </span><a href="../linguistics-module/3-vrb.html#SP3" class="function-link"><span class="function-syntax">Verbs::new_verb</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">vc</span><span class="plain-syntax">, (</span><span class="identifier-syntax">RN</span><span class="plain-syntax"> == </span><span class="identifier-syntax">R_equality</span><span class="plain-syntax">)?</span><span class="identifier-syntax">TRUE:FALSE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">vc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">vc_conjugates</span><span class="plain-syntax"> = </span><span class="identifier-syntax">vi</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="../linguistics-module/3-vu.html#SP6" class="function-link"><span class="function-syntax">VerbUsages::register_all_usages_of_verb</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">vi</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">R</span><span class="plain-syntax">[2], </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../linguistics-module/3-vrb.html#SP12" class="function-link"><span class="function-syntax">Verbs::add_form</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">vi</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><a href="../linguistics-module/3-vm.html#SP6" class="function-link"><span class="function-syntax">VerbMeanings::regular</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">RN</span><span class="plain-syntax">), </span><span class="constant-syntax">SVO_FS_BIT</span><span class="plain-syntax">);</span>
<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><a href="../linguistics-module/3-vrb.html#SP3" class="function-link"><span class="function-syntax">Verbs::new_verb</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">vc</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">vc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">vc_conjugates</span><span class="plain-syntax"> = </span><span class="identifier-syntax">V</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="../linguistics-module/3-vu.html#SP6" class="function-link"><span class="function-syntax">VerbUsages::register_all_usages_of_verb</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">V</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">R</span><span class="plain-syntax">[1], </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="1-bnk.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_3"></a><b>&#167;3.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Create preposition</span><span class="named-paragraph-number">3.3</span></span><span class="comment-syntax"> =</span>
<p class="commentary firstcommentary"><a id="SP3_4"></a><b>&#167;3.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Create copular verb</span><span class="named-paragraph-number">3.4</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">word_assemblage</span><span class="plain-syntax"> </span><span class="identifier-syntax">wa</span><span class="plain-syntax"> = </span><a href="../words-module/2-wa.html#SP4" class="function-link"><span class="function-syntax">WordAssemblages::from_wording</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">FW</span><span class="plain-syntax">[1]);</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><a href="../linguistics-module/3-prp.html#SP6" class="function-link"><span class="function-syntax">Prepositions::make</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wa</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</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</span><span class="plain-syntax"> *</span><span class="identifier-syntax">V</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">verb</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">RP</span><span class="plain-syntax">[1];</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">rel</span><span class="plain-syntax"> *</span><span class="identifier-syntax">RN</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">rel</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">RP</span><span class="plain-syntax">[2];</span>
<span class="plain-syntax"> </span><a href="../linguistics-module/3-vrb.html#SP12" class="function-link"><span class="function-syntax">Verbs::add_form</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">V</span><span class="plain-syntax">, </span><span class="identifier-syntax">prep</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><a href="../linguistics-module/3-vm.html#SP6" class="function-link"><span class="function-syntax">VerbMeanings::regular</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">RN</span><span class="plain-syntax">), </span><span class="constant-syntax">SVO_FS_BIT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">verb_conjugation</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vc</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><a href="../inflections-module/3-vc.html#SP6" class="function-link"><span class="function-syntax">Conjugation::conjugate</span></a><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><a href="../words-module/2-wa.html#SP4" class="function-link"><span class="function-syntax">WordAssemblages::from_wording</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">FW</span><span class="plain-syntax">[1]), </span><a href="../inflections-module/4-dl.html#SP1" class="function-link"><span class="function-syntax">DefaultLanguage::get</span></a><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</span><span class="plain-syntax"> *</span><span class="identifier-syntax">V</span><span class="plain-syntax"> = </span><a href="../linguistics-module/3-vrb.html#SP3" class="function-link"><span class="function-syntax">Verbs::new_verb</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">vc</span><span class="plain-syntax">, </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">vc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">vc_conjugates</span><span class="plain-syntax"> = </span><span class="identifier-syntax">V</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="../linguistics-module/3-vu.html#SP6" class="function-link"><span class="function-syntax">VerbUsages::register_all_usages_of_verb</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">V</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">R</span><span class="plain-syntax">[1], </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="1-bnk.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_4"></a><b>&#167;3.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Create common noun</span><span class="named-paragraph-number">3.4</span></span><span class="comment-syntax"> =</span>
<p class="commentary firstcommentary"><a id="SP3_5"></a><b>&#167;3.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Create SVO usage</span><span class="named-paragraph-number">3.5</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">verb</span><span class="plain-syntax"> *</span><span class="identifier-syntax">V</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">verb</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">RP</span><span class="plain-syntax">[1];</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">rel</span><span class="plain-syntax"> *</span><span class="identifier-syntax">RN</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">rel</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">RP</span><span class="plain-syntax">[2];</span>
<span class="plain-syntax"> </span><a href="../linguistics-module/3-vrb.html#SP12" class="function-link"><span class="function-syntax">Verbs::add_form</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">V</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><a href="../linguistics-module/3-vm.html#SP5" class="function-link"><span class="function-syntax">VerbMeanings::regular</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">RN</span><span class="plain-syntax">), </span><span class="constant-syntax">SVO_FS_BIT</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="1-bnk.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_6"></a><b>&#167;3.6. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Create SVPO usage</span><span class="named-paragraph-number">3.6</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">verb</span><span class="plain-syntax"> *</span><span class="identifier-syntax">V</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">verb</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">RP</span><span class="plain-syntax">[1];</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">rel</span><span class="plain-syntax"> *</span><span class="identifier-syntax">RN</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">rel</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">RP</span><span class="plain-syntax">[2];</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">word_assemblage</span><span class="plain-syntax"> </span><span class="identifier-syntax">wa</span><span class="plain-syntax"> = </span><a href="../words-module/2-wa.html#SP4" class="function-link"><span class="function-syntax">WordAssemblages::from_wording</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">FW</span><span class="plain-syntax">[1]);</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><a href="../linguistics-module/3-prp.html#SP6" class="function-link"><span class="function-syntax">Prepositions::make</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wa</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../linguistics-module/3-vrb.html#SP12" class="function-link"><span class="function-syntax">Verbs::add_form</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">V</span><span class="plain-syntax">, </span><span class="identifier-syntax">prep</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><a href="../linguistics-module/3-vm.html#SP5" class="function-link"><span class="function-syntax">VerbMeanings::regular</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">RN</span><span class="plain-syntax">), </span><span class="constant-syntax">SVO_FS_BIT</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="1-bnk.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_7"></a><b>&#167;3.7. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Create VO usage S</span><span class="named-paragraph-number">3.7</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">verb</span><span class="plain-syntax"> *</span><span class="identifier-syntax">V</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">verb</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">RP</span><span class="plain-syntax">[1];</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">special_meaning_holder</span><span class="plain-syntax"> *</span><span class="identifier-syntax">SM</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">special_meaning_holder</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">RP</span><span class="plain-syntax">[2];</span>
<span class="plain-syntax"> </span><a href="../linguistics-module/3-vrb.html#SP12" class="function-link"><span class="function-syntax">Verbs::add_form</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">V</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><a href="../linguistics-module/3-vm.html#SP5" class="function-link"><span class="function-syntax">VerbMeanings::special</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">SM</span><span class="plain-syntax">), </span><span class="constant-syntax">VO_FS_BIT</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="1-bnk.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_8"></a><b>&#167;3.8. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Create SVO usage S</span><span class="named-paragraph-number">3.8</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">verb</span><span class="plain-syntax"> *</span><span class="identifier-syntax">V</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">verb</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">RP</span><span class="plain-syntax">[1];</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">special_meaning_holder</span><span class="plain-syntax"> *</span><span class="identifier-syntax">SM</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">special_meaning_holder</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">RP</span><span class="plain-syntax">[2];</span>
<span class="plain-syntax"> </span><a href="../linguistics-module/3-vrb.html#SP12" class="function-link"><span class="function-syntax">Verbs::add_form</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">V</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><a href="../linguistics-module/3-vm.html#SP5" class="function-link"><span class="function-syntax">VerbMeanings::special</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">SM</span><span class="plain-syntax">), </span><span class="constant-syntax">SVO_FS_BIT</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="1-bnk.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_9"></a><b>&#167;3.9. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Create SVPO usage S</span><span class="named-paragraph-number">3.9</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">verb</span><span class="plain-syntax"> *</span><span class="identifier-syntax">V</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">verb</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">RP</span><span class="plain-syntax">[1];</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">special_meaning_holder</span><span class="plain-syntax"> *</span><span class="identifier-syntax">SM</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">special_meaning_holder</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">RP</span><span class="plain-syntax">[2];</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">word_assemblage</span><span class="plain-syntax"> </span><span class="identifier-syntax">wa</span><span class="plain-syntax"> = </span><a href="../words-module/2-wa.html#SP4" class="function-link"><span class="function-syntax">WordAssemblages::from_wording</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">FW</span><span class="plain-syntax">[1]);</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><a href="../linguistics-module/3-prp.html#SP6" class="function-link"><span class="function-syntax">Prepositions::make</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wa</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../linguistics-module/3-vrb.html#SP12" class="function-link"><span class="function-syntax">Verbs::add_form</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">V</span><span class="plain-syntax">, </span><span class="identifier-syntax">prep</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><a href="../linguistics-module/3-vm.html#SP5" class="function-link"><span class="function-syntax">VerbMeanings::special</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">SM</span><span class="plain-syntax">), </span><span class="constant-syntax">SVO_FS_BIT</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="1-bnk.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_10"></a><b>&#167;3.10. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Create VSPO usage S</span><span class="named-paragraph-number">3.10</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">verb</span><span class="plain-syntax"> *</span><span class="identifier-syntax">V</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">verb</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">RP</span><span class="plain-syntax">[1];</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">special_meaning_holder</span><span class="plain-syntax"> *</span><span class="identifier-syntax">SM</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">special_meaning_holder</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">RP</span><span class="plain-syntax">[2];</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">word_assemblage</span><span class="plain-syntax"> </span><span class="identifier-syntax">wa</span><span class="plain-syntax"> = </span><a href="../words-module/2-wa.html#SP4" class="function-link"><span class="function-syntax">WordAssemblages::from_wording</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">FW</span><span class="plain-syntax">[1]);</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><a href="../linguistics-module/3-prp.html#SP6" class="function-link"><span class="function-syntax">Prepositions::make</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wa</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../linguistics-module/3-vrb.html#SP12" class="function-link"><span class="function-syntax">Verbs::add_form</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">V</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">prep</span><span class="plain-syntax">, </span><a href="../linguistics-module/3-vm.html#SP5" class="function-link"><span class="function-syntax">VerbMeanings::special</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">SM</span><span class="plain-syntax">), </span><span class="constant-syntax">VOO_FS_BIT</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="1-bnk.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_11"></a><b>&#167;3.11. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Create VPSPO usage S</span><span class="named-paragraph-number">3.11</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">verb</span><span class="plain-syntax"> *</span><span class="identifier-syntax">V</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">verb</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">RP</span><span class="plain-syntax">[1];</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">special_meaning_holder</span><span class="plain-syntax"> *</span><span class="identifier-syntax">SM</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">special_meaning_holder</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">RP</span><span class="plain-syntax">[2];</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">word_assemblage</span><span class="plain-syntax"> </span><span class="identifier-syntax">wa1</span><span class="plain-syntax"> = </span><a href="../words-module/2-wa.html#SP4" class="function-link"><span class="function-syntax">WordAssemblages::from_wording</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">FW</span><span class="plain-syntax">[1]);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">word_assemblage</span><span class="plain-syntax"> </span><span class="identifier-syntax">wa2</span><span class="plain-syntax"> = </span><a href="../words-module/2-wa.html#SP4" class="function-link"><span class="function-syntax">WordAssemblages::from_wording</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">FW</span><span class="plain-syntax">[2]);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">preposition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prep1</span><span class="plain-syntax"> = </span><a href="../linguistics-module/3-prp.html#SP6" class="function-link"><span class="function-syntax">Prepositions::make</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wa1</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</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">preposition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prep2</span><span class="plain-syntax"> = </span><a href="../linguistics-module/3-prp.html#SP6" class="function-link"><span class="function-syntax">Prepositions::make</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wa2</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../linguistics-module/3-vrb.html#SP12" class="function-link"><span class="function-syntax">Verbs::add_form</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">V</span><span class="plain-syntax">, </span><span class="identifier-syntax">prep1</span><span class="plain-syntax">, </span><span class="identifier-syntax">prep2</span><span class="plain-syntax">, </span><a href="../linguistics-module/3-vm.html#SP5" class="function-link"><span class="function-syntax">VerbMeanings::special</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">SM</span><span class="plain-syntax">), </span><span class="constant-syntax">VOO_FS_BIT</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="1-bnk.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_12"></a><b>&#167;3.12. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Create common noun</span><span class="named-paragraph-number">3.12</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -187,7 +282,7 @@ with the facilities offered by the <a href="../syntax-module/index.html" class="
<span class="plain-syntax"> </span><span class="constant-syntax">NOUN_MC</span><span class="plain-syntax">, </span><span class="constant-syntax">NULL_GENERAL_POINTER</span><span class="plain-syntax">, </span><a href="../inflections-module/4-dl.html#SP1" class="function-link"><span class="function-syntax">DefaultLanguage::get</span></a><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="1-bnk.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_5"></a><b>&#167;3.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Create proper noun</span><span class="named-paragraph-number">3.5</span></span><span class="comment-syntax"> =</span>
<p class="commentary firstcommentary"><a id="SP3_13"></a><b>&#167;3.13. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Create proper noun</span><span class="named-paragraph-number">3.13</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">

View file

@ -107,7 +107,9 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP2"></a><b>&#167;2. </b></p>
<p class="commentary firstcommentary"><a id="SP2"></a><b>&#167;2. </b><span class="extract"><span class="extract-syntax">-trace</span></span> turns all verb phrase tracing on; <span class="extract"><span class="extract-syntax">-viability</span></span> just shows the
viability map for each sentence.
</p>
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">TRACING_LINGUISTICS_CALLBACK</span><span class="plain-syntax"> </span><a href="1-pc.html#SP2" class="function-link"><span class="function-syntax">Main::trace_parsing</span></a>
</pre>

View file

@ -138,14 +138,12 @@ must be for equality and possession:
<span class="reserved-syntax">rel</span><span class="plain-syntax"> *</span><span class="function-syntax">Relating::find</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">Relating::find</span></span>:<br/>Banking - <a href="1-bnk.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-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">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="string-syntax">"%W"</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">rel</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">, *</span><span class="identifier-syntax">R</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">rel</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">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="reserved-syntax">rel</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../../../inweb/docs/foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq_insensitive</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">debugging_log_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">R</span><span class="plain-syntax"> = </span><span class="identifier-syntax">T</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">R</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="constant-syntax">STDERR</span><span class="plain-syntax">, </span><span class="string-syntax">"unable to find relation named %S\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">R</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">T</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">

View file

@ -1,15 +1,15 @@
100.0% in inform7 run
67.4% in compilation to Inter
25.5% in //Phrases::Manager::compile_first_block//
9.2% in //Phrases::Manager::compile_as_needed//
7.0% in //Strings::compile_responses//
67.1% in compilation to Inter
25.6% in //Phrases::Manager::compile_first_block//
9.1% in //Phrases::Manager::compile_as_needed//
6.8% in //Strings::compile_responses//
6.1% in //World::Compile::compile//
3.5% in //Assertions::Traverse::traverse1//
3.3% in //Sentences::VPs::traverse//
2.1% in //Phrases::Manager::RulePrintingRule_routine//
1.9% in //Phrases::Manager::rulebooks_array//
1.0% in //NewVerbs::ConjugateVerb//
0.8% in //Phrases::Manager::traverse//
2.0% in //Phrases::Manager::RulePrintingRule_routine//
1.8% in //Phrases::Manager::rulebooks_array//
1.1% in //NewVerbs::ConjugateVerb//
0.7% in //Phrases::Manager::traverse//
0.5% in //Phrases::Manager::parse_rule_parameters//
0.3% in //Phrases::Manager::compile_rulebooks//
0.3% in //Phrases::Manager::traverse_for_names//
@ -19,19 +19,18 @@
0.1% in //Sentences::RuleSubtrees::register_recently_lexed_phrases//
0.1% in //Task::load_types//
0.1% in //World::complete//
4.2% not specifically accounted for
30.2% in running Inter pipeline
10.1% in step preparation
9.9% in inter step 2/12: link
6.6% in inter step 12/12: generate inform6 -> auto.inf
4.1% not specifically accounted for
30.4% in running Inter pipeline
10.0% in step preparation
9.6% in inter step 2/12: link
7.2% in inter step 12/12: generate inform6 -> auto.inf
0.3% in inter step 9/12: make-identifiers-unique
0.1% in inter step 10/12: reconcile-verbs
0.1% in inter step 11/12: eliminate-redundant-labels
0.1% in inter step 4/12: parse-linked-matter
0.1% in inter step 5/12: resolve-conditional-compilation
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.1% in supervisor
0.2% not specifically accounted for
2.0% not specifically accounted for
2.0% in supervisor
0.4% not specifically accounted for

View file

@ -385,8 +385,8 @@ void NewVerbs::parse_new(parse_node *PN, int imperative) {
break;
case BUILTIN_VERBM: {
wording MW = GET_RW(<verb-implies-sentence-object>, 1);
vm = VerbMeanings::sm_by_name(Lexer::word_text(Wordings::first_wn(MW)), &priority);
if ((Wordings::length(MW) != 1) || (VerbMeanings::is_meaningless(&vm))) {
special_meaning_holder *smh = SpecialMeanings::find_from_wording(MW);
if (smh == NULL) {
#ifndef IF_MODULE
source_file *pos = Lexer::file_of_origin(Wordings::first_wn(MW));
inform_extension *loc = Extensions::corresponding_to(pos);
@ -397,6 +397,9 @@ void NewVerbs::parse_new(parse_node *PN, int imperative) {
"and should be one of the ones used in the Preamble to the "
"Standard Rules.");
vm = VerbMeanings::regular(R_equality);
} else {
vm = VerbMeanings::special(smh);
priority = SpecialMeanings::get_metadata_N(smh);
}
break;
}
@ -620,52 +623,52 @@ foreign verbs (4).
@ =
void NewVerbs::bootstrap(void) {
VerbMeanings::declare_sm(NewVerbs::verb_means_SMF, I"verb-means", 3);
SpecialMeanings::declare(NewVerbs::verb_means_SMF, I"verb-means", 3);
VerbMeanings::declare_sm(NewVerbs::new_verb_SMF, I"new-verb", 2);
VerbMeanings::declare_sm(Plurals::plural_SMF, I"new-plural", 2);
VerbMeanings::declare_sm(Activities::new_activity_SMF, I"new-activity", 2);
SpecialMeanings::declare(NewVerbs::new_verb_SMF, I"new-verb", 2);
SpecialMeanings::declare(Plurals::plural_SMF, I"new-plural", 2);
SpecialMeanings::declare(Activities::new_activity_SMF, I"new-activity", 2);
#ifdef IF_MODULE
VerbMeanings::declare_sm(PL::Actions::new_action_SMF, I"new-action", 2);
SpecialMeanings::declare(PL::Actions::new_action_SMF, I"new-action", 2);
#endif
VerbMeanings::declare_sm(NewVerbs::new_adjective_SMF, I"new-adjective", 2);
VerbMeanings::declare_sm(Assertions::Property::either_SMF, I"new-either-or", 2);
VerbMeanings::declare_sm(Tables::Defining::defined_by_SMF, I"defined-by-table", 2);
VerbMeanings::declare_sm(Rules::Placement::listed_in_SMF, I"rule-listed-in", 2);
SpecialMeanings::declare(NewVerbs::new_adjective_SMF, I"new-adjective", 2);
SpecialMeanings::declare(Assertions::Property::either_SMF, I"new-either-or", 2);
SpecialMeanings::declare(Tables::Defining::defined_by_SMF, I"defined-by-table", 2);
SpecialMeanings::declare(Rules::Placement::listed_in_SMF, I"rule-listed-in", 2);
#ifdef MULTIMEDIA_MODULE
VerbMeanings::declare_sm(PL::Figures::new_figure_SMF, I"new-figure", 2);
VerbMeanings::declare_sm(PL::Sounds::new_sound_SMF, I"new-sound", 2);
VerbMeanings::declare_sm(PL::Files::new_file_SMF, I"new-file", 2);
SpecialMeanings::declare(PL::Figures::new_figure_SMF, I"new-figure", 2);
SpecialMeanings::declare(PL::Sounds::new_sound_SMF, I"new-sound", 2);
SpecialMeanings::declare(PL::Files::new_file_SMF, I"new-file", 2);
#endif
#ifdef IF_MODULE
VerbMeanings::declare_sm(PL::Bibliographic::episode_SMF, I"episode", 2);
SpecialMeanings::declare(PL::Bibliographic::episode_SMF, I"episode", 2);
#endif
VerbMeanings::declare_sm(Relations::new_relation_SMF, I"new-relation", 1);
VerbMeanings::declare_sm(Assertions::Property::optional_either_SMF, I"can-be", 2);
VerbMeanings::declare_sm(LiteralPatterns::specifies_SMF, I"specifies-notation", 4);
VerbMeanings::declare_sm(Rules::Placement::substitutes_for_SMF, I"rule-substitutes-for", 1);
SpecialMeanings::declare(Relations::new_relation_SMF, I"new-relation", 1);
SpecialMeanings::declare(Assertions::Property::optional_either_SMF, I"can-be", 2);
SpecialMeanings::declare(LiteralPatterns::specifies_SMF, I"specifies-notation", 4);
SpecialMeanings::declare(Rules::Placement::substitutes_for_SMF, I"rule-substitutes-for", 1);
#ifdef IF_MODULE
VerbMeanings::declare_sm(PL::Scenes::begins_when_SMF, I"scene-begins-when", 1);
VerbMeanings::declare_sm(PL::Scenes::ends_when_SMF, I"scene-ends-when", 1);
SpecialMeanings::declare(PL::Scenes::begins_when_SMF, I"scene-begins-when", 1);
SpecialMeanings::declare(PL::Scenes::ends_when_SMF, I"scene-ends-when", 1);
#endif
VerbMeanings::declare_sm(Rules::Placement::does_nothing_SMF, I"rule-does-nothing", 1);
VerbMeanings::declare_sm(Rules::Placement::does_nothing_if_SMF, I"rule-does-nothing-if", 1);
VerbMeanings::declare_sm(Rules::Placement::does_nothing_unless_SMF, I"rule-does-nothing-unless", 1);
VerbMeanings::declare_sm(Sentences::VPs::translates_into_unicode_as_SMF, I"translates-into-unicode", 1);
VerbMeanings::declare_sm(Sentences::VPs::translates_into_I6_as_SMF, I"translates-into-i6", 1);
VerbMeanings::declare_sm(Sentences::VPs::translates_into_language_as_SMF, I"translates-into-language", 1);
VerbMeanings::declare_sm(UseOptions::use_translates_as_SMF, I"use-translates", 4);
SpecialMeanings::declare(Rules::Placement::does_nothing_SMF, I"rule-does-nothing", 1);
SpecialMeanings::declare(Rules::Placement::does_nothing_if_SMF, I"rule-does-nothing-if", 1);
SpecialMeanings::declare(Rules::Placement::does_nothing_unless_SMF, I"rule-does-nothing-unless", 1);
SpecialMeanings::declare(Sentences::VPs::translates_into_unicode_as_SMF, I"translates-into-unicode", 1);
SpecialMeanings::declare(Sentences::VPs::translates_into_I6_as_SMF, I"translates-into-i6", 1);
SpecialMeanings::declare(Sentences::VPs::translates_into_language_as_SMF, I"translates-into-language", 1);
SpecialMeanings::declare(UseOptions::use_translates_as_SMF, I"use-translates", 4);
#ifdef IF_MODULE
VerbMeanings::declare_sm(PL::Parsing::TestScripts::test_with_SMF, I"test-with", 1);
VerbMeanings::declare_sm(PL::Parsing::understand_as_SMF, I"understand-as", 1);
SpecialMeanings::declare(PL::Parsing::TestScripts::test_with_SMF, I"test-with", 1);
SpecialMeanings::declare(PL::Parsing::understand_as_SMF, I"understand-as", 1);
#endif
VerbMeanings::declare_sm(UseOptions::use_SMF, I"use", 4);
SpecialMeanings::declare(UseOptions::use_SMF, I"use", 4);
#ifdef IF_MODULE
VerbMeanings::declare_sm(PL::Bibliographic::Release::release_along_with_SMF,I"release-along-with", 4);
VerbMeanings::declare_sm(PL::EPSMap::index_map_with_SMF, I"index-map-with", 4);
SpecialMeanings::declare(PL::Bibliographic::Release::release_along_with_SMF,I"release-along-with", 4);
SpecialMeanings::declare(PL::EPSMap::index_map_with_SMF, I"index-map-with", 4);
#endif
VerbMeanings::declare_sm(Sentences::VPs::include_in_SMF, I"include-in", 4);
VerbMeanings::declare_sm(Sentences::VPs::omit_from_SMF, I"omit-from", 4);
SpecialMeanings::declare(Sentences::VPs::include_in_SMF, I"include-in", 4);
SpecialMeanings::declare(Sentences::VPs::omit_from_SMF, I"omit-from", 4);
word_assemblage infinitive = PreformUtilities::wording(<bootstrap-verb>, 0);
verb_conjugation *vc = Conjugation::conjugate(infinitive, DefaultLanguage::get(NULL));
@ -679,7 +682,7 @@ void NewVerbs::bootstrap(void) {
vc->vc_conjugates = vi;
VerbUsages::register_all_usages_of_verb(vi, FALSE, 3, NULL);
Verbs::add_form(vi, NULL, NULL, VerbMeanings::sm_by_name(L"verb-means", NULL), SVO_FS_BIT);
Verbs::add_form(vi, NULL, NULL, SpecialMeanings::find(L"verb-means"), SVO_FS_BIT);
}
@h Runtime conjugation.

View file

@ -112,14 +112,14 @@ void Sentences::VPs::visit(parse_node *p) {
@<Check that this is allowed, if it occurs in the Options file@> =
if (Wordings::within(Node::get_text(p), options_file_wording)) {
special_meaning_fn soa = VerbMeanings::sm_of_verb_node(p->down);
special_meaning_holder *sm = Node::get_special_meaning(p->down);
int err = TRUE;
if ((soa == UseOptions::use_SMF) ||
(soa == PL::Parsing::TestScripts::test_with_SMF) ||
(soa == Sentences::VPs::include_in_SMF) ||
(soa == Sentences::VPs::omit_from_SMF)) err = FALSE;
if ((SpecialMeanings::is(sm, UseOptions::use_SMF)) ||
(SpecialMeanings::is(sm, PL::Parsing::TestScripts::test_with_SMF)) ||
(SpecialMeanings::is(sm, Sentences::VPs::include_in_SMF)) ||
(SpecialMeanings::is(sm, Sentences::VPs::omit_from_SMF))) err = FALSE;
#ifdef IF_MODULE
if (soa == PL::Bibliographic::Release::release_along_with_SMF) err = FALSE;
if (SpecialMeanings::is(sm, PL::Bibliographic::Release::release_along_with_SMF)) err = FALSE;
#endif
if (err)
StandardProblems::unlocated_problem(Task::syntax_tree(), _p_(BelievedImpossible), /* not usefully testable, anyway */

View file

@ -545,9 +545,7 @@ void Assertions::Traverse::special_meaning(parse_node *pn) {
void Assertions::Traverse::try_special_meaning(int task, parse_node *pn) {
if (Annotations::read_int(pn, verb_id_ANNOT) == SPECIAL_MEANING_VB) {
special_meaning_fn soa = VerbMeanings::sm_of_verb_node(pn);
if (soa) {
(*soa)(task, pn, NULL);
}
special_meaning_holder *sm = Node::get_special_meaning(pn);
if (sm) SpecialMeanings::call(sm, task, pn, NULL);
}
}

View file

@ -122,8 +122,8 @@ int PL::Bibliographic::Release::release_along_with_SMF(int task, parse_node *V,
@ =
void PL::Bibliographic::Release::visit_to_quote(OUTPUT_STREAM, parse_node *p) {
if ((Node::get_type(p) == SENTENCE_NT) && (p->down)) {
special_meaning_fn soa = VerbMeanings::sm_of_verb_node(p->down);
if (soa == PL::Bibliographic::Release::release_along_with_SMF) {
special_meaning_holder *sm = Node::get_special_meaning(p->down);
if (SpecialMeanings::is(sm, PL::Bibliographic::Release::release_along_with_SMF)) {
TEMPORARY_TEXT(TEMP)
Index::link_to(TEMP, Wordings::first_wn(Node::get_text(p)), TRUE);
WRITE("status instruction ||");

View file

@ -117,7 +117,7 @@ void Diagrams::log_node(OUTPUT_STREAM, parse_node *pn) {
WRITE(" {existential}");
if (Node::get_special_meaning(pn))
WRITE(" {special meaning: %S}",
Node::get_special_meaning(pn)->sm_name);
SpecialMeanings::get_name(Node::get_special_meaning(pn)));
if (Annotations::read_int(pn, verbal_certainty_ANNOT) != UNKNOWN_CE) {
WRITE(" {certainty:");
Certainty::write(OUT, Annotations::read_int(pn, verbal_certainty_ANNOT));

View file

@ -0,0 +1,122 @@
[SpecialMeanings::] Special Meanings.
To abstract non-standard, perhaps non-SVO, meanings of a verb.
@h Special meaning functions.
Regular meanings of verbs are represented by |VERB_MEANING_LINGUISTICS_TYPE|
pointers -- see //Verb Meanings//. In Inform, those are binary predicates.
They always take two terms.
However, Inform sometimes wants sentences which are written in non-standard
ways, with anything from one to three terms, and which don't correspond to
any of the relations. (For example, "Include Locksmith by Emily Short".)
These are represented by functions to perform the necessary business; the
type |special_meaning_fn| gives the type of such a function.
=
typedef int (*special_meaning_fn)(int, parse_node *, wording *);
@ This is a convenient generic special-meaning function; it simply accumulates
non-empty SPs and OPs as unparsed noun phrases and accepts them.
The first parameter is the task to be performed on the verb node pointed
to by the second. The task number must belong to the |*_SMFT| enumeration,
and the only task used by the Linguistics module is |ACCEPT_SMFT|. This should
look at the array of wordings and either accept this as a valid usage, build
a subtree from the verb node, and return |TRUE|, or else return |FALSE| to
say that the usage is invalid: see Verb Phrases for more.
The user is then free to define further SMF tasks, and Inform does so.
@e ACCEPT_SMFT from 0
=
int SpecialMeanings::generic_smf(int task, parse_node *V, wording *NPs) {
switch (task) {
case ACCEPT_SMFT: {
parse_node *A = V;
for (int i=0; i<3; i++) {
wording W = (NPs)?(NPs[i]):EMPTY_WORDING;
if (Wordings::nonempty(W)) {
<np-unparsed>(W);
parse_node *p = <<rp>>;
A->next = p; A = p;
}
}
return TRUE;
}
}
return FALSE;
}
@h Special meaning holders.
Although a SM is basically encapsulated by a function, it's convenient to
have some metadata with it too:
@ =
typedef struct special_meaning_holder {
int (*sm_func)(int, parse_node *, wording *); /* (compiler doesn't like typedef here) */
struct text_stream *sm_name;
int metadata_N;
CLASS_DEFINITION
} special_meaning_holder;
@ =
special_meaning_holder *SpecialMeanings::declare(special_meaning_fn func,
text_stream *name, int p) {
special_meaning_holder *smh = CREATE(special_meaning_holder);
if (func == NULL) func = SpecialMeanings::generic_smf;
smh->sm_func = func;
smh->sm_name = Str::duplicate(name);
smh->metadata_N = p;
return smh;
}
@ SMHs can be found by name:
=
verb_meaning SpecialMeanings::find(wchar_t *name) {
special_meaning_holder *smh;
LOOP_OVER(smh, special_meaning_holder)
if (Str::eq_wide_string(smh->sm_name, name))
return VerbMeanings::special(smh);
return VerbMeanings::meaninglessness();
}
special_meaning_holder *SpecialMeanings::find_from_wording(wording W) {
TEMPORARY_TEXT(name)
WRITE_TO(name, "%W", W);
special_meaning_holder *smh;
LOOP_OVER(smh, special_meaning_holder)
if (Str::eq_insensitive(smh->sm_name, name))
break;
DISCARD_TEXT(name)
return smh;
}
@ Metadata access:
=
int SpecialMeanings::get_metadata_N(special_meaning_holder *smh) {
if (smh == NULL) return 0;
return smh->metadata_N;
}
text_stream *SpecialMeanings::get_name(special_meaning_holder *smh) {
if (smh == NULL) return NULL;
return smh->sm_name;
}
int SpecialMeanings::is(special_meaning_holder *smh, special_meaning_fn func) {
if (smh == NULL) return FALSE;
if (smh->sm_func == func) return TRUE;
return FALSE;
}
@ Calling:
=
int SpecialMeanings::call(special_meaning_holder *smh, int task, parse_node *V,
wording *NPs) {
return (*(smh->sm_func))(task, V, NPs);
}

View file

@ -29,21 +29,6 @@ VERB_MEANING_LINGUISTICS_TYPE *VerbMeanings::reverse_VMT(VERB_MEANING_LINGUISTIC
#endif
}
@ We will, however, allow for a little more complication, in that the code
using this module can instead provide a function of the following type.
The first parameter is the task to be performed on the verb node pointed
to by the second. The task number must belong to the |*_SMFT| enumeration,
and the only task used by the Linguistics module is |ACCEPT_SMFT|. This should
look at the array of wordings and either accept this as a valid usage, build
a subtree from the verb node, and return |TRUE|, or else return |FALSE| to
say that the usage is invalid: see Verb Phrases for more.
@e ACCEPT_SMFT from 0
=
typedef int (*special_meaning_fn)(int, parse_node *, wording *);
@h How this module stores verb meanings.
We can now define an object to wrap up this abstracted idea of verb meaning:
@ -133,7 +118,7 @@ most one regular sense.
verb_meaning *VerbMeanings::first_unspecial_meaning_of_verb_form(verb_form *vf) {
if (vf)
for (verb_sense *vs = vf->list_of_senses; vs; vs = vs->next_sense)
if (VerbMeanings::get_special_meaning_fn(&(vs->vm)) == NULL)
if (VerbMeanings::get_special_meaning(&(vs->vm)) == NULL)
return &(vs->vm);
return NULL;
}
@ -179,7 +164,7 @@ a special meaning function, we have to provide a function to tell the user
whether to reverse what that function does.
=
special_meaning_holder *VerbMeanings::get_special_meaning_fn(verb_meaning *vm) {
special_meaning_holder *VerbMeanings::get_special_meaning(verb_meaning *vm) {
vm = VerbMeanings::follow_indirection(vm);
if (vm == NULL) return NULL;
return vm->special_meaning;
@ -208,37 +193,3 @@ void VerbMeanings::log(OUTPUT_STREAM, void *vvm) {
} else if (vm->special_meaning) WRITE("(special)");
else WRITE("(meaningless)");
}
@h Special, second go.
@ =
typedef struct special_meaning_holder {
int (*sm_func)(int, parse_node *, wording *); /* (for tangling reasons, can't use typedef here) */
struct text_stream *sm_name;
int verb_priority;
CLASS_DEFINITION
} special_meaning_holder;
special_meaning_holder *VerbMeanings::declare_sm(int (*func)(int, parse_node *, wording *), text_stream *name, int p) {
special_meaning_holder *smh = CREATE(special_meaning_holder);
smh->sm_func = func;
smh->sm_name = Str::duplicate(name);
smh->verb_priority = p;
return smh;
}
verb_meaning VerbMeanings::sm_by_name(wchar_t *name, int *p) {
special_meaning_holder *smh;
LOOP_OVER(smh, special_meaning_holder)
if (Str::eq_wide_string(smh->sm_name, name)) {
if (p) *p = smh->verb_priority;
return VerbMeanings::special(smh);
}
return VerbMeanings::meaninglessness();
}
special_meaning_fn VerbMeanings::sm_of_verb_node(parse_node *pn) {
special_meaning_holder *sm = Node::get_special_meaning(pn);
if (sm) return sm->sm_func;
return NULL;
}

View file

@ -280,11 +280,12 @@ so we will match "Test me with flash cards" but not "Peter tests me with
flash cards".
@<Reject a match with verb in the wrong position@> =
if (vf->form_structures & (VO_FS_BIT + VOO_FS_BIT)) {
if (pos > Wordings::first_wn(W)) break;
} else {
if ((vf->form_structures & (VO_FS_BIT + VOO_FS_BIT)) == 0) {
if (pos == Wordings::first_wn(W)) break;
}
}
if ((vf->form_structures & (SVO_FS_BIT + SVOO_FS_BIT)) == 0) {
if (pos > Wordings::first_wn(W)) break;
}
@ So now we know that the verb definitely appears. We form |ISW| as the
wording for the subject phrase and |IOW| the object phrase. Adverbs of
@ -478,7 +479,7 @@ parse_node *VerbPhrases::accept(verb_form *vf, parse_node *VP_PN, wording *NPs)
verb_meaning *vm = NULL;
for (verb_sense *vs = (vf)?vf->list_of_senses:NULL; vs; vs = vs->next_sense) {
vm = &(vs->vm);
special_meaning_holder *sm = VerbMeanings::get_special_meaning_fn(vm);
special_meaning_holder *sm = VerbMeanings::get_special_meaning(vm);
if (sm) {
wording SNPs[MAX_NPS_IN_VP];
if (VerbMeanings::get_reversal_status_of_smf(vm)) {
@ -486,13 +487,15 @@ parse_node *VerbPhrases::accept(verb_form *vf, parse_node *VP_PN, wording *NPs)
} else {
SNPs[0] = NPs[0]; SNPs[1] = NPs[1]; SNPs[2] = NPs[2];
}
if ((*(sm->sm_func))(ACCEPT_SMFT, VP_PN, SNPs)) {
if (SpecialMeanings::call(sm, ACCEPT_SMFT, VP_PN, SNPs)) {
Node::set_special_meaning(VP_PN, sm);
return VP_PN;
}
}
}
if ((VerbMeanings::get_regular_meaning(vm)) &&
(Wordings::nonempty(NPs[0])) &&
(Wordings::nonempty(NPs[1])) &&
(Wordings::empty(NPs[2])) &&
(VerbPhrases::default_verb(ACCEPT_SMFT, VP_PN, vm, NPs))) return VP_PN;
return NULL;

View file

@ -25,6 +25,7 @@ Chapter 2: NP Categories
Chapter 3: VP Categories
Verbs
Verb Meanings
Special Meanings
Verb Usages
Prepositions
Adverbs of Certainty

View file

@ -0,0 +1,20 @@
(1) greet beth
SENTENCE_NT'greet beth'
VERB_NT'greet' {verb 'greet' 1p/2p s/p act IS_TENSE +ve + 3p p act IS_TENSE +ve} {special meaning: greets}
PROPER_NOUN_NT'beth' {proper nom/acc f s}
(2) combine the ming vase with the table
SENTENCE_NT'combine the ming vase with the table'
VERB_NT'combine' {verb 'combine' 1p/2p s/p act IS_TENSE +ve + 3p p act IS_TENSE +ve} {special meaning: combines}
COMMON_NOUN_NT'the table' {common nom/acc n s}
COMMON_NOUN_NT'the ming vase' {common nom/acc n s}
(3) combine up the ming vase with the table
SENTENCE_NT'combine up the ming vase with the table'
VERB_NT'combine up' {verb 'combine' 1p/2p s/p act IS_TENSE +ve + 3p p act IS_TENSE +ve} {special meaning: combinesup}
COMMON_NOUN_NT'the table' {common nom/acc n s}
COMMON_NOUN_NT'the ming vase' {common nom/acc n s}

View file

@ -1,16 +1,3 @@
IS = relationship.
HAS = relationship.
CARRIES = relationship.
KNOWS = relationship.
be = verb meaning IS with priority 2.
have = verb meaning HAS with priority 1.
carry = verb meaning CARRIES with priority 3.
know = verb meaning KNOWS with priority 3.
be + on = preposition meaning CARRIES-reversed.
be + under = preposition meaning CARRIES.
Anna = feminine proper noun.
Beth = feminine proper noun.
Charles = masculine proper noun.
@ -21,3 +8,28 @@ person = masculine common noun.
sailor = masculine common noun.
table = neuter common noun.
Ming vase = neuter common noun.
IS = relationship.
HAS = relationship.
CARRIES = relationship.
KNOWS = relationship.
COMBINES = special meaning.
COMBINESUP = special meaning.
GREETS = special meaning.
be = copular verb with priority 2.
have = verb with priority 1.
carry = verb with priority 3.
greet = verb with priority 3.
know = verb with priority 3.
combine = verb with priority 3.
-- be -- = IS.
-- have -- = HAS.
-- carry -- = CARRIES.
-- know -- = KNOWS.
-- be on -- = CARRIES-reversed.
-- be under -- = CARRIES.
combine -- with -- = COMBINES.
combine up -- with -- = COMBINESUP.
greet -- = GREETS.

View file

@ -131,6 +131,12 @@ fresh nodes:
= (undisplayed text from Figures/usingadverbs.txt)
@ We can also support imperative verbs, with "special meanings" which are
not necessarily relational, and do not always lead to |RELATIONSHIP_NT|
subtrees. See //Special Meanings//.
= (undisplayed text from Figures/imperatives.txt)
@ That shows the full range of what happens with verb nodes. Turning back
to noun phrases, we can have serial lists:

View file

@ -54,8 +54,8 @@ with the facilities offered by the //syntax// and //words// modules.
Typical lines in the vocabulary look like this:
= (text)
CARRIES = relationship.
be = verb meaning IS with priority 2.
be + on = preposition meaning CARRIES.
be = copular verb with priority 2.
-- be on -- = CARRIES-reversed.
Beth = feminine proper noun.
sailor = neuter common noun.
=
@ -63,11 +63,19 @@ And these are parsed by the following simple Preform grammar:
=
<vocabulary-line> ::=
... = relationship | ==> @<Create relationship@>;
... = verb meaning <meaning> with priority <cardinal-number> | ==> @<Create verb@>;
<existing-verb> + ... = preposition meaning <meaning> | ==> @<Create preposition@>;
... = <gender> common noun | ==> @<Create common noun@>;
... = <gender> proper noun ==> @<Create proper noun@>;
... = relationship | ==> @<Create relationship@>;
... = special meaning | ==> @<Create special meaning@>;
... = copular verb with priority <cardinal-number> | ==> @<Create copular verb@>;
... = verb with priority <cardinal-number> | ==> @<Create verb@>;
-- <existing-verb> -- = <meaning> | ==> @<Create SVO usage@>;
-- <existing-verb> ### -- = <meaning> | ==> @<Create SVPO usage@>;
<existing-verb> -- = <special-meaning> | ==> @<Create VO usage S@>;
-- <existing-verb> -- = <special-meaning> | ==> @<Create SVO usage S@>;
-- <existing-verb> ### -- = <special-meaning> | ==> @<Create SVPO usage S@>;
<existing-verb> -- ### -- = <special-meaning> | ==> @<Create VSPO usage S@>;
<existing-verb> ### -- ### -- = <special-meaning> | ==> @<Create VPSPO usage S@>;
... = <gender> common noun | ==> @<Create common noun@>;
... = <gender> proper noun ==> @<Create proper noun@>;
<gender> ::=
neuter | ==> NEUTER_GENDER
@ -80,6 +88,12 @@ And these are parsed by the following simple Preform grammar:
return FALSE;
}
<special-meaning> internal 1 {
*XP = SpecialMeanings::find_from_wording(W);
if (*XP) return TRUE;
return FALSE;
}
<existing-verb> internal {
verb *V;
LOOP_OVER(V, verb)
@ -92,23 +106,72 @@ And these are parsed by the following simple Preform grammar:
@<Create relationship@> =
Relating::new(FW[1]);
@<Create special meaning@> =
text_stream *N = Str::new();
WRITE_TO(N, "%W", FW[1]);
SpecialMeanings::declare(NULL, N, 0);
@<Create verb@> =
rel *RN = (rel *) RP[1];
verb_conjugation *vc =
Conjugation::conjugate(
WordAssemblages::from_wording(FW[1]), DefaultLanguage::get(NULL));
verb *vi = Verbs::new_verb(vc, (RN == R_equality)?TRUE:FALSE);
vc->vc_conjugates = vi;
VerbUsages::register_all_usages_of_verb(vi, FALSE, R[2], NULL);
Verbs::add_form(vi, NULL, NULL, VerbMeanings::regular(RN), SVO_FS_BIT);
verb *V = Verbs::new_verb(vc, FALSE);
vc->vc_conjugates = V;
VerbUsages::register_all_usages_of_verb(V, FALSE, R[1], NULL);
@<Create preposition@> =
word_assemblage wa = WordAssemblages::from_wording(FW[1]);
preposition *prep = Prepositions::make(wa, FALSE, NULL);
@<Create copular verb@> =
verb_conjugation *vc =
Conjugation::conjugate(
WordAssemblages::from_wording(FW[1]), DefaultLanguage::get(NULL));
verb *V = Verbs::new_verb(vc, TRUE);
vc->vc_conjugates = V;
VerbUsages::register_all_usages_of_verb(V, FALSE, R[1], NULL);
@<Create SVO usage@> =
verb *V = (verb *) RP[1];
rel *RN = (rel *) RP[2];
Verbs::add_form(V, NULL, NULL, VerbMeanings::regular(RN), SVO_FS_BIT);
@<Create SVPO usage@> =
verb *V = (verb *) RP[1];
rel *RN = (rel *) RP[2];
word_assemblage wa = WordAssemblages::from_wording(FW[1]);
preposition *prep = Prepositions::make(wa, FALSE, NULL);
Verbs::add_form(V, prep, NULL, VerbMeanings::regular(RN), SVO_FS_BIT);
@<Create VO usage S@> =
verb *V = (verb *) RP[1];
special_meaning_holder *SM = (special_meaning_holder *) RP[2];
Verbs::add_form(V, NULL, NULL, VerbMeanings::special(SM), VO_FS_BIT);
@<Create SVO usage S@> =
verb *V = (verb *) RP[1];
special_meaning_holder *SM = (special_meaning_holder *) RP[2];
Verbs::add_form(V, NULL, NULL, VerbMeanings::special(SM), SVO_FS_BIT);
@<Create SVPO usage S@> =
verb *V = (verb *) RP[1];
special_meaning_holder *SM = (special_meaning_holder *) RP[2];
word_assemblage wa = WordAssemblages::from_wording(FW[1]);
preposition *prep = Prepositions::make(wa, FALSE, NULL);
Verbs::add_form(V, prep, NULL, VerbMeanings::special(SM), SVO_FS_BIT);
@<Create VSPO usage S@> =
verb *V = (verb *) RP[1];
special_meaning_holder *SM = (special_meaning_holder *) RP[2];
word_assemblage wa = WordAssemblages::from_wording(FW[1]);
preposition *prep = Prepositions::make(wa, FALSE, NULL);
Verbs::add_form(V, NULL, prep, VerbMeanings::special(SM), VOO_FS_BIT);
@<Create VPSPO usage S@> =
verb *V = (verb *) RP[1];
special_meaning_holder *SM = (special_meaning_holder *) RP[2];
word_assemblage wa1 = WordAssemblages::from_wording(FW[1]);
word_assemblage wa2 = WordAssemblages::from_wording(FW[2]);
preposition *prep1 = Prepositions::make(wa1, FALSE, NULL);
preposition *prep2 = Prepositions::make(wa2, FALSE, NULL);
Verbs::add_form(V, prep1, prep2, VerbMeanings::special(SM), VOO_FS_BIT);
@<Create common noun@> =
Nouns::new_common_noun(FW[1], R[1], ADD_TO_LEXICON_NTOPT + WITH_PLURAL_FORMS_NTOPT,
NOUN_MC, NULL_GENERAL_POINTER, DefaultLanguage::get(NULL));

View file

@ -58,7 +58,8 @@ int main(int argc, char **argv) {
return 0;
}
@
@ |-trace| turns all verb phrase tracing on; |-viability| just shows the
viability map for each sentence.
@d TRACING_LINGUISTICS_CALLBACK Main::trace_parsing

View file

@ -79,12 +79,10 @@ rel *Relating::new(wording W) {
rel *Relating::find(wording W) {
TEMPORARY_TEXT(name)
WRITE_TO(name, "%W", W);
rel *T, *R = NULL;
rel *T;
LOOP_OVER(T, rel)
if (Str::eq_insensitive(T->debugging_log_name, name))
R = T;
if (R == NULL)
WRITE_TO(STDERR, "unable to find relation named %S\n", name);
break;
DISCARD_TEXT(name)
return R;
return T;
}

View file

@ -0,0 +1,20 @@
(1) greet beth
SENTENCE_NT'greet beth'
VERB_NT'greet' {verb 'greet' 1p/2p s/p act IS_TENSE +ve + 3p p act IS_TENSE +ve} {special meaning: greets}
PROPER_NOUN_NT'beth' {proper nom/acc f s}
(2) combine the ming vase with the table
SENTENCE_NT'combine the ming vase with the table'
VERB_NT'combine' {verb 'combine' 1p/2p s/p act IS_TENSE +ve + 3p p act IS_TENSE +ve} {special meaning: combines}
COMMON_NOUN_NT'the table' {common nom/acc n s}
COMMON_NOUN_NT'the ming vase' {common nom/acc n s}
(3) combine up the ming vase with the table
SENTENCE_NT'combine up the ming vase with the table'
VERB_NT'combine up' {verb 'combine' 1p/2p s/p act IS_TENSE +ve + 3p p act IS_TENSE +ve} {special meaning: combinesup}
COMMON_NOUN_NT'the table' {common nom/acc n s}
COMMON_NOUN_NT'the ming vase' {common nom/acc n s}

View file

@ -0,0 +1,4 @@
Greet Beth.
Combine the Ming vase with the table.
Combine up the Ming vase with the table.

View file

@ -1,2 +1,3 @@
Beth is a sailor.
A Ming vase is carried by Anna.

View file

@ -1,3 +1,5 @@
[Pronouns test]
He knows her.
She knows him.

View file

@ -1,16 +1,3 @@
IS = relationship.
HAS = relationship.
CARRIES = relationship.
KNOWS = relationship.
be = verb meaning IS with priority 2.
have = verb meaning HAS with priority 1.
carry = verb meaning CARRIES with priority 3.
know = verb meaning KNOWS with priority 3.
be + on = preposition meaning CARRIES-reversed.
be + under = preposition meaning CARRIES.
Anna = feminine proper noun.
Beth = feminine proper noun.
Charles = masculine proper noun.
@ -21,3 +8,28 @@ person = masculine common noun.
sailor = masculine common noun.
table = neuter common noun.
Ming vase = neuter common noun.
IS = relationship.
HAS = relationship.
CARRIES = relationship.
KNOWS = relationship.
COMBINES = special meaning.
COMBINESUP = special meaning.
GREETS = special meaning.
be = copular verb with priority 2.
have = verb with priority 1.
carry = verb with priority 3.
greet = verb with priority 3.
know = verb with priority 3.
combine = verb with priority 3.
-- be -- = IS.
-- have -- = HAS.
-- carry -- = CARRIES.
-- know -- = KNOWS.
-- be on -- = CARRIES-reversed.
-- be under -- = CARRIES.
combine -- with -- = COMBINES.
combine up -- with -- = COMBINESUP.
greet -- = GREETS.