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

124 lines
9.5 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>1/im</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 '2/ld' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">inflections</a></li><li><a href="index.html#2">Chapter 2: Machinery</a></li><li><b>Linguistic Definitions</b></li></ul><p class="purpose">Some basic linguistic constants are defined.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Constants</a></li><li><a href="#SP7">&#167;7. A default language</a></li></ul><hr class="tocbar">
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Constants. </b>First, we support three genders:
</p>
<pre class="definitions">
<span class="definitionkeyword">define</span> <span class="constant">NO_KNOWN_GENDERS</span><span class="plain"> 3</span>
<span class="definitionkeyword">define</span> <span class="constant">NEUTER_GENDER</span><span class="plain"> 1 </span> <span class="comment">can be used as Scandinavian "common gender"</span>
<span class="definitionkeyword">define</span> <span class="constant">MASCULINE_GENDER</span><span class="plain"> 2</span>
<span class="definitionkeyword">define</span> <span class="constant">FEMININE_GENDER</span><span class="plain"> 3</span>
</pre>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. </b>There are six "persons":
</p>
<pre class="definitions">
<span class="definitionkeyword">define</span> <span class="constant">NO_KNOWN_PERSONS</span><span class="plain"> 6</span>
<span class="definitionkeyword">define</span> <span class="constant">FIRST_PERSON_SINGULAR</span><span class="plain"> 0</span>
<span class="definitionkeyword">define</span> <span class="constant">SECOND_PERSON_SINGULAR</span><span class="plain"> 1</span>
<span class="definitionkeyword">define</span> <span class="constant">THIRD_PERSON_SINGULAR</span><span class="plain"> 2</span>
<span class="definitionkeyword">define</span> <span class="constant">FIRST_PERSON_PLURAL</span><span class="plain"> 3</span>
<span class="definitionkeyword">define</span> <span class="constant">SECOND_PERSON_PLURAL</span><span class="plain"> 4</span>
<span class="definitionkeyword">define</span> <span class="constant">THIRD_PERSON_PLURAL</span><span class="plain"> 5</span>
</pre>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. </b>And two numbers:
</p>
<pre class="definitions">
<span class="definitionkeyword">define</span> <span class="constant">NO_KNOWN_NUMBERS</span><span class="plain"> 2</span>
<span class="definitionkeyword">define</span> <span class="constant">SINGULAR_NUMBER</span><span class="plain"> 0</span>
<span class="definitionkeyword">define</span> <span class="constant">PLURAL_NUMBER</span><span class="plain"> 1</span>
</pre>
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. </b>And two moods:
</p>
<pre class="definitions">
<span class="definitionkeyword">define</span> <span class="constant">NO_KNOWN_MOODS</span><span class="plain"> 2</span>
<span class="definitionkeyword">define</span> <span class="constant">ACTIVE_MOOD</span><span class="plain"> 0</span>
<span class="definitionkeyword">define</span> <span class="constant">PASSIVE_MOOD</span><span class="plain"> 1</span>
</pre>
<p class="inwebparagraph"><a id="SP5"></a><b>&#167;5. </b>25 cases ought to be plenty, though some languages are pretty scary this
way: Hungarian, for example, has 18. We only require one case to exist, the
nominative, which is required to be case 0.
</p>
<p class="inwebparagraph">But this covers a pretty decent selection. Note that, as with the
persons above, the sequence corresponds to the defined constants in the
English Language extension, which we assume will be followed by other
languages.
</p>
<pre class="definitions">
<span class="definitionkeyword">define</span> <span class="constant">MAX_GRAMMATICAL_CASES</span><span class="plain"> 25</span>
<span class="definitionkeyword">define</span> <span class="constant">NOMINATIVE_CASE</span><span class="plain"> 0</span>
</pre>
<p class="inwebparagraph"><a id="SP6"></a><b>&#167;6. </b>There are at least five tenses, the first four of which are used by Inform
in English. Some languages can use optional extras; French, for example, uses
tense 5 for the past historic.
</p>
<pre class="definitions">
<span class="definitionkeyword">define</span> <span class="constant">NO_KNOWN_TENSES</span><span class="plain"> 7 </span> <span class="comment">allowing for two optional extras in non-English languages</span>
<span class="definitionkeyword">define</span> <span class="constant">IS_TENSE</span><span class="plain"> 0 </span> <span class="comment">Present</span>
<span class="definitionkeyword">define</span> <span class="constant">WAS_TENSE</span><span class="plain"> 1 </span> <span class="comment">Past</span>
<span class="definitionkeyword">define</span> <span class="constant">HASBEEN_TENSE</span><span class="plain"> 2 </span> <span class="comment">Present perfect</span>
<span class="definitionkeyword">define</span> <span class="constant">HADBEEN_TENSE</span><span class="plain"> 3 </span> <span class="comment">Past perfect</span>
<span class="definitionkeyword">define</span> <span class="constant">WILLBE_TENSE</span><span class="plain"> 4 </span> <span class="comment">Future (not used in assertions or conditions)</span>
</pre>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Linguistics::log_tense_number</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">t</span><span class="plain">) {</span>
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">t</span><span class="plain">) {</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">IS_TENSE</span><span class="plain">: </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"IS_TENSE"</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">WAS_TENSE</span><span class="plain">: </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"WAS_TENSE"</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">HASBEEN_TENSE</span><span class="plain">: </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"HASBEEN_TENSE"</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">HADBEEN_TENSE</span><span class="plain">: </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"HADBEEN_TENSE"</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">WILLBE_TENSE</span><span class="plain">: </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"WILLBE_TENSE"</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> 5: </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"CUSTOM1_TENSE"</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> 6: </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"CUSTOM2_TENSE"</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">default</span><span class="plain">: </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"&lt;invalid-tense&gt;"</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function Linguistics::log_tense_number appears nowhere else.</p>
<p class="inwebparagraph"><a id="SP7"></a><b>&#167;7. A default language. </b>The following is in effect also a constant; Inform sets it to English early
in its run.
</p>
<pre class="display">
<span class="identifier">PREFORM_LANGUAGE_TYPE</span><span class="plain"> *</span><span class="identifier">English_language</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">; </span> <span class="comment">until created, early in run</span>
</pre>
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><i>(This section begins Chapter 2: Machinery.)</i></li><li><a href="2-np.html">Continue with 'Non-Parsing Preform'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>