mirror of
https://github.com/ganelson/inform.git
synced 2024-07-08 18:14:21 +03:00
338 lines
17 KiB
HTML
338 lines
17 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
<html>
|
|
<head>
|
|
<title>S/gt</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 'S/lt' generated by 7-->
|
|
<ul class="crumbs"><li><a href="../webs.html">★</a></li><li><a href="index.html">standard_rules Template Library</a></li><li><b>Language Template</b></li></ul><p class="purpose">The fundamental definitions needed by the parser and the verb library in order to specify the language of play -- that is, the language used for communications between the story file and the player.</p>
|
|
|
|
<ul class="toc"><li><a href="#SP1">§1. Vocabulary</a></li><li><a href="#SP2">§2. Pronouns</a></li><li><a href="#SP3">§3. Descriptors</a></li><li><a href="#SP4">§4. Numbers</a></li><li><a href="#SP5">§5. Time</a></li><li><a href="#SP6">§6. Directions</a></li><li><a href="#SP7">§7. Translation</a></li><li><a href="#SP8">§8. Articles</a></li><li><a href="#SP9">§9. Commands</a></li><li><a href="#SP10">§10. Stubs</a></li></ul><hr class="tocbar">
|
|
|
|
<p class="inwebparagraph"><a id="SP1"></a><b>§1. Vocabulary. </b></p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="plain">Constant AGAIN1__WD = 'again';</span>
|
|
<span class="plain">Constant AGAIN2__WD = 'g//';</span>
|
|
<span class="plain">Constant AGAIN3__WD = 'again';</span>
|
|
<span class="plain">Constant OOPS1__WD = 'oops';</span>
|
|
<span class="plain">Constant OOPS2__WD = 'o//';</span>
|
|
<span class="plain">Constant OOPS3__WD = 'oops';</span>
|
|
<span class="plain">Constant UNDO1__WD = 'undo';</span>
|
|
<span class="plain">Constant UNDO2__WD = 'undo';</span>
|
|
<span class="plain">Constant UNDO3__WD = 'undo';</span>
|
|
|
|
<span class="plain">Constant ALL1__WD = 'all';</span>
|
|
<span class="plain">Constant ALL2__WD = 'each';</span>
|
|
<span class="plain">Constant ALL3__WD = 'every';</span>
|
|
<span class="plain">Constant ALL4__WD = 'everything';</span>
|
|
<span class="plain">Constant ALL5__WD = 'both';</span>
|
|
<span class="plain">Constant AND1__WD = 'and';</span>
|
|
<span class="plain">Constant AND2__WD = 'and';</span>
|
|
<span class="plain">Constant AND3__WD = 'and';</span>
|
|
<span class="plain">Constant BUT1__WD = 'but';</span>
|
|
<span class="plain">Constant BUT2__WD = 'except';</span>
|
|
<span class="plain">Constant BUT3__WD = 'but';</span>
|
|
<span class="plain">Constant ME1__WD = 'me';</span>
|
|
<span class="plain">Constant ME2__WD = 'myself';</span>
|
|
<span class="plain">Constant ME3__WD = 'self';</span>
|
|
<span class="plain">Constant OF1__WD = 'of';</span>
|
|
<span class="plain">Constant OF2__WD = 'of';</span>
|
|
<span class="plain">Constant OF3__WD = 'of';</span>
|
|
<span class="plain">Constant OF4__WD = 'of';</span>
|
|
<span class="plain">Constant OTHER1__WD = 'another';</span>
|
|
<span class="plain">Constant OTHER2__WD = 'other';</span>
|
|
<span class="plain">Constant OTHER3__WD = 'other';</span>
|
|
<span class="plain">Constant THEN1__WD = 'then';</span>
|
|
<span class="plain">Constant THEN2__WD = 'then';</span>
|
|
<span class="plain">Constant THEN3__WD = 'then';</span>
|
|
|
|
<span class="plain">Constant NO1__WD = 'n//';</span>
|
|
<span class="plain">Constant NO2__WD = 'no';</span>
|
|
<span class="plain">Constant NO3__WD = 'no';</span>
|
|
<span class="plain">Constant YES1__WD = 'y//';</span>
|
|
<span class="plain">Constant YES2__WD = 'yes';</span>
|
|
<span class="plain">Constant YES3__WD = 'yes';</span>
|
|
|
|
<span class="plain">Constant AMUSING__WD = 'amusing';</span>
|
|
<span class="plain">Constant FULLSCORE1__WD = 'fullscore';</span>
|
|
<span class="plain">Constant FULLSCORE2__WD = 'full';</span>
|
|
<span class="plain">Constant QUIT1__WD = 'q//';</span>
|
|
<span class="plain">Constant QUIT2__WD = 'quit';</span>
|
|
<span class="plain">Constant RESTART__WD = 'restart';</span>
|
|
<span class="plain">Constant RESTORE__WD = 'restore';</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP2"></a><b>§2. Pronouns. </b></p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="plain">Array LanguagePronouns table</span>
|
|
|
|
<span class="plain">! word possible GNAs connected</span>
|
|
<span class="plain">! to follow: to:</span>
|
|
<span class="plain">! a i</span>
|
|
<span class="plain">! s p s p</span>
|
|
<span class="plain">! mfnmfnmfnmfn</span>
|
|
|
|
<span class="plain">'it' $$001000111000 NULL</span>
|
|
<span class="plain">'him' $$100000000000 NULL</span>
|
|
<span class="plain">'her' $$010000000000 NULL</span>
|
|
<span class="plain">'them' $$000111000111 NULL;</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP3"></a><b>§3. Descriptors. </b></p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="plain">Array LanguageDescriptors table</span>
|
|
|
|
<span class="plain">! word possible GNAs descriptor connected</span>
|
|
<span class="plain">! to follow: type: to:</span>
|
|
<span class="plain">! a i</span>
|
|
<span class="plain">! s p s p</span>
|
|
<span class="plain">! mfnmfnmfnmfn</span>
|
|
|
|
<span class="plain">'my' $$111111111111 POSSESS_PK 0</span>
|
|
<span class="plain">'this' $$111111111111 POSSESS_PK 0</span>
|
|
<span class="plain">'these' $$000111000111 POSSESS_PK 0</span>
|
|
<span class="plain">'that' $$111111111111 POSSESS_PK 1</span>
|
|
<span class="plain">'those' $$000111000111 POSSESS_PK 1</span>
|
|
<span class="plain">'his' $$111111111111 POSSESS_PK 'him'</span>
|
|
<span class="plain">'her' $$111111111111 POSSESS_PK 'her'</span>
|
|
<span class="plain">'their' $$111111111111 POSSESS_PK 'them'</span>
|
|
<span class="plain">'its' $$111111111111 POSSESS_PK 'it'</span>
|
|
<span class="plain">'the' $$111111111111 DEFART_PK NULL</span>
|
|
<span class="plain">'a//' $$111000111000 INDEFART_PK NULL</span>
|
|
<span class="plain">'an' $$111000111000 INDEFART_PK NULL</span>
|
|
<span class="plain">'some' $$000111000111 INDEFART_PK NULL</span>
|
|
<span class="plain">'lit' $$111111111111 light NULL</span>
|
|
<span class="plain">'lighted' $$111111111111 light NULL</span>
|
|
<span class="plain">'unlit' $$111111111111 (-light) NULL;</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP4"></a><b>§4. Numbers. </b></p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="plain">Array LanguageNumbers table</span>
|
|
<span class="plain">'one' 1 'two' 2 'three' 3 'four' 4 'five' 5</span>
|
|
<span class="plain">'six' 6 'seven' 7 'eight' 8 'nine' 9 'ten' 10</span>
|
|
<span class="plain">'eleven' 11 'twelve' 12 'thirteen' 13 'fourteen' 14 'fifteen' 15</span>
|
|
<span class="plain">'sixteen' 16 'seventeen' 17 'eighteen' 18 'nineteen' 19 'twenty' 20</span>
|
|
<span class="plain">'twenty-one' 21 'twenty-two' 22 'twenty-three' 23 'twenty-four' 24</span>
|
|
<span class="plain">'twenty-five' 25 'twenty-six' 26 'twenty-seven' 27 'twenty-eight' 28</span>
|
|
<span class="plain">'twenty-nine' 29 'thirty' 30</span>
|
|
<span class="plain">;</span>
|
|
|
|
<span class="plain">[ LanguageNumber n f;</span>
|
|
<span class="plain">if (n == 0) { print "zero"; rfalse; }</span>
|
|
<span class="plain">if (n < 0) { print "minus "; n = -n; }</span>
|
|
<span class="plain">#Iftrue (WORDSIZE == 4);</span>
|
|
<span class="plain">if (n >= 1000000000) {</span>
|
|
<span class="plain">if (f == 1) print ", ";</span>
|
|
<span class="plain">print (LanguageNumber) n/1000000000, " billion"; n = n%1000000000; f = 1;</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">if (n >= 1000000) {</span>
|
|
<span class="plain">if (f == 1) print ", ";</span>
|
|
<span class="plain">print (LanguageNumber) n/1000000, " million"; n = n%1000000; f = 1;</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">#Endif;</span>
|
|
<span class="plain">if (n >= 1000) {</span>
|
|
<span class="plain">if (f == 1) print ", ";</span>
|
|
<span class="plain">print (LanguageNumber) n/1000, " thousand"; n = n%1000; f = 1;</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">if (n >= 100) {</span>
|
|
<span class="plain">if (f == 1) print ", ";</span>
|
|
<span class="plain">print (LanguageNumber) n/100, " hundred"; n = n%100; f = 1;</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">if (n == 0) rfalse;</span>
|
|
<span class="plain">if (TEMPLATE_CONFIGURATION_BITMAP & DIALECT_US_TCBIT) {</span>
|
|
<span class="plain">if (f == 1) print " ";</span>
|
|
<span class="plain">} else {</span>
|
|
<span class="plain">if (f == 1) print " and ";</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">if ((n >= 20) && (n<100)) {</span>
|
|
<span class="plain">switch (n/10) {</span>
|
|
<span class="plain">2: print "twenty";</span>
|
|
<span class="plain">3: print "thirty";</span>
|
|
<span class="plain">4: print "forty";</span>
|
|
<span class="plain">5: print "fifty";</span>
|
|
<span class="plain">6: print "sixty";</span>
|
|
<span class="plain">7: print "seventy";</span>
|
|
<span class="plain">8: print "eighty";</span>
|
|
<span class="plain">9: print "ninety";</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">if (n%10 ~= 0) print "-", (LanguageNumber) n%10;</span>
|
|
<span class="plain">} else {</span>
|
|
<span class="plain">switch (n) {</span>
|
|
<span class="plain">1: print "one";</span>
|
|
<span class="plain">2: print "two";</span>
|
|
<span class="plain">3: print "three";</span>
|
|
<span class="plain">4: print "four";</span>
|
|
<span class="plain">5: print "five";</span>
|
|
<span class="plain">6: print "six";</span>
|
|
<span class="plain">7: print "seven";</span>
|
|
<span class="plain">8: print "eight";</span>
|
|
<span class="plain">9: print "nine";</span>
|
|
<span class="plain">10: print "ten";</span>
|
|
<span class="plain">11: print "eleven";</span>
|
|
<span class="plain">12: print "twelve";</span>
|
|
<span class="plain">13: print "thirteen";</span>
|
|
<span class="plain">14: print "fourteen";</span>
|
|
<span class="plain">15: print "fifteen";</span>
|
|
<span class="plain">16: print "sixteen";</span>
|
|
<span class="plain">17: print "seventeen";</span>
|
|
<span class="plain">18: print "eighteen";</span>
|
|
<span class="plain">19: print "nineteen";</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">];</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP5"></a><b>§5. Time. </b></p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="plain">[ LanguageTimeOfDay hours mins i;</span>
|
|
<span class="plain">i = hours%12;</span>
|
|
<span class="plain">if (i == 0) i = 12;</span>
|
|
<span class="plain">if (i < 10) print " ";</span>
|
|
<span class="plain">print i, ":", mins/10, mins%10;</span>
|
|
<span class="plain">if ((hours/12) > 0) print " pm"; else print " am";</span>
|
|
<span class="plain">];</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP6"></a><b>§6. Directions. </b></p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="plain">[ LanguageDirection d;</span>
|
|
<span class="plain">print (name) d;</span>
|
|
<span class="plain">];</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP7"></a><b>§7. Translation. </b></p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="plain">[ LanguageToInformese; ];</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP8"></a><b>§8. Articles. </b></p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="plain">Constant LanguageAnimateGender = male;</span>
|
|
<span class="plain">Constant LanguageInanimateGender = neuter;</span>
|
|
|
|
<span class="plain">Constant LanguageContractionForms = 2; ! English has two:</span>
|
|
<span class="plain">! 0 = starting with a consonant</span>
|
|
<span class="plain">! 1 = starting with a vowel</span>
|
|
|
|
<span class="plain">[ LanguageContraction text;</span>
|
|
<span class="plain">if (text->0 == 'a' or 'e' or 'i' or 'o' or 'u'</span>
|
|
<span class="plain">or 'A' or 'E' or 'I' or 'O' or 'U') return 1;</span>
|
|
<span class="plain">return 0;</span>
|
|
<span class="plain">];</span>
|
|
|
|
<span class="plain">Array LanguageArticles --></span>
|
|
|
|
<span class="plain">! Contraction form 0: Contraction form 1:</span>
|
|
<span class="plain">! Cdef Def Indef Cdef Def Indef</span>
|
|
|
|
<span class="plain">"The " "the " "a " "The " "the " "an " ! Articles 0</span>
|
|
<span class="plain">"The " "the " "some " "The " "the " "some "; ! Articles 1</span>
|
|
|
|
<span class="plain">! a i</span>
|
|
<span class="plain">! s p s p</span>
|
|
<span class="plain">! m f n m f n m f n m f n</span>
|
|
|
|
<span class="plain">Array LanguageGNAsToArticles --> 0 0 0 1 1 1 0 0 0 1 1 1;</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP9"></a><b>§9. Commands. </b><code class="display"><span class="extract">LanguageVerbLikesAdverb</span></code> is called by <code class="display"><span class="extract">PrintCommand</span></code> when printing an <code class="display"><span class="extract">UPTO_PE</span></code>
|
|
error or an inference message. Words which are intransitive verbs, i.e.,
|
|
which require a direction name as an adverb ("walk west"), not a noun
|
|
("I only understood you as far as wanting to touch the ground"), should
|
|
cause the routine to return <code class="display"><span class="extract">true</span></code>.
|
|
</p>
|
|
|
|
<p class="inwebparagraph"><code class="display"><span class="extract">LanguageVerbMayBeName</span></code> is called by <code class="display"><span class="extract">NounDomain</span></code> when dealing with
|
|
the player's reply to a "Which do you mean, the short stick or the
|
|
long stick?" prompt from the parser. If the reply is another verb
|
|
(for example, LOOK) then then previous ambiguous command is discarded
|
|
unless it is one of these words which could be both a verb and an
|
|
adjective in a <code class="display"><span class="extract">name</span></code> property.
|
|
</p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="plain">[ LanguageVerb i;</span>
|
|
<span class="plain">switch (i) {</span>
|
|
<span class="plain">'i//','inv','inventory':</span>
|
|
<span class="plain">print "take inventory";</span>
|
|
<span class="plain">'l//': print "look";</span>
|
|
<span class="plain">'x//': print "examine";</span>
|
|
<span class="plain">'z//': print "wait";</span>
|
|
<span class="plain">default: rfalse;</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">rtrue;</span>
|
|
<span class="plain">];</span>
|
|
|
|
<span class="plain">[ LanguageVerbLikesAdverb w;</span>
|
|
<span class="plain">if (w == 'look' or 'go' or 'push' or 'walk')</span>
|
|
<span class="plain">rtrue;</span>
|
|
<span class="plain">rfalse;</span>
|
|
<span class="plain">];</span>
|
|
|
|
<span class="plain">[ LanguageVerbMayBeName w;</span>
|
|
<span class="plain">if (w == 'long' or 'short' or 'normal' or 'brief' or 'full' or 'verbose')</span>
|
|
<span class="plain">rtrue;</span>
|
|
<span class="plain">rfalse;</span>
|
|
<span class="plain">];</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP10"></a><b>§10. Stubs. </b>To reduce the need for conditional compilation, we provide these stub
|
|
routines:
|
|
</p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="plain">[ LanguageIsVerb buffer parse verb_wordnum;</span>
|
|
<span class="plain">rfalse;</span>
|
|
<span class="plain">];</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<hr class="tocbar">
|
|
<ul class="toc"><li><a href="S-gt.html">Back to 'Glulx Template'</a></li><li><a href="S-lt2.html">Continue with 'Light Template'</a></li></ul><hr class="tocbar">
|
|
<!--End of weave-->
|
|
</body>
|
|
</html>
|
|
|