mirror of
https://github.com/ganelson/inform.git
synced 2024-07-08 18:14:21 +03:00
467 lines
54 KiB
HTML
467 lines
54 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
<html>
|
|
<head>
|
|
<title>3/nns</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 '4/vrb' generated by 7-->
|
|
<ul class="crumbs"><li><a href="../webs.html">★</a></li><li><a href="index.html">linguistics</a></li><li><a href="index.html#4">Chapter 4: Grammatical Categories II</a></li><li><b>Verbs</b></li></ul><p class="purpose">To record the identity and different structural forms of verbs.</p>
|
|
|
|
<ul class="toc"><li><a href="#SP1">§1. Definitions</a></li><li><a href="#SP3">§3. Verb Identities</a></li><li><a href="#SP5">§5. Package</a></li><li><a href="#SP6">§6. Operator Verbs</a></li><li><a href="#SP7">§7. Verb Forms</a></li><li><a href="#SP10">§10. Verb senses</a></li><li><a href="#SP11">§11. Creating forms and senses</a></li></ul><hr class="tocbar">
|
|
|
|
<p class="inwebparagraph"><a id="SP1"></a><b>§1. Definitions. </b></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP2"></a><b>§2. </b>One verbs above all is special to us, because of the unique role it plays
|
|
in natural language. This is the copular verb, so called because it has two
|
|
interacting subject phrases rather than a subject and an object: in English,
|
|
"to be". We store its identity in a global variable which is set equal
|
|
to the first-created verb marked as copular.
|
|
</p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">verb_identity</span><span class="plain"> *</span><span class="identifier">copular_verb</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP3"></a><b>§3. Verb Identities. </b>What is a verb? Are the verbs in "Peter is hungry" and "Jane will be in the
|
|
Dining Room" the same? How about in "Donald Trump lies on television" and
|
|
"My cat Donald lies on the television"? This isn't so easy to answer.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">For our purposes two usages of a verbs are "the same verb" if they ultimately
|
|
come from the same instance of the following structure; this essentially
|
|
defines a verb as a combination of its inflected forms with its possible
|
|
usages in a sentence.
|
|
</p>
|
|
|
|
|
|
<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_identity</span><span class="plain"> {</span>
|
|
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">verb_conjugation</span><span class="plain"> *</span><span class="identifier">conjugation</span><span class="plain">;</span>
|
|
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">verb_form</span><span class="plain"> *</span><span class="identifier">list_of_forms</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="reserved">struct</span><span class="plain"> </span><span class="identifier">package_request</span><span class="plain"> *</span><span class="identifier">verb_package</span><span class="plain">;</span>
|
|
<span class="plain">#</span><span class="identifier">endif</span>
|
|
<span class="identifier">MEMORY_MANAGEMENT</span>
|
|
<span class="plain">} </span><span class="reserved">verb_identity</span><span class="plain">;</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The structure verb_identity is accessed in 4/vu, 4/prp, 5/vp and here.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP4"></a><b>§4. </b>Note that the first verb submitted with the copular flag set is considered
|
|
to be the definitive copular verb.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">Note also that every verb always has a bare form, where no prepositions are
|
|
combined with it. This is (initially) meaningless, but it always exists.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">Finally, note that the conjugation can be null. This is used only for
|
|
what we'll call "operator verbs", where a mathematical operator is used
|
|
instead of a word: for example, the <code class="display"><span class="extract"><=</span></code> sign is such a verb in Inform.
|
|
</p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">verb_identity</span><span class="plain"> *</span><span class="functiontext">Verbs::new_verb</span><span class="plain">(</span><span class="identifier">verb_conjugation</span><span class="plain"> *</span><span class="identifier">vc</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">cop</span><span class="plain">) {</span>
|
|
<span class="reserved">verb_identity</span><span class="plain"> *</span><span class="identifier">vi</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">verb_identity</span><span class="plain">);</span>
|
|
<span class="identifier">vi</span><span class="plain">-</span><span class="element">>conjugation</span><span class="plain"> = </span><span class="identifier">vc</span><span class="plain">;</span>
|
|
<span class="identifier">vi</span><span class="plain">-</span><span class="element">>list_of_forms</span><span class="plain"> = </span><span class="identifier">NULL</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">vi</span><span class="plain">-</span><span class="element">>verb_package</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
|
<span class="plain">#</span><span class="identifier">endif</span>
|
|
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">cop</span><span class="plain">) && (</span><span class="identifier">copular_verb</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) && (</span><span class="identifier">vc</span><span class="plain">) &&</span>
|
|
<span class="plain">(</span><span class="identifier">WordAssemblages::nonempty</span><span class="plain">(</span><span class="identifier">vc</span><span class="plain">-></span><span class="identifier">infinitive</span><span class="plain">))) </span><span class="identifier">copular_verb</span><span class="plain"> = </span><span class="identifier">vi</span><span class="plain">;</span>
|
|
<span class="identifier">LOGIF</span><span class="plain">(</span><span class="identifier">VERB_FORMS</span><span class="plain">, </span><span class="string">"New verb: $w\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">vi</span><span class="plain">);</span>
|
|
<span class="functiontext">Verbs::add_form</span><span class="plain">(</span><span class="identifier">vi</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="functiontext">VerbMeanings::meaninglessness</span><span class="plain">(), </span><span class="constant">SVO_FS_BIT</span><span class="plain">);</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">vi</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Verbs::log_verb</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">vvi</span><span class="plain">) {</span>
|
|
<span class="reserved">verb_identity</span><span class="plain"> *</span><span class="identifier">vi</span><span class="plain"> = (</span><span class="reserved">verb_identity</span><span class="plain"> *) </span><span class="identifier">vvi</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">vi</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">"<no-vi>"</span><span class="plain">); }</span>
|
|
<span class="reserved">else</span><span class="plain"> {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"v="</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">vi</span><span class="plain">-</span><span class="element">>conjugation</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%A"</span><span class="plain">, &(</span><span class="identifier">vi</span><span class="plain">-</span><span class="element">>conjugation</span><span class="plain">-></span><span class="identifier">infinitive</span><span class="plain">));</span>
|
|
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<none>"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"(%d)"</span><span class="plain">, </span><span class="identifier">vi</span><span class="plain">-></span><span class="identifier">allocation_id</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function Verbs::new_verb is used in <a href="#SP6">§6</a>.</p>
|
|
|
|
<p class="endnote">The function Verbs::log_verb is used in 1/lm (<a href="1-lm.html#SP3_4">§3.4</a>).</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP5"></a><b>§5. Package. </b></p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="plain">#</span><span class="identifier">ifdef</span><span class="plain"> </span><span class="identifier">CORE_MODULE</span>
|
|
<span class="identifier">package_request</span><span class="plain"> *</span><span class="functiontext">Verbs::verb_package</span><span class="plain">(</span><span class="reserved">verb_identity</span><span class="plain"> *</span><span class="identifier">vi</span><span class="plain">, </span><span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">where</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">vi</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"no verb identity"</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">vi</span><span class="plain">-</span><span class="element">>verb_package</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)</span>
|
|
<span class="identifier">vi</span><span class="plain">-</span><span class="element">>verb_package</span><span class="plain"> = </span><span class="identifier">Hierarchy::package</span><span class="plain">(</span><span class="identifier">Modules::find</span><span class="plain">(</span><span class="identifier">where</span><span class="plain">), </span><span class="identifier">VERBS_HAP</span><span class="plain">);</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">vi</span><span class="plain">-</span><span class="element">>verb_package</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">#</span><span class="identifier">endif</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function Verbs::verb_package is used in <a href="#SP13">§13</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP6"></a><b>§6. Operator Verbs. </b>As noted above, these are tenseless verbs with no conjugation, represented
|
|
only by symbols such as <code class="display"><span class="extract"><=</span></code>. As infix operators, they mimic SVO sentence
|
|
structures.
|
|
</p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">verb_identity</span><span class="plain"> *</span><span class="functiontext">Verbs::new_operator_verb</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_identity</span><span class="plain"> *</span><span class="identifier">vi</span><span class="plain"> = </span><span class="functiontext">Verbs::new_verb</span><span class="plain">(</span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">);</span>
|
|
<span class="functiontext">Verbs::add_form</span><span class="plain">(</span><span class="identifier">vi</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="identifier">vm</span><span class="plain">, </span><span class="constant">SVO_FS_BIT</span><span class="plain">);</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">vi</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function Verbs::new_operator_verb appears nowhere else.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP7"></a><b>§7. Verb Forms. </b>A "verb form" is a way to use a given verb in a sentence. This may require
|
|
up to two different prepositions to be used. For example, "Peter is hungry"
|
|
and "Jane will be in the Dining Room" exhibit two different verb forms:
|
|
"to be" with no preposition (meaning that the object phrase, "hungry", is
|
|
not introduced by a preposition), and "to be" with the preposition "in".
|
|
</p>
|
|
|
|
<p class="inwebparagraph">It's not always the case that the preposition follows the verb, even when
|
|
it directly introduces the object, because of a quirk of English called
|
|
inversion: for example "In the Dining Room is Jane" locates "in" far from
|
|
"is". But the first preposition, if given, always introduces the object
|
|
phrase. If it's not given, the object phrase has no introduction, as in
|
|
the sentence "Peter is hungry".
|
|
</p>
|
|
|
|
<p class="inwebparagraph">The second clause preposition is again optional. This marks that the verb
|
|
takes two object phrases, and provides a preposition to introduce the
|
|
second of these. For example, in "X translates into Y as Z", the verb
|
|
is "translate", the first preposition is "into", and the second is "as".
|
|
In "X ends Y when Z", the first preposition is null, and the second is "when".
|
|
</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP8"></a><b>§8. </b>A "form structure" is a possible way in which a verb form can be expressed.
|
|
SVO means "subject, verb, object", as in "Peter likes Jane"; VOO means
|
|
"verb, object, object", as in "Test me with ...", and so on. Since multiple
|
|
form usages can be legal for the same form, this is a bitmap:
|
|
</p>
|
|
|
|
|
|
<pre class="definitions">
|
|
<span class="definitionkeyword">define</span> <span class="constant">SVO_FS_BIT</span><span class="plain"> 1</span>
|
|
<span class="definitionkeyword">define</span> <span class="constant">VO_FS_BIT</span><span class="plain"> 2</span>
|
|
<span class="definitionkeyword">define</span> <span class="constant">SVOO_FS_BIT</span><span class="plain"> 4</span>
|
|
<span class="definitionkeyword">define</span> <span class="constant">VOO_FS_BIT</span><span class="plain"> 8</span>
|
|
</pre>
|
|
<p class="inwebparagraph"><a id="SP9"></a><b>§9. </b>So here's the verb form:
|
|
</p>
|
|
|
|
|
|
<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_form</span><span class="plain"> {</span>
|
|
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">verb_identity</span><span class="plain"> *</span><span class="identifier">underlying_verb</span><span class="plain">;</span>
|
|
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">preposition_identity</span><span class="plain"> *</span><span class="identifier">preposition</span><span class="plain">;</span>
|
|
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">preposition_identity</span><span class="plain"> *</span><span class="identifier">second_clause_preposition</span><span class="plain">;</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">form_structures</span><span class="plain">; </span> <span class="comment">bitmap of <code class="display"><span class="extract">*_FS_BIT</span></code> values</span>
|
|
<span class="plain">#</span><span class="identifier">ifdef</span><span class="plain"> </span><span class="identifier">CORE_MODULE</span>
|
|
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">inter_name</span><span class="plain"> *</span><span class="identifier">vf_iname</span><span class="plain">; </span> <span class="comment">routine to conjugate this</span>
|
|
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">where_vf_created</span><span class="plain">;</span>
|
|
<span class="plain">#</span><span class="identifier">endif</span>
|
|
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">word_assemblage</span><span class="plain"> </span><span class="identifier">infinitive_reference_text</span><span class="plain">; </span> <span class="comment">e.g. "translate into"</span>
|
|
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">word_assemblage</span><span class="plain"> </span><span class="identifier">pos_reference_text</span><span class="plain">; </span> <span class="comment">e.g. "translate into"</span>
|
|
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">word_assemblage</span><span class="plain"> </span><span class="identifier">neg_reference_text</span><span class="plain">; </span> <span class="comment">e.g. "do not translate into"</span>
|
|
|
|
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">verb_sense</span><span class="plain"> *</span><span class="identifier">list_of_senses</span><span class="plain">;</span>
|
|
|
|
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">verb_form</span><span class="plain"> *</span><span class="identifier">next_form</span><span class="plain">; </span> <span class="comment">within the linked list for the verb</span>
|
|
<span class="identifier">MEMORY_MANAGEMENT</span>
|
|
<span class="plain">} </span><span class="reserved">verb_form</span><span class="plain">;</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The structure verb_form is accessed in 4/vu, 4/prp, 5/vp and here.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP10"></a><b>§10. Verb senses. </b>In this model, a verb can have multiple senses. Inform makes little use of
|
|
that in verbs created by the user, but for example "X is Y" has more than
|
|
a dozen different senses. (Inform distinguishes them on a case by case basis,
|
|
by looking at X and Y.)
|
|
</p>
|
|
|
|
<p class="inwebparagraph">The following structure is just a holder for a "verb meaning", so that it
|
|
can be joined into a linked list. Verb meanings are described elsewhere.
|
|
</p>
|
|
|
|
|
|
<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_sense</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="identifier">vm</span><span class="plain">;</span>
|
|
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">verb_sense</span><span class="plain"> *</span><span class="identifier">next_sense</span><span class="plain">; </span> <span class="comment">within the linked list for the verb form</span>
|
|
<span class="identifier">MEMORY_MANAGEMENT</span>
|
|
<span class="plain">} </span><span class="reserved">verb_sense</span><span class="plain">;</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The structure verb_sense is accessed in 4/vu, 4/prp, 5/vp and here.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP11"></a><b>§11. Creating forms and senses. </b>Forms are stored in a linked list, and are uniquely identified by the triplet
|
|
of verb and two prepositions:
|
|
</p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">verb_form</span><span class="plain"> *</span><span class="functiontext">Verbs::find_form</span><span class="plain">(</span><span class="reserved">verb_identity</span><span class="plain"> *</span><span class="identifier">vi</span><span class="plain">, </span><span class="reserved">preposition_identity</span><span class="plain"> *</span><span class="identifier">prep</span><span class="plain">, </span><span class="reserved">preposition_identity</span><span class="plain"> *</span><span class="identifier">second_prep</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">vi</span><span class="plain">)</span>
|
|
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">verb_form</span><span class="plain"> *</span><span class="identifier">vf</span><span class="plain"> = </span><span class="identifier">vi</span><span class="plain">-</span><span class="element">>list_of_forms</span><span class="plain">; </span><span class="identifier">vf</span><span class="plain">; </span><span class="identifier">vf</span><span class="plain"> = </span><span class="identifier">vf</span><span class="plain">-</span><span class="element">>next_form</span><span class="plain">)</span>
|
|
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">vf</span><span class="plain">-</span><span class="element">>preposition</span><span class="plain"> == </span><span class="identifier">prep</span><span class="plain">) && (</span><span class="identifier">vf</span><span class="plain">-</span><span class="element">>second_clause_preposition</span><span class="plain"> == </span><span class="identifier">second_prep</span><span class="plain">))</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">vf</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>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function Verbs::find_form is used in <a href="#SP12_1">§12.1</a>, <a href="#SP14">§14</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP12"></a><b>§12. </b>And here's how we add them.
|
|
</p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Verbs::add_form</span><span class="plain">(</span><span class="reserved">verb_identity</span><span class="plain"> *</span><span class="identifier">vi</span><span class="plain">, </span><span class="reserved">preposition_identity</span><span class="plain"> *</span><span class="identifier">prep</span><span class="plain">,</span>
|
|
<span class="reserved">preposition_identity</span><span class="plain"> *</span><span class="identifier">second_prep</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">form_structs</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="identifier">FALSE</span><span class="plain">)</span>
|
|
<span class="identifier">LOGIF</span><span class="plain">(</span><span class="identifier">VERB_FORMS</span><span class="plain">, </span><span class="string">" Adding form: $w + $p + $p = $y\</span><span class="plain">n</span><span class="string">"</span><span class="plain">,</span>
|
|
<span class="identifier">vi</span><span class="plain">, </span><span class="identifier">prep</span><span class="plain">, </span><span class="identifier">second_prep</span><span class="plain">, &</span><span class="identifier">vm</span><span class="plain">);</span>
|
|
|
|
<span class="functiontext">VerbMeanings::set_where_assigned</span><span class="plain">(&</span><span class="identifier">vm</span><span class="plain">, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
|
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">vi</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"added form to null verb"</span><span class="plain">);</span>
|
|
|
|
<span class="reserved">verb_form</span><span class="plain"> *</span><span class="identifier">vf</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
|
<<span class="cwebmacro">Find or create the verb form structure for this combination</span> <span class="cwebmacronumber">12.1</span>><span class="plain">;</span>
|
|
|
|
<span class="identifier">vf</span><span class="plain">-</span><span class="element">>form_structures</span><span class="plain"> = ((</span><span class="identifier">vf</span><span class="plain">-</span><span class="element">>form_structures</span><span class="plain">) | </span><span class="identifier">form_structs</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="identifier">FALSE</span><span class="plain">) || (</span><span class="identifier">vf</span><span class="plain">-</span><span class="element">>list_of_senses</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">))</span>
|
|
<<span class="cwebmacro">Add this meaning as a new sense of the verb form</span> <span class="cwebmacronumber">12.2</span>><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function Verbs::add_form is used in <a href="#SP4">§4</a>, <a href="#SP6">§6</a>, 4/vu (<a href="4-vu.html#SP7_1">§7.1</a>, <a href="4-vu.html#SP8">§8</a>).</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP12_1"></a><b>§12.1. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Find or create the verb form structure for this combination</span> <span class="cwebmacronumber">12.1</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">vf</span><span class="plain"> = </span><span class="functiontext">Verbs::find_form</span><span class="plain">(</span><span class="identifier">vi</span><span class="plain">, </span><span class="identifier">prep</span><span class="plain">, </span><span class="identifier">second_prep</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">vf</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
|
|
<span class="identifier">vf</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">verb_form</span><span class="plain">);</span>
|
|
<span class="identifier">vf</span><span class="plain">-</span><span class="element">>underlying_verb</span><span class="plain"> = </span><span class="identifier">vi</span><span class="plain">;</span>
|
|
<span class="identifier">vf</span><span class="plain">-</span><span class="element">>preposition</span><span class="plain"> = </span><span class="identifier">prep</span><span class="plain">;</span>
|
|
<span class="identifier">vf</span><span class="plain">-</span><span class="element">>second_clause_preposition</span><span class="plain"> = </span><span class="identifier">second_prep</span><span class="plain">;</span>
|
|
<span class="identifier">vf</span><span class="plain">-</span><span class="element">>form_structures</span><span class="plain"> = 0;</span>
|
|
<span class="identifier">vf</span><span class="plain">-</span><span class="element">>list_of_senses</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
|
<span class="identifier">vf</span><span class="plain">-</span><span class="element">>next_form</span><span class="plain"> = </span><span class="identifier">NULL</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">vf</span><span class="plain">-</span><span class="element">>vf_iname</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
|
<span class="identifier">vf</span><span class="plain">-</span><span class="element">>where_vf_created</span><span class="plain"> = </span><span class="identifier">current_sentence</span><span class="plain">;</span>
|
|
<span class="plain">#</span><span class="identifier">endif</span>
|
|
<<span class="cwebmacro">Compose the reference texts for the new form</span> <span class="cwebmacronumber">12.1.1</span>><span class="plain">;</span>
|
|
<<span class="cwebmacro">Insert the new form into the list of forms for this verb</span> <span class="cwebmacronumber">12.1.2</span>><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP12">§12</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP12_1_1"></a><b>§12.1.1. </b>The reference texts are just for convenience, really: they express the form
|
|
in a canonical verbal form. For example, "translate into <code class="display"><span class="extract">+</span></code> as".
|
|
</p>
|
|
|
|
|
|
<p class="macrodefinition"><code class="display">
|
|
<<span class="cwebmacrodefn">Compose the reference texts for the new form</span> <span class="cwebmacronumber">12.1.1</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">verb_conjugation</span><span class="plain"> *</span><span class="identifier">vc</span><span class="plain"> = </span><span class="identifier">vi</span><span class="plain">-</span><span class="element">>conjugation</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">vc</span><span class="plain">) {</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">p</span><span class="plain"> = </span><span class="identifier">PREFORM_ADAPTIVE_PERSON</span><span class="plain">(</span><span class="identifier">vc</span><span class="plain">-></span><span class="identifier">defined_in</span><span class="plain">);</span>
|
|
<span class="identifier">word_assemblage</span><span class="plain"> </span><span class="identifier">we_form</span><span class="plain"> = (</span><span class="identifier">vc</span><span class="plain">-></span><span class="identifier">tabulations</span><span class="plain">[</span><span class="identifier">ACTIVE_MOOD</span><span class="plain">].</span><span class="identifier">vc_text</span><span class="plain">[</span><span class="identifier">IS_TENSE</span><span class="plain">][0][</span><span class="identifier">p</span><span class="plain">]);</span>
|
|
<span class="identifier">word_assemblage</span><span class="plain"> </span><span class="identifier">we_dont_form</span><span class="plain"> = (</span><span class="identifier">vc</span><span class="plain">-></span><span class="identifier">tabulations</span><span class="plain">[</span><span class="identifier">ACTIVE_MOOD</span><span class="plain">].</span><span class="identifier">vc_text</span><span class="plain">[</span><span class="identifier">IS_TENSE</span><span class="plain">][1][</span><span class="identifier">p</span><span class="plain">]);</span>
|
|
<span class="identifier">vf</span><span class="plain">-</span><span class="element">>infinitive_reference_text</span><span class="plain"> = </span><span class="identifier">vc</span><span class="plain">-></span><span class="identifier">infinitive</span><span class="plain">;</span>
|
|
<span class="identifier">vf</span><span class="plain">-</span><span class="element">>pos_reference_text</span><span class="plain"> = </span><span class="identifier">we_form</span><span class="plain">;</span>
|
|
<span class="identifier">vf</span><span class="plain">-</span><span class="element">>neg_reference_text</span><span class="plain"> = </span><span class="identifier">we_dont_form</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">prep</span><span class="plain">) {</span>
|
|
<span class="identifier">vf</span><span class="plain">-</span><span class="element">>infinitive_reference_text</span><span class="plain"> = </span><span class="identifier">WordAssemblages::join</span><span class="plain">(</span><span class="identifier">vf</span><span class="plain">-</span><span class="element">>infinitive_reference_text</span><span class="plain">, </span><span class="identifier">prep</span><span class="plain">-</span><span class="element">>prep_text</span><span class="plain">);</span>
|
|
<span class="identifier">vf</span><span class="plain">-</span><span class="element">>pos_reference_text</span><span class="plain"> = </span><span class="identifier">WordAssemblages::join</span><span class="plain">(</span><span class="identifier">vf</span><span class="plain">-</span><span class="element">>pos_reference_text</span><span class="plain">, </span><span class="identifier">prep</span><span class="plain">-</span><span class="element">>prep_text</span><span class="plain">);</span>
|
|
<span class="identifier">vf</span><span class="plain">-</span><span class="element">>neg_reference_text</span><span class="plain"> = </span><span class="identifier">WordAssemblages::join</span><span class="plain">(</span><span class="identifier">vf</span><span class="plain">-</span><span class="element">>neg_reference_text</span><span class="plain">, </span><span class="identifier">prep</span><span class="plain">-</span><span class="element">>prep_text</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">second_prep</span><span class="plain">) {</span>
|
|
<span class="identifier">word_assemblage</span><span class="plain"> </span><span class="identifier">plus</span><span class="plain"> = </span><span class="identifier">WordAssemblages::lit_1</span><span class="plain">(</span><span class="identifier">PLUS_V</span><span class="plain">);</span>
|
|
<span class="identifier">vf</span><span class="plain">-</span><span class="element">>infinitive_reference_text</span><span class="plain"> = </span><span class="identifier">WordAssemblages::join</span><span class="plain">(</span><span class="identifier">vf</span><span class="plain">-</span><span class="element">>infinitive_reference_text</span><span class="plain">, </span><span class="identifier">plus</span><span class="plain">);</span>
|
|
<span class="identifier">vf</span><span class="plain">-</span><span class="element">>pos_reference_text</span><span class="plain"> = </span><span class="identifier">WordAssemblages::join</span><span class="plain">(</span><span class="identifier">vf</span><span class="plain">-</span><span class="element">>pos_reference_text</span><span class="plain">, </span><span class="identifier">plus</span><span class="plain">);</span>
|
|
<span class="identifier">vf</span><span class="plain">-</span><span class="element">>neg_reference_text</span><span class="plain"> = </span><span class="identifier">WordAssemblages::join</span><span class="plain">(</span><span class="identifier">vf</span><span class="plain">-</span><span class="element">>neg_reference_text</span><span class="plain">, </span><span class="identifier">plus</span><span class="plain">);</span>
|
|
<span class="identifier">vf</span><span class="plain">-</span><span class="element">>infinitive_reference_text</span><span class="plain"> = </span><span class="identifier">WordAssemblages::join</span><span class="plain">(</span><span class="identifier">vf</span><span class="plain">-</span><span class="element">>infinitive_reference_text</span><span class="plain">, </span><span class="identifier">second_prep</span><span class="plain">-</span><span class="element">>prep_text</span><span class="plain">);</span>
|
|
<span class="identifier">vf</span><span class="plain">-</span><span class="element">>pos_reference_text</span><span class="plain"> = </span><span class="identifier">WordAssemblages::join</span><span class="plain">(</span><span class="identifier">vf</span><span class="plain">-</span><span class="element">>pos_reference_text</span><span class="plain">, </span><span class="identifier">second_prep</span><span class="plain">-</span><span class="element">>prep_text</span><span class="plain">);</span>
|
|
<span class="identifier">vf</span><span class="plain">-</span><span class="element">>neg_reference_text</span><span class="plain"> = </span><span class="identifier">WordAssemblages::join</span><span class="plain">(</span><span class="identifier">vf</span><span class="plain">-</span><span class="element">>neg_reference_text</span><span class="plain">, </span><span class="identifier">second_prep</span><span class="plain">-</span><span class="element">>prep_text</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
|
<span class="identifier">vf</span><span class="plain">-</span><span class="element">>infinitive_reference_text</span><span class="plain"> = </span><span class="identifier">WordAssemblages::new_assemblage</span><span class="plain">();</span>
|
|
<span class="identifier">vf</span><span class="plain">-</span><span class="element">>pos_reference_text</span><span class="plain"> = </span><span class="identifier">WordAssemblages::new_assemblage</span><span class="plain">();</span>
|
|
<span class="identifier">vf</span><span class="plain">-</span><span class="element">>neg_reference_text</span><span class="plain"> = </span><span class="identifier">WordAssemblages::new_assemblage</span><span class="plain">();</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP12_1">§12.1</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP12_1_2"></a><b>§12.1.2. </b>The list of forms for a verb is in order of preposition length.
|
|
</p>
|
|
|
|
|
|
<p class="macrodefinition"><code class="display">
|
|
<<span class="cwebmacrodefn">Insert the new form into the list of forms for this verb</span> <span class="cwebmacronumber">12.1.2</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="reserved">verb_form</span><span class="plain"> *</span><span class="identifier">prev</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">, *</span><span class="identifier">evf</span><span class="plain"> = </span><span class="identifier">vi</span><span class="plain">-</span><span class="element">>list_of_forms</span><span class="plain">;</span>
|
|
<span class="reserved">for</span><span class="plain"> (; </span><span class="identifier">evf</span><span class="plain">; </span><span class="identifier">prev</span><span class="plain"> = </span><span class="identifier">evf</span><span class="plain">, </span><span class="identifier">evf</span><span class="plain"> = </span><span class="identifier">evf</span><span class="plain">-</span><span class="element">>next_form</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Prepositions::length</span><span class="plain">(</span><span class="identifier">prep</span><span class="plain">) > </span><span class="functiontext">Prepositions::length</span><span class="plain">(</span><span class="identifier">evf</span><span class="plain">-</span><span class="element">>preposition</span><span class="plain">)) </span><span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">prev</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
|
|
<span class="identifier">vf</span><span class="plain">-</span><span class="element">>next_form</span><span class="plain"> = </span><span class="identifier">vi</span><span class="plain">-</span><span class="element">>list_of_forms</span><span class="plain">;</span>
|
|
<span class="identifier">vi</span><span class="plain">-</span><span class="element">>list_of_forms</span><span class="plain"> = </span><span class="identifier">vf</span><span class="plain">;</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
|
<span class="identifier">vf</span><span class="plain">-</span><span class="element">>next_form</span><span class="plain"> = </span><span class="identifier">prev</span><span class="plain">-</span><span class="element">>next_form</span><span class="plain">;</span>
|
|
<span class="identifier">prev</span><span class="plain">-</span><span class="element">>next_form</span><span class="plain"> = </span><span class="identifier">vf</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP12_1">§12.1</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP12_2"></a><b>§12.2. </b>A new sense is normally just added to the end of the list of senses for
|
|
the given form, except that if there's a meaningless sense present already,
|
|
we overwrite that with the new (presumably meaningful) one.
|
|
</p>
|
|
|
|
|
|
<p class="macrodefinition"><code class="display">
|
|
<<span class="cwebmacrodefn">Add this meaning as a new sense of the verb form</span> <span class="cwebmacronumber">12.2</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="reserved">verb_sense</span><span class="plain"> *</span><span class="identifier">vs</span><span class="plain"> = </span><span class="identifier">vf</span><span class="plain">-</span><span class="element">>list_of_senses</span><span class="plain">, *</span><span class="identifier">prev</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
|
<span class="reserved">while</span><span class="plain"> (</span><span class="identifier">vs</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">vs</span><span class="plain">-</span><span class="element">>vm</span><span class="plain">))) { </span><span class="identifier">vs</span><span class="plain">-</span><span class="element">>vm</span><span class="plain"> = </span><span class="identifier">vm</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">; }</span>
|
|
<span class="identifier">prev</span><span class="plain"> = </span><span class="identifier">vs</span><span class="plain">; </span><span class="identifier">vs</span><span class="plain"> = </span><span class="identifier">vs</span><span class="plain">-</span><span class="element">>next_sense</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">vs</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
|
|
<span class="identifier">vs</span><span class="plain"> = </span><span class="functiontext">Verbs::new_sense</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">prev</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">vf</span><span class="plain">-</span><span class="element">>list_of_senses</span><span class="plain"> = </span><span class="identifier">vs</span><span class="plain">;</span>
|
|
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">prev</span><span class="plain">-</span><span class="element">>next_sense</span><span class="plain"> = </span><span class="identifier">vs</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP12">§12</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP13"></a><b>§13. </b></p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="plain">#</span><span class="identifier">ifdef</span><span class="plain"> </span><span class="identifier">CORE_MODULE</span>
|
|
<span class="identifier">inter_name</span><span class="plain"> *</span><span class="functiontext">Verbs::form_iname</span><span class="plain">(</span><span class="reserved">verb_form</span><span class="plain"> *</span><span class="identifier">vf</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">vf</span><span class="plain">-</span><span class="element">>vf_iname</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
|
|
<span class="identifier">package_request</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain"> = </span><span class="functiontext">Verbs::verb_package</span><span class="plain">(</span><span class="identifier">vf</span><span class="plain">-</span><span class="element">>underlying_verb</span><span class="plain">, </span><span class="identifier">vf</span><span class="plain">-</span><span class="element">>where_vf_created</span><span class="plain">);</span>
|
|
<span class="identifier">package_request</span><span class="plain"> *</span><span class="identifier">R2</span><span class="plain"> = </span><span class="identifier">Hierarchy::package_within</span><span class="plain">(</span><span class="identifier">VERB_FORMS_HAP</span><span class="plain">, </span><span class="identifier">R</span><span class="plain">);</span>
|
|
<span class="identifier">vf</span><span class="plain">-</span><span class="element">>vf_iname</span><span class="plain"> = </span><span class="identifier">Hierarchy::make_iname_in</span><span class="plain">(</span><span class="identifier">FORM_FN_HL</span><span class="plain">, </span><span class="identifier">R2</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">vf</span><span class="plain">-</span><span class="element">>vf_iname</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">#</span><span class="identifier">endif</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function Verbs::form_iname appears nowhere else.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP14"></a><b>§14. </b>Where:
|
|
</p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">verb_sense</span><span class="plain"> *</span><span class="functiontext">Verbs::new_sense</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_sense</span><span class="plain"> *</span><span class="identifier">vs</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">verb_sense</span><span class="plain">);</span>
|
|
<span class="identifier">vs</span><span class="plain">-</span><span class="element">>vm</span><span class="plain"> = </span><span class="identifier">vm</span><span class="plain">;</span>
|
|
<span class="identifier">vs</span><span class="plain">-</span><span class="element">>next_sense</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">vs</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">verb_meaning</span><span class="plain"> *</span><span class="functiontext">Verbs::regular_meaning</span><span class="plain">(</span><span class="reserved">verb_identity</span><span class="plain"> *</span><span class="identifier">vi</span><span class="plain">,</span>
|
|
<span class="reserved">preposition_identity</span><span class="plain"> *</span><span class="identifier">prep</span><span class="plain">, </span><span class="reserved">preposition_identity</span><span class="plain"> *</span><span class="identifier">second_prep</span><span class="plain">) {</span>
|
|
<span class="reserved">verb_form</span><span class="plain"> *</span><span class="identifier">vf</span><span class="plain"> = </span><span class="functiontext">Verbs::find_form</span><span class="plain">(</span><span class="identifier">vi</span><span class="plain">, </span><span class="identifier">prep</span><span class="plain">, </span><span class="identifier">second_prep</span><span class="plain">);</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Verbs::regular_meaning_from_form</span><span class="plain">(</span><span class="identifier">vf</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">verb_meaning</span><span class="plain"> *</span><span class="functiontext">Verbs::regular_meaning_from_form</span><span class="plain">(</span><span class="reserved">verb_form</span><span class="plain"> *</span><span class="identifier">vf</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">vf</span><span class="plain">)</span>
|
|
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">verb_sense</span><span class="plain"> *</span><span class="identifier">vs</span><span class="plain"> = </span><span class="identifier">vf</span><span class="plain">-</span><span class="element">>list_of_senses</span><span class="plain">; </span><span class="identifier">vs</span><span class="plain">; </span><span class="identifier">vs</span><span class="plain"> = </span><span class="identifier">vs</span><span class="plain">-</span><span class="element">>next_sense</span><span class="plain">) {</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">rev</span><span class="plain"> = 0;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">VerbMeanings::get_special_meaning</span><span class="plain">(&(</span><span class="identifier">vs</span><span class="plain">-</span><span class="element">>vm</span><span class="plain">), &</span><span class="identifier">rev</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">vs</span><span class="plain">-</span><span class="element">>vm</span><span class="plain">);</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>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function Verbs::new_sense is used in <a href="#SP12_2">§12.2</a>.</p>
|
|
|
|
<p class="endnote">The function Verbs::regular_meaning is used in 4/vu (<a href="4-vu.html#SP13">§13</a>), 5/vm (<a href="5-vm.html#SP4">§4</a>), 5/np (<a href="5-np.html#SP13_1">§13.1</a>).</p>
|
|
|
|
<p class="endnote">The function Verbs::regular_meaning_from_form appears nowhere else.</p>
|
|
|
|
<hr class="tocbar">
|
|
<ul class="toc"><li><i>(This section begins Chapter 4: Grammatical Categories II.)</i></li><li><a href="4-vu.html">Continue with 'Verb Usages'</a></li></ul><hr class="tocbar">
|
|
<!--End of weave-->
|
|
</body>
|
|
</html>
|
|
|