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
Graham Nelson 1268a0f40e Colonised
2020-04-14 17:56:54 +01:00

169 lines
13 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Linguistic Definitions</title>
<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="../inweb.css" rel="stylesheet" rev="stylesheet" type="text/css">
</head>
<body>
<nav role="navigation">
<h1><a href="../index.html">
<img src="../docs-src/Figures/Inform.png" height=72">
</a></h1>
<ul><li><a href="../compiler.html">compiler tools</a></li>
<li><a href="../other.html">other tools</a></li>
<li><a href="../extensions.html">extensions and kits</a></li>
<li><a href="../units.html">unit test tools</a></li>
</ul><h2>Compiler Webs</h2><ul>
<li><a href="../inbuild/index.html">inbuild</a></li>
<li><a href="../inform7/index.html">inform7</a></li>
<li><a href="../inter/index.html">inter</a></li>
</ul><h2>Inbuild Modules</h2><ul>
<li><a href="../supervisor-module/index.html">supervisor</a></li>
</ul><h2>Inform7 Modules</h2><ul>
<li><a href="../core-module/index.html">core</a></li>
<li><a href="index.html"><span class="selectedlink">inflections</span></a></li>
<li><a href="../linguistics-module/index.html">linguistics</a></li>
<li><a href="../kinds-module/index.html">kinds</a></li>
<li><a href="../if-module/index.html">if</a></li>
<li><a href="../multimedia-module/index.html">multimedia</a></li>
<li><a href="../problems-module/index.html">problems</a></li>
<li><a href="../index-module/index.html">index</a></li>
</ul><h2>Inter Modules</h2><ul>
<li><a href="../bytecode-module/index.html">bytecode</a></li>
<li><a href="../building-module/index.html">building</a></li>
<li><a href="../codegen-module/index.html">codegen</a></li>
</ul><h2>Shared Modules</h2><ul>
<li><a href="../arch-module/index.html">arch</a></li>
<li><a href="../syntax-module/index.html">syntax</a></li>
<li><a href="../words-module/index.html">words</a></li>
<li><a href="../html-module/index.html">html</a></li>
<li><a href="../../../inweb/docs/foundation-module/index.html">foundation</a></li>
</ul>
</nav>
<main role="main">
<!--Weave of 'Linguistic Definitions' generated by 7-->
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7 Modules</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"> </span><span class="constant">3</span>
<span class="definitionkeyword">define</span> <span class="constant">NEUTER_GENDER</span><span class="plain"> </span><span class="constant">1</span><span class="plain"> </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"> </span><span class="constant">2</span>
<span class="definitionkeyword">define</span> <span class="constant">FEMININE_GENDER</span><span class="plain"> </span><span class="constant">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"> </span><span class="constant">6</span>
<span class="definitionkeyword">define</span> <span class="constant">FIRST_PERSON_SINGULAR</span><span class="plain"> </span><span class="constant">0</span>
<span class="definitionkeyword">define</span> <span class="constant">SECOND_PERSON_SINGULAR</span><span class="plain"> </span><span class="constant">1</span>
<span class="definitionkeyword">define</span> <span class="constant">THIRD_PERSON_SINGULAR</span><span class="plain"> </span><span class="constant">2</span>
<span class="definitionkeyword">define</span> <span class="constant">FIRST_PERSON_PLURAL</span><span class="plain"> </span><span class="constant">3</span>
<span class="definitionkeyword">define</span> <span class="constant">SECOND_PERSON_PLURAL</span><span class="plain"> </span><span class="constant">4</span>
<span class="definitionkeyword">define</span> <span class="constant">THIRD_PERSON_PLURAL</span><span class="plain"> </span><span class="constant">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"> </span><span class="constant">2</span>
<span class="definitionkeyword">define</span> <span class="constant">SINGULAR_NUMBER</span><span class="plain"> </span><span class="constant">0</span>
<span class="definitionkeyword">define</span> <span class="constant">PLURAL_NUMBER</span><span class="plain"> </span><span class="constant">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"> </span><span class="constant">2</span>
<span class="definitionkeyword">define</span> <span class="constant">ACTIVE_MOOD</span><span class="plain"> </span><span class="constant">0</span>
<span class="definitionkeyword">define</span> <span class="constant">PASSIVE_MOOD</span><span class="plain"> </span><span class="constant">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"> </span><span class="constant">25</span>
<span class="definitionkeyword">define</span> <span class="constant">NOMINATIVE_CASE</span><span class="plain"> </span><span class="constant">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"> </span><span class="constant">7</span><span class="plain"> </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"> </span><span class="constant">0</span><span class="plain"> </span><span class="comment"> Present</span>
<span class="definitionkeyword">define</span> <span class="constant">WAS_TENSE</span><span class="plain"> </span><span class="constant">1</span><span class="plain"> </span><span class="comment"> Past</span>
<span class="definitionkeyword">define</span> <span class="constant">HASBEEN_TENSE</span><span class="plain"> </span><span class="constant">2</span><span class="plain"> </span><span class="comment"> Present perfect</span>
<span class="definitionkeyword">define</span> <span class="constant">HADBEEN_TENSE</span><span class="plain"> </span><span class="constant">3</span><span class="plain"> </span><span class="comment"> Past perfect</span>
<span class="definitionkeyword">define</span> <span class="constant">WILLBE_TENSE</span><span class="plain"> </span><span class="constant">4</span><span class="plain"> </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<button class="popup" onclick="togglePopup('usagePopup2')">...<span class="popuptext" id="usagePopup2">Usage of <b>Linguistics::log_tense_number</b>:<br>none</span></button></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="identifier">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="identifier">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="identifier">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="identifier">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="identifier">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"> </span><span class="constant">5</span><span class="plain">: </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"> </span><span class="constant">6</span><span class="plain">: </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="identifier">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="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-->
<script>
function togglePopup(material_id) {
var popup = document.getElementById(material_id);
popup.classList.toggle("show");
}
</script>
<link href="Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
</main>
</body>
</html>