mirror of
https://github.com/ganelson/inform.git
synced 2024-07-08 01:54:21 +03:00
293 lines
38 KiB
HTML
293 lines
38 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
<html>
|
|
<head>
|
|
<title>Booting Verbs</title>
|
|
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
|
<meta name="viewport" content="width=device-width initial-scale=1">
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
<meta http-equiv="Content-Language" content="en-gb">
|
|
|
|
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
|
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
|
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
|
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
|
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
|
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
|
<link href="../docs-assets/Preform-Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
|
|
|
</head>
|
|
<body class="commentary-font">
|
|
<nav role="navigation">
|
|
<h1><a href="../index.html">
|
|
<img src="../docs-assets/Inform.png" height=72">
|
|
</a></h1>
|
|
<ul><li><a href="../index.html">home</a></li>
|
|
</ul><h2>Compiler</h2><ul>
|
|
<li><a href="../structure.html">structure</a></li>
|
|
<li><a href="../inbuildn.html">inbuild</a></li>
|
|
<li><a href="../inform7n.html">inform7</a></li>
|
|
<li><a href="../intern.html">inter</a></li>
|
|
<li><a href="../services.html">services</a></li>
|
|
</ul><h2>Other Tools</h2><ul>
|
|
<li><a href="../inblorbn.html">inblorb</a></li>
|
|
<li><a href="../indocn.html">indoc</a></li>
|
|
<li><a href="../inform6.html">inform6</a></li>
|
|
<li><a href="../inpolicyn.html">inpolicy</a></li>
|
|
<li><a href="../inrtpsn.html">inrtps</a></li>
|
|
</ul><h2>Resources</h2><ul>
|
|
<li><a href="../extensions.html">extensions</a></li>
|
|
<li><a href="../kits.html">kits</a></li>
|
|
</ul><h2>Repository</h2><ul>
|
|
<li><a href="https://github.com/ganelson/inform"><img src="../docs-assets/github.png" height=18> github</a></li>
|
|
</ul><h2>Related Projects</h2><ul>
|
|
<li><a href="../../../inweb/docs/index.html">inweb</a></li>
|
|
<li><a href="../../../intest/docs/index.html">intest</a></li>
|
|
|
|
</ul>
|
|
</nav>
|
|
<main role="main">
|
|
<!--Weave of 'Booting Verbs' generated by Inweb-->
|
|
<div class="breadcrumbs">
|
|
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../inform7n.html">Inform7</a></li><li><a href="index.html">assertions</a></li><li><a href="index.html#2">Chapter 2: Declarations</a></li><li><b>Booting Verbs</b></li></ul></div>
|
|
<p class="purpose">In Inform even verbs are created with natural language sentences, but this process has to start somewhere.</p>
|
|
|
|
<ul class="toc"><li><a href="2-bv.html#SP1">§1. Verbs</a></li><li><a href="2-bv.html#SP2">§2. Built-in relation names</a></li></ul><hr class="tocbar">
|
|
|
|
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Verbs. </b>"Booting" is the traditional computing term for "pulling yourself up by
|
|
your own bootstraps": when a computer switches on it has no program to run,
|
|
but to load in a program would require a program. The circularity is broken
|
|
by having a minimal "boot" program wired into the hardware.
|
|
</p>
|
|
|
|
<p class="commentary">So too with Inform. The opening sentence of the Basic Inform extension, always
|
|
the first sentence read in, is:
|
|
</p>
|
|
|
|
<blockquote>
|
|
<p>The verb to mean means the meaning relation.</p>
|
|
</blockquote>
|
|
|
|
<p class="commentary">(See <a href="../basic_inform/S-prm.html" class="internal">Preamble (in basic_inform)</a>.) But this is circular: if we have not yet
|
|
defined "to mean", how can we recognise "means" as the verb, or know what it
|
|
means? We break this circularity by hard-wiring it, as follows.
|
|
</p>
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">BootVerbs::make_built_in</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">verb</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to_mean</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">special_meaning_holder</span><span class="plain-syntax"> *</span><span class="identifier-syntax">meaning_of_mean</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-bv.html#SP1_3" class="named-paragraph-link"><span class="named-paragraph">Create the special meanings</span><span class="named-paragraph-number">1.3</span></a></span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-bv.html#SP1_5" class="named-paragraph-link"><span class="named-paragraph">Create the verbs to be and to mean</span><span class="named-paragraph-number">1.5</span></a></span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-bv.html#SP1_6" class="named-paragraph-link"><span class="named-paragraph">Give meaning to mean</span><span class="named-paragraph-number">1.6</span></a></span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax">}</span>
|
|
</pre>
|
|
<p class="commentary firstcommentary"><a id="SP1_1" class="paragraph-anchor"></a><b>§1.1. </b>"Regular" meanings involve relations between two values: for example, carrying
|
|
and numerical greater-than are both regular meanings, of the verbs "to carry"
|
|
and <span class="extract"><span class="extract-syntax">></span></span> respectively.
|
|
</p>
|
|
|
|
<p class="commentary">"Special" meanings are different. The noun phrases need not represent values,
|
|
there need not be two of them, and the meaning can have internal significance
|
|
to the Inform compiler. For example,
|
|
</p>
|
|
|
|
<blockquote>
|
|
<p>Black king chess piece translates into Unicode as 9818.</p>
|
|
</blockquote>
|
|
|
|
<p class="commentary">is one of three special meanings of "to translate into". The <a href="../linguistics-module/index.html" class="internal">linguistics</a>
|
|
module decides which if any is meant in a given case by calling the "special
|
|
meaning functions" to see which if any wants to accept the sentence in question.
|
|
</p>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP1_2" class="paragraph-anchor"></a><b>§1.2. </b>When the <a href="../linguistics-module/index.html" class="internal">linguistics</a> module looks for a primary verb, it may find
|
|
multiple candidates: consider "fruit flies like a banana", where "flies" and
|
|
"like" are both candidate verbs. We decide by (a) ranking verbs in tiers by
|
|
"priority number", and failing that (b) choosing the leftmost. Priority 0
|
|
verbs are never considered, but otherwise low priority numbers beat higher.
|
|
(See <a href="../linguistics-module/3-vu.html" class="internal">Verb Usages (in linguistics)</a>.)
|
|
</p>
|
|
|
|
<p class="commentary">Inform adopts the following convention for the priority of regular meanings:
|
|
</p>
|
|
|
|
<ul class="items"><li>(a) Regular "to have" has priority 1.
|
|
</li><li>(b) Regular "to be" has priority 2.
|
|
</li><li>(c) Otherwise, regular verbs in the language of the source text have priority 4.
|
|
</li><li>(d) And regular verbs in some other language have priority 5.
|
|
</li></ul>
|
|
<p class="commentary">As can be seen below, special meanings have priorities between 1 and 4. Note
|
|
that "to mean" itself has both a special meaning (priority 3) and a regular
|
|
meaning (priority 4). This is why the sentence:
|
|
</p>
|
|
|
|
<blockquote>
|
|
<p>The verb to mean means the meaning relation.</p>
|
|
</blockquote>
|
|
|
|
<p class="commentary">is not circular. It uses the special meaning of "mean" (priority 3) to create
|
|
the regular one (4).
|
|
</p>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP1_3" class="paragraph-anchor"></a><b>§1.3. </b>So, then, here are the core module's special meanings. Just like regular
|
|
meanings, which have names like "containment relation", special meanings have
|
|
names. But as these names are only used in early boot sentences in the
|
|
<a href="../basic_inform/index.html" class="internal">basic_inform</a> extension, the user never sees them. They are required to
|
|
be a single word, and are hyphenated.
|
|
</p>
|
|
|
|
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Create the special meanings</span><span class="named-paragraph-number">1.3</span></span><span class="comment-syntax"> =</span>
|
|
</p>
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="3-nrr.html#SP2" class="function-link"><span class="function-syntax">RelationRequests::new_relation_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"new-relation"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="3-rpr.html#SP5" class="function-link"><span class="function-syntax">RulePlacement::substitutes_for_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"rule-substitutes-for"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="3-rpr.html#SP9" class="function-link"><span class="function-syntax">RulePlacement::does_nothing_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"rule-does-nothing"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="3-rpr.html#SP10" class="function-link"><span class="function-syntax">RulePlacement::does_nothing_if_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"rule-does-nothing-if"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="3-rpr.html#SP11" class="function-link"><span class="function-syntax">RulePlacement::does_nothing_unless_SMF</span></a><span class="plain-syntax">,</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"rule-does-nothing-unless"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="3-tr.html#SP4" class="function-link"><span class="function-syntax">Translations::translates_into_unicode_as_SMF</span></a><span class="plain-syntax">,</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"translates-into-unicode"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="3-tr.html#SP8" class="function-link"><span class="function-syntax">Translations::translates_into_Inter_as_SMF</span></a><span class="plain-syntax">,</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"translates-into-i6"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="3-tr.html#SP2" class="function-link"><span class="function-syntax">Translations::translates_into_language_as_SMF</span></a><span class="plain-syntax">,</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"translates-into-language"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="3-tr2.html#SP1" class="function-link"><span class="function-syntax">TestRequests::test_with_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"test-with"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="3-nvr.html#SP2" class="function-link"><span class="function-syntax">NewVerbRequests::new_verb_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"new-verb"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="3-pr.html#SP2" class="function-link"><span class="function-syntax">Plurals::plural_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"new-plural"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="3-nar.html#SP2" class="function-link"><span class="function-syntax">ActivityRequests::new_activity_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"new-activity"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="3-nar2.html#SP2" class="function-link"><span class="function-syntax">NewAdjectiveRequests::new_adjective_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"new-adjective"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="3-npr.html#SP2" class="function-link"><span class="function-syntax">NewPropertyRequests::either_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"new-either-or"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="3-dbtr.html#SP3" class="function-link"><span class="function-syntax">DefineByTable::defined_by_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"defined-by-table"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="3-rpr.html#SP2" class="function-link"><span class="function-syntax">RulePlacement::listed_in_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"rule-listed-in"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="3-npr.html#SP3" class="function-link"><span class="function-syntax">NewPropertyRequests::optional_either_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"can-be"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">meaning_of_mean</span><span class="plain-syntax"> = </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="3-nvr.html#SP4" class="function-link"><span class="function-syntax">NewVerbRequests::verb_means_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"verb-means"</span><span class="plain-syntax">, </span><span class="constant-syntax">3</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="3-nlpr.html#SP2" class="function-link"><span class="function-syntax">LPRequests::specifies_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"specifies-notation"</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="3-nuor.html#SP3" class="function-link"><span class="function-syntax">NewUseOptions::use_translates_as_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"use-translates"</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="3-uor.html#SP1" class="function-link"><span class="function-syntax">UseOptions::use_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"use"</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="3-dlr.html#SP2" class="function-link"><span class="function-syntax">Sentences::DLRs::include_in_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"include-in"</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="3-dlr.html#SP2" class="function-link"><span class="function-syntax">Sentences::DLRs::omit_from_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"omit-from"</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginCalls::make_special_meanings</span><span class="plain-syntax">();</span>
|
|
</pre>
|
|
<ul class="endnotetexts"><li>This code is used in <a href="2-bv.html#SP1">§1</a>.</li></ul>
|
|
<p class="commentary firstcommentary"><a id="SP1_4" class="paragraph-anchor"></a><b>§1.4. </b>We need the English infinitive forms of two verbs to get started. In each
|
|
case we use the <a href="../inflections-module/index.html" class="internal">inflections</a> module to conjugate them — i.e., to generate
|
|
all the other forms, "is", "did not mean" and so on — and then hand them to
|
|
the <a href="../linguistics-module/index.html" class="internal">linguistics</a> module to add to its stock of known verbs. (It starts out
|
|
with none, so these are initially the only two.)
|
|
</p>
|
|
|
|
<p class="commentary">We need to create "to be" first because (a) it is the only copular verb in
|
|
Inform, and there is no way to create a copular verb using Inform source text;
|
|
and (b) because this enables us to conjugate forms of "mean" such as "X is
|
|
meant by" — note the use of "is".
|
|
</p>
|
|
|
|
<pre class="Preform-displayed-code all-displayed-code code-font">
|
|
<span class="Preform-function-syntax"><bootstrap-verb></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
|
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">be</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
|
|
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">mean</span>
|
|
</pre>
|
|
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
|
<p class="commentary firstcommentary"><a id="SP1_5" class="paragraph-anchor"></a><b>§1.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Create the verbs to be and to mean</span><span class="named-paragraph-number">1.5</span></span><span class="Preform-comment-syntax"> =</span>
|
|
</p>
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">word_assemblage</span><span class="plain-syntax"> </span><span class="identifier-syntax">infinitive</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PreformUtilities::wording</span><span class="plain-syntax">(</span><span class="function-syntax"><bootstrap-verb></span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">verb_conjugation</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Conjugation::conjugate</span><span class="plain-syntax">(</span><span class="identifier-syntax">infinitive</span><span class="plain-syntax">, </span><span class="identifier-syntax">DefaultLanguage::get</span><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">));</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">verb</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to_be</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Verbs::new_verb</span><span class="plain-syntax">(</span><span class="identifier-syntax">vc</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">); </span><span class="comment-syntax"> note that "to be" is created as copular</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">vc</span><span class="plain-syntax">-></span><span class="identifier-syntax">vc_conjugates</span><span class="plain-syntax"> = </span><span class="identifier-syntax">to_be</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">VerbUsages::register_all_usages_of_verb</span><span class="plain-syntax">(</span><span class="identifier-syntax">to_be</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">infinitive</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PreformUtilities::wording</span><span class="plain-syntax">(</span><span class="function-syntax"><bootstrap-verb></span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">vc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Conjugation::conjugate</span><span class="plain-syntax">(</span><span class="identifier-syntax">infinitive</span><span class="plain-syntax">, </span><span class="identifier-syntax">DefaultLanguage::get</span><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">));</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">to_mean</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Verbs::new_verb</span><span class="plain-syntax">(</span><span class="identifier-syntax">vc</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">); </span><span class="comment-syntax"> but "to mean" is not</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">vc</span><span class="plain-syntax">-></span><span class="identifier-syntax">vc_conjugates</span><span class="plain-syntax"> = </span><span class="identifier-syntax">to_mean</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">VerbUsages::register_all_usages_of_verb</span><span class="plain-syntax">(</span><span class="identifier-syntax">to_mean</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="constant-syntax">3</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
|
</pre>
|
|
<ul class="endnotetexts"><li>This code is used in <a href="2-bv.html#SP1">§1</a>.</li></ul>
|
|
<p class="commentary firstcommentary"><a id="SP1_6" class="paragraph-anchor"></a><b>§1.6. </b>Those two verbs are now part of our linguistic stock, but do not yet mean
|
|
anything. We need to give the build-in "verb-means" meaning to "to mean":
|
|
</p>
|
|
|
|
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Give meaning to mean</span><span class="named-paragraph-number">1.6</span></span><span class="comment-syntax"> =</span>
|
|
</p>
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">to_mean</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">meaning_of_mean</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"could not make to mean"</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Verbs::add_form</span><span class="plain-syntax">(</span><span class="identifier-syntax">to_mean</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">VerbMeanings::special</span><span class="plain-syntax">(</span><span class="identifier-syntax">meaning_of_mean</span><span class="plain-syntax">), </span><span class="identifier-syntax">SVO_FS_BIT</span><span class="plain-syntax">);</span>
|
|
</pre>
|
|
<ul class="endnotetexts"><li>This code is used in <a href="2-bv.html#SP1">§1</a>.</li></ul>
|
|
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. Built-in relation names. </b>These have to be defined somewhere, and it may as well be here.
|
|
</p>
|
|
|
|
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">EQUALITY_RELATION_NAME</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span>
|
|
<span class="definition-keyword">define</span> <span class="constant-syntax">UNIVERSAL_RELATION_NAME</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span>
|
|
<span class="definition-keyword">define</span> <span class="constant-syntax">MEANING_RELATION_NAME</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span>
|
|
<span class="definition-keyword">define</span> <span class="constant-syntax">PROVISION_RELATION_NAME</span><span class="plain-syntax"> </span><span class="constant-syntax">3</span>
|
|
<span class="definition-keyword">define</span> <span class="constant-syntax">GE_RELATION_NAME</span><span class="plain-syntax"> </span><span class="constant-syntax">4</span>
|
|
<span class="definition-keyword">define</span> <span class="constant-syntax">GT_RELATION_NAME</span><span class="plain-syntax"> </span><span class="constant-syntax">5</span>
|
|
<span class="definition-keyword">define</span> <span class="constant-syntax">LE_RELATION_NAME</span><span class="plain-syntax"> </span><span class="constant-syntax">6</span>
|
|
<span class="definition-keyword">define</span> <span class="constant-syntax">LT_RELATION_NAME</span><span class="plain-syntax"> </span><span class="constant-syntax">7</span>
|
|
<span class="definition-keyword">define</span> <span class="constant-syntax">ADJACENCY_RELATION_NAME</span><span class="plain-syntax"> </span><span class="constant-syntax">8</span>
|
|
<span class="definition-keyword">define</span> <span class="constant-syntax">REGIONAL_CONTAINMENT_RELATION_NAME</span><span class="plain-syntax"> </span><span class="constant-syntax">9</span>
|
|
<span class="definition-keyword">define</span> <span class="constant-syntax">CONTAINMENT_RELATION_NAME</span><span class="plain-syntax"> </span><span class="constant-syntax">10</span>
|
|
<span class="definition-keyword">define</span> <span class="constant-syntax">SUPPORT_RELATION_NAME</span><span class="plain-syntax"> </span><span class="constant-syntax">11</span>
|
|
<span class="definition-keyword">define</span> <span class="constant-syntax">INCORPORATION_RELATION_NAME</span><span class="plain-syntax"> </span><span class="constant-syntax">12</span>
|
|
<span class="definition-keyword">define</span> <span class="constant-syntax">CARRYING_RELATION_NAME</span><span class="plain-syntax"> </span><span class="constant-syntax">13</span>
|
|
<span class="definition-keyword">define</span> <span class="constant-syntax">HOLDING_RELATION_NAME</span><span class="plain-syntax"> </span><span class="constant-syntax">14</span>
|
|
<span class="definition-keyword">define</span> <span class="constant-syntax">WEARING_RELATION_NAME</span><span class="plain-syntax"> </span><span class="constant-syntax">15</span>
|
|
<span class="definition-keyword">define</span> <span class="constant-syntax">POSSESSION_RELATION_NAME</span><span class="plain-syntax"> </span><span class="constant-syntax">16</span>
|
|
<span class="definition-keyword">define</span> <span class="constant-syntax">VISIBILITY_RELATION_NAME</span><span class="plain-syntax"> </span><span class="constant-syntax">17</span>
|
|
<span class="definition-keyword">define</span> <span class="constant-syntax">TOUCHABILITY_RELATION_NAME</span><span class="plain-syntax"> </span><span class="constant-syntax">18</span>
|
|
<span class="definition-keyword">define</span> <span class="constant-syntax">CONCEALMENT_RELATION_NAME</span><span class="plain-syntax"> </span><span class="constant-syntax">19</span>
|
|
<span class="definition-keyword">define</span> <span class="constant-syntax">ENCLOSURE_RELATION_NAME</span><span class="plain-syntax"> </span><span class="constant-syntax">20</span>
|
|
<span class="definition-keyword">define</span> <span class="constant-syntax">ROOM_CONTAINMENT_RELATION_NAME</span><span class="plain-syntax"> </span><span class="constant-syntax">21</span>
|
|
</pre>
|
|
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>These are the English names of the built-in relations. The use of hyphenation
|
|
here is a fossil from the times when Inform allowed only single-word relation
|
|
names; but it doesn't seem worth changing, especially as the hyphenated
|
|
relations are almost never needed for anything. All the same, translators into
|
|
other languages may as well drop the hyphens.
|
|
</p>
|
|
|
|
<pre class="Preform-displayed-code all-displayed-code code-font">
|
|
<span class="Preform-function-syntax"><relation-names></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
|
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">equality</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
|
|
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">universal</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
|
|
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">meaning</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
|
|
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">provision</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
|
|
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">numerically-greater-than-or-equal-to</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
|
|
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">numerically-greater-than</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
|
|
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">numerically-less-than-or-equal-to</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
|
|
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">numerically-less-than</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
|
|
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">adjacency</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
|
|
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">regional-containment</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
|
|
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">containment</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
|
|
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">support</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
|
|
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">incorporation</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
|
|
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">carrying</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
|
|
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">holding</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
|
|
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">wearing</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
|
|
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">possession</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
|
|
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">visibility</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
|
|
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">touchability</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
|
|
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">concealment</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
|
|
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">enclosure</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
|
|
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">room-containment</span>
|
|
</pre>
|
|
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
|
<nav role="progress"><div class="progresscontainer">
|
|
<ul class="progressbar"><li class="progressprev"><a href="1-am.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-am.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresscurrent">bv</li><li class="progresssection"><a href="2-ptmn.html">ptmn</a></li><li class="progresssection"><a href="2-ar.html">ar</a></li><li class="progresssection"><a href="2-cs.html">cs</a></li><li class="progresssection"><a href="2-ps.html">ps</a></li><li class="progresssection"><a href="2-is.html">is</a></li><li class="progresschapter"><a href="3-dlr.html">3</a></li><li class="progresschapter"><a href="4-nr.html">4</a></li><li class="progresschapter"><a href="5-id.html">5</a></li><li class="progresschapter"><a href="6-rls.html">6</a></li><li class="progresschapter"><a href="7-tc.html">7</a></li><li class="progresschapter"><a href="8-kpr.html">8</a></li><li class="progressnext"><a href="2-ptmn.html">❯</a></li></ul></div>
|
|
</nav><!--End of weave-->
|
|
|
|
</main>
|
|
</body>
|
|
</html>
|
|
|