1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-07-08 18:14:21 +03:00
inform7/docs/linguistics-module/5-vm.html
2019-04-22 15:42:10 +01:00

243 lines
28 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>5/dgr</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-gb">
<link href="inweb.css" rel="stylesheet" rev="stylesheet" type="text/css">
</head>
<body>
<!--Weave of '5/vm' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">linguistics</a></li><li><a href="index.html#5">Chapter 5: Diagramming Sentences</a></li><li><b>Verb Meanings</b></li></ul><p class="purpose">To abstract the meaning of a verb.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Abstracting meaning</a></li></ul><hr class="tocbar">
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Abstracting meaning. </b>Recall that each verb can have multiple forms: for example, "to go"
might occur in three forms &mdash; "go" alone, "go to", or "go from", which
are distinguished in English by the use of prepositions such as "to" and
"from". Each of these three verb forms has its own meaning.
</p>
<p class="inwebparagraph">However, we can also use indirection to tie one meaning to another. This is
used, for example, to specify the meaning of "A is liking B". We regard
this as "to be" plus copular preposition "liking"; or sometimes the verb
is invisible, as in "someone liking B", which implicitly means "someone
who is liking B". The meaning of "to be" plus "liking" is set by
indirection so that it is always the same as "likes". Similarly, the
meaning of "liked by" is set to be the same as "likes", but reversed
(in that its subject and object must be switched). This ensures that
if the meaning of "likes" changes, its associated usages "is liking"
and "is liked by" automatically change with it.
</p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. </b>The "meaning" is what state or change a verb describes. In Inform, some
verbs used in assertion sentences have special meanings, instructing the
compiler to do something: for example,
</p>
<blockquote>
<p>To disavow is a verb.</p>
</blockquote>
<p class="inwebparagraph">But most sentences set the state of some relation:
</p>
<blockquote>
<p>The bag is on the table.</p>
</blockquote>
<p class="inwebparagraph">Our abstraction stays close to that. We're going to assume that most
verbs have a regular meaning which can be represented in a piece of
data (of type <code class="display"><span class="extract">VERB_MEANING_TYPE</span></code>, which for Inform 7 means a binary
predicate), while a few have special meanings which can only be handled
ad-hoc by a function. Here's the type for such a function:
</p>
<pre class="display">
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">int</span><span class="plain"> (*</span><span class="identifier">special_meaning_fn</span><span class="plain">)(</span><span class="reserved">int</span><span class="plain">, </span><span class="identifier">parse_node</span><span class="plain"> *, </span><span class="identifier">wording</span><span class="plain"> *);</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. </b>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 following enumeration,
and the only task used by the Linguistics module is <code class="display"><span class="extract">ACCEPT_SMFT</span></code>. 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 <code class="display"><span class="extract">TRUE</span></code>, or else return <code class="display"><span class="extract">FALSE</span></code> to
say that the usage is invalid: see Verb Phrases for more.
</p>
<pre class="definitions">
<span class="definitionkeyword">enum</span> <span class="constant">ACCEPT_SMFT</span><span class="definitionkeyword"> from </span><span class="constant">0</span>
</pre>
<pre class="display">
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">verb_meaning</span><span class="plain"> {</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">reversed</span><span class="plain">;</span>
<span class="identifier">VERB_MEANING_TYPE</span><span class="plain"> *</span><span class="identifier">regular_meaning</span><span class="plain">; </span> <span class="comment">in I7, this will be a binary predicate</span>
<span class="reserved">int</span><span class="plain"> (*</span><span class="identifier">special_meaning</span><span class="plain">)(</span><span class="reserved">int</span><span class="plain">, </span><span class="identifier">parse_node</span><span class="plain"> *, </span><span class="identifier">wording</span><span class="plain"> *); </span> <span class="comment">(for tangling reasons, can't use typedef here)</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">verb_identity</span><span class="plain"> *</span><span class="identifier">take_meaning_from</span><span class="plain">; </span> <span class="comment">"to like", in the example above</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">where_assigned</span><span class="plain">; </span> <span class="comment">at which sentence this is assigned to a form</span>
<span class="plain">} </span><span class="reserved">verb_meaning</span><span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The structure verb_meaning is private to this section.</p>
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. </b>Here's how the indirection trick is done: if <code class="display"><span class="extract">vm</span></code> takes meaning from,
say, "to like", then we replace it with the meaning of "likes" plus no
preposition
</p>
<pre class="display">
<span class="reserved">verb_meaning</span><span class="plain"> *</span><span class="functiontext">VerbMeanings::indirect_meaning</span><span class="plain">(</span><span class="reserved">verb_meaning</span><span class="plain"> *</span><span class="identifier">vm</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">vm</span><span class="plain">) &amp;&amp; (</span><span class="identifier">vm</span><span class="plain">-</span><span class="element">&gt;take_meaning_from</span><span class="plain">)) {</span>
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Verbs::regular_meaning</span><span class="plain">(</span><span class="identifier">vm</span><span class="plain">-</span><span class="element">&gt;take_meaning_from</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">vm</span><span class="plain">;</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function VerbMeanings::indirect_meaning is used in <a href="#SP5">&#167;5</a>.</p>
<p class="inwebparagraph"><a id="SP5"></a><b>&#167;5. </b>All VMs begin as meaningless, which indicates (e.g.) that no meaning
has been specified.
</p>
<pre class="display">
<span class="reserved">verb_meaning</span><span class="plain"> </span><span class="functiontext">VerbMeanings::meaninglessness</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="reserved">verb_meaning</span><span class="plain"> </span><span class="identifier">vm</span><span class="plain">;</span>
<span class="identifier">vm</span><span class="element">.regular_meaning</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">vm</span><span class="element">.special_meaning</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">vm</span><span class="element">.reversed</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
<span class="identifier">vm</span><span class="element">.take_meaning_from</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">vm</span><span class="element">.where_assigned</span><span class="plain"> = </span><span class="identifier">current_sentence</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">vm</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">VerbMeanings::is_meaningless</span><span class="plain">(</span><span class="reserved">verb_meaning</span><span class="plain"> *</span><span class="identifier">vm</span><span class="plain">) {</span>
<span class="identifier">vm</span><span class="plain"> = </span><span class="functiontext">VerbMeanings::indirect_meaning</span><span class="plain">(</span><span class="identifier">vm</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">vm</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">vm</span><span class="plain">-</span><span class="element">&gt;regular_meaning</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) &amp;&amp; (</span><span class="identifier">vm</span><span class="plain">-</span><span class="element">&gt;special_meaning</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">verb_meaning</span><span class="plain"> </span><span class="functiontext">VerbMeanings::new</span><span class="plain">(</span><span class="identifier">VERB_MEANING_TYPE</span><span class="plain"> *</span><span class="identifier">rel</span><span class="plain">, </span><span class="identifier">special_meaning_fn</span><span class="plain"> </span><span class="identifier">soa</span><span class="plain">) {</span>
<span class="reserved">verb_meaning</span><span class="plain"> </span><span class="identifier">vm</span><span class="plain"> = </span><span class="functiontext">VerbMeanings::meaninglessness</span><span class="plain">();</span>
<span class="identifier">vm</span><span class="element">.regular_meaning</span><span class="plain"> = </span><span class="identifier">rel</span><span class="plain">;</span>
<span class="identifier">vm</span><span class="element">.special_meaning</span><span class="plain"> = </span><span class="identifier">soa</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">vm</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">verb_meaning</span><span class="plain"> </span><span class="functiontext">VerbMeanings::special</span><span class="plain">(</span><span class="identifier">special_meaning_fn</span><span class="plain"> </span><span class="identifier">soa</span><span class="plain">) {</span>
<span class="reserved">verb_meaning</span><span class="plain"> </span><span class="identifier">vm</span><span class="plain"> = </span><span class="functiontext">VerbMeanings::meaninglessness</span><span class="plain">();</span>
<span class="identifier">vm</span><span class="element">.special_meaning</span><span class="plain"> = </span><span class="identifier">soa</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">vm</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">verb_meaning</span><span class="plain"> </span><span class="functiontext">VerbMeanings::new_indirection</span><span class="plain">(</span><span class="reserved">verb_identity</span><span class="plain"> *</span><span class="identifier">from</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">reversed</span><span class="plain">) {</span>
<span class="reserved">verb_meaning</span><span class="plain"> </span><span class="identifier">vm</span><span class="plain"> = </span><span class="functiontext">VerbMeanings::meaninglessness</span><span class="plain">();</span>
<span class="identifier">vm</span><span class="element">.reversed</span><span class="plain"> = </span><span class="identifier">reversed</span><span class="plain">;</span>
<span class="identifier">vm</span><span class="element">.take_meaning_from</span><span class="plain"> = </span><span class="identifier">from</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">vm</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="identifier">VERB_MEANING_TYPE</span><span class="plain"> *</span><span class="functiontext">VerbMeanings::get_relational_meaning</span><span class="plain">(</span><span class="reserved">verb_meaning</span><span class="plain"> *</span><span class="identifier">vm</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">vm</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">rev</span><span class="plain"> = </span><span class="identifier">vm</span><span class="plain">-</span><span class="element">&gt;reversed</span><span class="plain">;</span>
<span class="identifier">vm</span><span class="plain"> = </span><span class="functiontext">VerbMeanings::indirect_meaning</span><span class="plain">(</span><span class="identifier">vm</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">vm</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">VerbMeanings::is_meaningless</span><span class="plain">(</span><span class="identifier">vm</span><span class="plain">)) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">VERB_MEANING_TYPE</span><span class="plain"> *</span><span class="identifier">rel</span><span class="plain"> = </span><span class="identifier">vm</span><span class="plain">-</span><span class="element">&gt;regular_meaning</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">rel</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">vm</span><span class="plain">-</span><span class="element">&gt;reversed</span><span class="plain">) </span><span class="identifier">rev</span><span class="plain"> = (</span><span class="identifier">rev</span><span class="plain">)?</span><span class="identifier">FALSE</span><span class="plain">:</span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">rev</span><span class="plain">) </span><span class="identifier">rel</span><span class="plain"> = </span><span class="identifier">VERB_MEANING_REVERSAL</span><span class="plain">(</span><span class="identifier">rel</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">rel</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="identifier">special_meaning_fn</span><span class="plain"> </span><span class="functiontext">VerbMeanings::get_special_meaning</span><span class="plain">(</span><span class="reserved">verb_meaning</span><span class="plain"> *</span><span class="identifier">vm</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> *</span><span class="identifier">rev</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">vm</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="plain">*</span><span class="identifier">rev</span><span class="plain"> = </span><span class="identifier">vm</span><span class="plain">-</span><span class="element">&gt;reversed</span><span class="plain">;</span>
<span class="identifier">vm</span><span class="plain"> = </span><span class="functiontext">VerbMeanings::indirect_meaning</span><span class="plain">(</span><span class="identifier">vm</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">vm</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">vm</span><span class="plain">-</span><span class="element">&gt;reversed</span><span class="plain">) *</span><span class="identifier">rev</span><span class="plain"> = (*</span><span class="identifier">rev</span><span class="plain">)?</span><span class="identifier">FALSE</span><span class="plain">:</span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">vm</span><span class="plain">-</span><span class="element">&gt;special_meaning</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">VerbMeanings::add_special</span><span class="plain">(</span><span class="reserved">verb_meaning</span><span class="plain"> *</span><span class="identifier">vm</span><span class="plain">, </span><span class="identifier">special_meaning_fn</span><span class="plain"> </span><span class="identifier">spec</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">vm</span><span class="plain">) </span><span class="identifier">vm</span><span class="plain">-</span><span class="element">&gt;special_meaning</span><span class="plain"> = </span><span class="identifier">spec</span><span class="plain">;</span>
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"assigned special to null meaning"</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="identifier">parse_node</span><span class="plain"> *</span><span class="functiontext">VerbMeanings::get_where_assigned</span><span class="plain">(</span><span class="reserved">verb_meaning</span><span class="plain"> *</span><span class="identifier">vm</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">vm</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">vm</span><span class="plain">-</span><span class="element">&gt;where_assigned</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">VerbMeanings::set_where_assigned</span><span class="plain">(</span><span class="reserved">verb_meaning</span><span class="plain"> *</span><span class="identifier">vm</span><span class="plain">, </span><span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">pn</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">vm</span><span class="plain">) </span><span class="identifier">vm</span><span class="plain">-</span><span class="element">&gt;where_assigned</span><span class="plain"> = </span><span class="identifier">pn</span><span class="plain">;</span>
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"assigned location to null meaning"</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">VerbMeanings::log</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">void</span><span class="plain"> *</span><span class="identifier">vvm</span><span class="plain">) {</span>
<span class="reserved">verb_meaning</span><span class="plain"> *</span><span class="identifier">vm</span><span class="plain"> = (</span><span class="reserved">verb_meaning</span><span class="plain"> *) </span><span class="identifier">vvm</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">vm</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) { </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"&lt;none&gt;"</span><span class="plain">); </span><span class="reserved">return</span><span class="plain">; }</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">vm</span><span class="plain">-</span><span class="element">&gt;reversed</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"reversed-"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">vm</span><span class="plain">-</span><span class="element">&gt;take_meaning_from</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"&lt;$w&gt;="</span><span class="plain">, </span><span class="identifier">vm</span><span class="plain">-</span><span class="element">&gt;take_meaning_from</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">VerbMeanings::get_relational_meaning</span><span class="plain">(</span><span class="identifier">vm</span><span class="plain">)) {</span>
<span class="plain">#</span><span class="identifier">ifdef</span><span class="plain"> </span><span class="identifier">CORE_MODULE</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"(%S)"</span><span class="plain">, </span><span class="functiontext">VerbMeanings::get_relational_meaning</span><span class="plain">(</span><span class="identifier">vm</span><span class="plain">)-&gt;</span><span class="identifier">debugging_log_name</span><span class="plain">);</span>
<span class="plain">#</span><span class="reserved">else</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"(relation)"</span><span class="plain">);</span>
<span class="plain">#</span><span class="identifier">endif</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">vm</span><span class="plain">-</span><span class="element">&gt;special_meaning</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">VerbMeanings::get_relational_meaning</span><span class="plain">(</span><span class="identifier">vm</span><span class="plain">)) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"/"</span><span class="plain">);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"(special)"</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="functiontext">VerbMeanings::get_relational_meaning</span><span class="plain">(</span><span class="identifier">vm</span><span class="plain">) == </span><span class="identifier">NULL</span><span class="plain">) &amp;&amp; (</span><span class="identifier">vm</span><span class="plain">-</span><span class="element">&gt;special_meaning</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">))</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"(meaningless)"</span><span class="plain">);</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function VerbMeanings::meaninglessness is used in 4/vrb (<a href="4-vrb.html#SP4">&#167;4</a>).</p>
<p class="endnote">The function VerbMeanings::is_meaningless is used in 4/vrb (<a href="4-vrb.html#SP12">&#167;12</a>, <a href="4-vrb.html#SP12_2">&#167;12.2</a>), 4/vu (<a href="4-vu.html#SP15">&#167;15</a>), 4/prp (<a href="4-prp.html#SP9">&#167;9</a>, <a href="4-prp.html#SP10">&#167;10</a>), 5/vp (<a href="5-vp.html#SP7_3_1">&#167;7.3.1</a>).</p>
<p class="endnote">The function VerbMeanings::new appears nowhere else.</p>
<p class="endnote">The function VerbMeanings::special appears nowhere else.</p>
<p class="endnote">The function VerbMeanings::new_indirection is used in 4/vu (<a href="4-vu.html#SP7_1">&#167;7.1</a>, <a href="4-vu.html#SP8">&#167;8</a>).</p>
<p class="endnote">The function VerbMeanings::get_relational_meaning is used in 4/vu (<a href="4-vu.html#SP13">&#167;13</a>), 5/np (<a href="5-np.html#SP13_1">&#167;13.1</a>), 5/vp (<a href="5-vp.html#SP7_3_1_2_2">&#167;7.3.1.2.2</a>, <a href="5-vp.html#SP9_1">&#167;9.1</a>).</p>
<p class="endnote">The function VerbMeanings::get_special_meaning is used in 4/vrb (<a href="4-vrb.html#SP14">&#167;14</a>), 5/vp (<a href="5-vp.html#SP8">&#167;8</a>).</p>
<p class="endnote">The function VerbMeanings::add_special appears nowhere else.</p>
<p class="endnote">The function VerbMeanings::get_where_assigned appears nowhere else.</p>
<p class="endnote">The function VerbMeanings::set_where_assigned is used in 4/vrb (<a href="4-vrb.html#SP12">&#167;12</a>).</p>
<p class="endnote">The function VerbMeanings::log is used in 1/lm (<a href="1-lm.html#SP3_4">&#167;3.4</a>).</p>
<hr class="tocbar">
<ul class="toc"><li><a href="5-dgr.html">Back to 'Diagrams'</a></li><li><a href="5-np.html">Continue with 'Noun Phrases'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>