mirror of
https://github.com/ganelson/inform.git
synced 2024-07-08 18:14:21 +03:00
260 lines
28 KiB
HTML
260 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>4/vu</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/prp' 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>Prepositions</b></li></ul><p class="purpose">To define prepositional forms.</p>
|
|
|
|
<ul class="toc"><li><a href="#SP1">§1. Prepositions</a></li><li><a href="#SP4">§4. Logging</a></li><li><a href="#SP5">§5. Creation</a></li><li><a href="#SP7">§7. Parsing source text against preposition usages</a></li></ul><hr class="tocbar">
|
|
|
|
<p class="inwebparagraph"><a id="SP1"></a><b>§1. Prepositions. </b>These are words which introduce relative clauses, or mark the text following
|
|
them as having some role; in more inflected languages, noun cases might be
|
|
used for some of the same purposes. For example, in the sentence "Peter is
|
|
in the Library", the word "in" is a preposition (as it is twice in this
|
|
sentence, too). Prepositions often occur in combination with the copular
|
|
verb "to be" like this, but not always. Inform's standard usage "X substitutes
|
|
for Y" couples the preposition "for" to the verb "to substitute".
|
|
</p>
|
|
|
|
<p class="inwebparagraph">That all sounds linguistically sound, but we're on dodgier ground in how
|
|
we analyse text like "X is contained by Y". We're going to regard this as
|
|
the verb "to be" combined with the preposition "contained by", for
|
|
implementation reasons.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">Note that the following says nothing about the preposition's meaning, which
|
|
will vary depending on the verb it's coupled with.
|
|
</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">preposition_identity</span><span class="plain"> {</span>
|
|
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">word_assemblage</span><span class="plain"> </span><span class="identifier">prep_text</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">lexicon_entry</span><span class="plain"> *</span><span class="identifier">prep_lex_entry</span><span class="plain">; </span> <span class="comment">for use when indexing</span>
|
|
<span class="plain">#</span><span class="identifier">endif</span>
|
|
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">where_prep_created</span><span class="plain">; </span> <span class="comment">for use if problem messages needed</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">allow_unexpected_upper_case</span><span class="plain">; </span> <span class="comment">for preps like "in Cahoots With"</span>
|
|
<span class="identifier">MEMORY_MANAGEMENT</span>
|
|
<span class="plain">} </span><span class="reserved">preposition_identity</span><span class="plain">;</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The structure preposition_identity is accessed in 4/vrb, 4/vu, 5/vp and here.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP2"></a><b>§2. </b>As with verbs, "prepositions" can be long, but are not unlimited.
|
|
</p>
|
|
|
|
|
|
<pre class="definitions">
|
|
<span class="definitionkeyword">define</span> <span class="constant">MAX_WORDS_IN_PREPOSITION</span><span class="plain"> (</span><span class="identifier">MAX_WORDS_IN_ASSEMBLAGE</span><span class="plain"> - 2)</span>
|
|
</pre>
|
|
<p class="inwebparagraph"><a id="SP3"></a><b>§3. </b>Preposition words are marked for efficiency of parsing:
|
|
</p>
|
|
|
|
|
|
<pre class="definitions">
|
|
<span class="definitionkeyword">define</span> <span class="constant">PREPOSITION_MC</span><span class="plain"> 0</span><span class="identifier">x00800000</span><span class="plain"> </span> <span class="comment">a word which might introduce a relative clause</span>
|
|
</pre>
|
|
<p class="inwebparagraph"><a id="SP4"></a><b>§4. Logging. </b></p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Prepositions::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">vprep</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">vprep</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">NULL</span><span class="plain">) { </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"___"</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">"p=%A"</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>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function Prepositions::log 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. Creation. </b>Prepositions are completely determined by their wording: the "for" attached
|
|
to one verb is the same preposition as the "for" attached to another one.
|
|
</p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">preposition_identity</span><span class="plain"> *</span><span class="functiontext">Prepositions::make</span><span class="plain">(</span><span class="identifier">word_assemblage</span><span class="plain"> </span><span class="identifier">wa</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">unexpected_upper_casing_used</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="identifier">NULL</span><span class="plain">;</span>
|
|
<span class="identifier">LOOP_OVER</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="reserved">if</span><span class="plain"> (</span><span class="identifier">WordAssemblages::compare</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">wa</span><span class="plain">))</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">prep</span><span class="plain">;</span>
|
|
|
|
<span class="identifier">prep</span><span class="plain"> = </span><span class="identifier">CREATE</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="element">>prep_text</span><span class="plain"> = </span><span class="identifier">wa</span><span class="plain">;</span>
|
|
<span class="identifier">prep</span><span class="plain">-</span><span class="element">>where_prep_created</span><span class="plain"> = </span><span class="identifier">set_where_created</span><span class="plain">;</span>
|
|
<span class="identifier">prep</span><span class="plain">-</span><span class="element">>allow_unexpected_upper_case</span><span class="plain"> = </span><span class="identifier">unexpected_upper_casing_used</span><span class="plain">;</span>
|
|
<span class="functiontext">Prepositions::mark_as_preposition</span><span class="plain">(</span><span class="identifier">WordAssemblages::first_word</span><span class="plain">(&</span><span class="identifier">wa</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">prep</span><span class="plain">-</span><span class="element">>prep_lex_entry</span><span class="plain"> = </span><span class="identifier">Index::Lexicon::new_main_verb</span><span class="plain">(</span><span class="identifier">wa</span><span class="plain">, </span><span class="identifier">PREP_LEXE</span><span class="plain">);</span>
|
|
<span class="plain">#</span><span class="identifier">endif</span>
|
|
<span class="identifier">LOGIF</span><span class="plain">(</span><span class="identifier">VERB_FORMS</span><span class="plain">, </span><span class="string">"New preposition: $p\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">prep</span><span class="plain">);</span>
|
|
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">prep</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function Prepositions::make is used in 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="SP6"></a><b>§6. </b>Two utility routines:
|
|
</p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="identifier">parse_node</span><span class="plain"> *</span><span class="functiontext">Prepositions::get_where_pu_created</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">return</span><span class="plain"> </span><span class="identifier">prep</span><span class="plain">-</span><span class="element">>where_prep_created</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">Prepositions::length</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">if</span><span class="plain"> (</span><span class="identifier">prep</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> 0;</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">WordAssemblages::length</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>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function Prepositions::get_where_pu_created appears nowhere else.</p>
|
|
|
|
<p class="endnote">The function Prepositions::length is used in 4/vrb (<a href="4-vrb.html#SP12_1_2">§12.1.2</a>).</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP7"></a><b>§7. Parsing source text against preposition usages. </b>The following parses to see if the preposition occurs at the beginning of,
|
|
perhaps entirely filling, the given wording. We return the word number after
|
|
the preposition ends, which might therefore be just outside the range.
|
|
</p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">Prepositions::parse_prep_against</span><span class="plain">(</span><span class="identifier">wording</span><span class="plain"> </span><span class="identifier">W</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">return</span><span class="plain"> </span><span class="identifier">WordAssemblages::parse_as_weakly_initial_text</span><span class="plain">(</span><span class="identifier">W</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">EMPTY_WORDING</span><span class="plain">,</span>
|
|
<span class="identifier">prep</span><span class="plain">-</span><span class="element">>allow_unexpected_upper_case</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function Prepositions::parse_prep_against is used in <a href="#SP8">§8</a>, <a href="#SP9">§9</a>, <a href="#SP10">§10</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP8"></a><b>§8. </b>The following nonterminal is currently not used. In principle it spots any
|
|
preposition, but note that it does so by testing in creation order.
|
|
</p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="plain"><</span><span class="identifier">preposition</span><span class="plain">> </span><span class="identifier">internal</span><span class="plain"> ? {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Vocabulary::test_flags</span><span class="plain">(</span><span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">), </span><span class="constant">PREPOSITION_MC</span><span class="plain">) == </span><span class="identifier">FALSE</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="reserved">preposition_identity</span><span class="plain"> *</span><span class="identifier">prep</span><span class="plain">;</span>
|
|
<span class="identifier">LOOP_OVER</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="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain"> = </span><span class="functiontext">Prepositions::parse_prep_against</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">, </span><span class="identifier">prep</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">i</span><span class="plain">></span><span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">)) && (</span><span class="identifier">i</span><span class="plain"><=</span><span class="identifier">Wordings::last_wn</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">)+1)) {</span>
|
|
<span class="plain">*</span><span class="identifier">XP</span><span class="plain"> = </span><span class="identifier">prep</span><span class="plain">;</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">-1;</span>
|
|
<span class="plain">}</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>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP9"></a><b>§9. </b>It's often useful to look for prepositions which can be combined with the
|
|
copular verb "to be". These are tested in order of the list of possible
|
|
verb forms for "to be', which is constructed with longer prepositions first.
|
|
So it will find the longest match.
|
|
</p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="plain"><</span><span class="identifier">copular</span><span class="plain">-</span><span class="identifier">preposition</span><span class="plain">> </span><span class="identifier">internal</span><span class="plain"> ? {</span>
|
|
<span class="reserved">if</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="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Vocabulary::test_flags</span><span class="plain">(</span><span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">), </span><span class="constant">PREPOSITION_MC</span><span class="plain">) == </span><span class="identifier">FALSE</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="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">copular_verb</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">preposition_identity</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">>preposition</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="functiontext">VerbMeanings::is_meaningless</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="element">>vm</span><span class="plain">)) == </span><span class="identifier">FALSE</span><span class="plain">)) {</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain"> = </span><span class="functiontext">Prepositions::parse_prep_against</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">, </span><span class="identifier">prep</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">i</span><span class="plain">></span><span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">)) && (</span><span class="identifier">i</span><span class="plain"><=</span><span class="identifier">Wordings::last_wn</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">)+1)) {</span>
|
|
<span class="plain">*</span><span class="identifier">XP</span><span class="plain"> = </span><span class="identifier">prep</span><span class="plain">;</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">-1;</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</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>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP10"></a><b>§10. </b>This is exactly similar, except that it looks for prepositions combined
|
|
with a given "permitted verb".
|
|
</p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="plain"><</span><span class="identifier">permitted</span><span class="plain">-</span><span class="identifier">preposition</span><span class="plain">> </span><span class="identifier">internal</span><span class="plain"> ? {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Vocabulary::test_flags</span><span class="plain">(</span><span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">), </span><span class="constant">PREPOSITION_MC</span><span class="plain">) == </span><span class="identifier">FALSE</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="reserved">if</span><span class="plain"> (</span><span class="identifier">permitted_verb_identity</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">permitted_verb_identity</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">preposition_identity</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">>preposition</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="functiontext">VerbMeanings::is_meaningless</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="element">>vm</span><span class="plain">)) == </span><span class="identifier">FALSE</span><span class="plain">)) {</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain"> = </span><span class="functiontext">Prepositions::parse_prep_against</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">, </span><span class="identifier">prep</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">i</span><span class="plain">></span><span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">)) && (</span><span class="identifier">i</span><span class="plain"><=</span><span class="identifier">Wordings::last_wn</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">)+1)) {</span>
|
|
<span class="plain">*</span><span class="identifier">XP</span><span class="plain"> = </span><span class="identifier">prep</span><span class="plain">;</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">-1;</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</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>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP11"></a><b>§11. </b></p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Prepositions::mark_for_preform</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
|
|
<span class="plain"><</span><span class="identifier">relative</span><span class="plain">-</span><span class="identifier">clause</span><span class="plain">-</span><span class="identifier">marker</span><span class="plain">>-></span><span class="identifier">flag_words_in_production</span><span class="plain"> = </span><span class="constant">PREPOSITION_MC</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Prepositions::preform_optimiser</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
|
|
<span class="identifier">Preform::mark_nt_as_requiring_itself</span><span class="plain">(<</span><span class="identifier">preposition</span><span class="plain">>);</span>
|
|
<span class="identifier">Preform::mark_nt_as_requiring_itself</span><span class="plain">(<</span><span class="identifier">copular</span><span class="plain">-</span><span class="identifier">preposition</span><span class="plain">>);</span>
|
|
<span class="identifier">Preform::mark_nt_as_requiring_itself</span><span class="plain">(<</span><span class="identifier">permitted</span><span class="plain">-</span><span class="identifier">preposition</span><span class="plain">>);</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Prepositions::mark_as_preposition</span><span class="plain">(</span><span class="identifier">vocabulary_entry</span><span class="plain"> *</span><span class="identifier">ve</span><span class="plain">) {</span>
|
|
<span class="identifier">Vocabulary::set_flags</span><span class="plain">(</span><span class="identifier">ve</span><span class="plain">, </span><span class="constant">PREPOSITION_MC</span><span class="plain">);</span>
|
|
<span class="identifier">Preform::set_nt_incidence</span><span class="plain">(</span><span class="identifier">ve</span><span class="plain">, <</span><span class="identifier">preposition</span><span class="plain">>);</span>
|
|
<span class="identifier">Preform::set_nt_incidence</span><span class="plain">(</span><span class="identifier">ve</span><span class="plain">, <</span><span class="identifier">copular</span><span class="plain">-</span><span class="identifier">preposition</span><span class="plain">>);</span>
|
|
<span class="identifier">Preform::set_nt_incidence</span><span class="plain">(</span><span class="identifier">ve</span><span class="plain">, <</span><span class="identifier">permitted</span><span class="plain">-</span><span class="identifier">preposition</span><span class="plain">>);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function Prepositions::mark_for_preform is used in 1/lm (<a href="1-lm.html#SP3">§3</a>).</p>
|
|
|
|
<p class="endnote">The function Prepositions::preform_optimiser is used in 1/lm (<a href="1-lm.html#SP4">§4</a>).</p>
|
|
|
|
<p class="endnote">The function Prepositions::mark_as_preposition is used in <a href="#SP5">§5</a>.</p>
|
|
|
|
<hr class="tocbar">
|
|
<ul class="toc"><li><a href="4-vu.html">Back to 'Verb Usages'</a></li><li><a href="4-aoc.html">Continue with 'Adverbs of Certainty'</a></li></ul><hr class="tocbar">
|
|
<!--End of weave-->
|
|
</body>
|
|
</html>
|
|
|