mirror of
https://github.com/ganelson/inform.git
synced 2024-07-09 02:24:21 +03:00
435 lines
85 KiB
HTML
435 lines
85 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
<html>
|
|
<head>
|
|
<title>Lexicon</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">
|
|
<script>
|
|
function togglePopup(material_id) {
|
|
var popup = document.getElementById(material_id);
|
|
popup.classList.toggle("show");
|
|
}
|
|
</script>
|
|
|
|
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
|
<link href="../docs-assets/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="../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="../assertions-module/index.html">assertions</a></li>
|
|
<li><a href="../values-module/index.html">values</a></li>
|
|
<li><a href="../knowledge-module/index.html">knowledge</a></li>
|
|
<li><a href="../imperative-module/index.html">imperative</a></li>
|
|
<li><a href="../runtime-module/index.html">runtime</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="../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="index.html"><span class="selectedlink">codegen</span></a></li>
|
|
</ul><h2>Services</h2><ul>
|
|
<li><a href="../arch-module/index.html">arch</a></li>
|
|
<li><a href="../calculus-module/index.html">calculus</a></li>
|
|
<li><a href="../html-module/index.html">html</a></li>
|
|
<li><a href="../inflections-module/index.html">inflections</a></li>
|
|
<li><a href="../kinds-module/index.html">kinds</a></li>
|
|
<li><a href="../linguistics-module/index.html">linguistics</a></li>
|
|
<li><a href="../problems-module/index.html">problems</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="../../../inweb/docs/foundation-module/index.html">foundation</a></li>
|
|
|
|
</ul>
|
|
</nav>
|
|
<main role="main">
|
|
<!--Weave of 'Lexicon' generated by Inweb-->
|
|
<div class="breadcrumbs">
|
|
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inter Modules</a></li><li><a href="index.html">codegen</a></li><li><a href="index.html#6">Chapter 6: Index</a></li><li><b>Lexicon</b></li></ul></div>
|
|
<p class="purpose">A lexicon for nouns, adjectives and verbs found in an Inter tree.</p>
|
|
|
|
<ul class="toc"><li><a href="6-lxc.html#SP6">§6. Printing the lexicon out in HTML format</a></li><li><a href="6-lxc.html#SP8">§8. Index tabulation</a></li></ul><hr class="tocbar">
|
|
|
|
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>The lexicon is the part of the Index which gives an alphabetised list of
|
|
adjectives, nouns, verbs and other words which can be used in descriptions
|
|
of things: it's the nearest thing to an index of the meanings inside Inform.
|
|
This is in one sense quite an elaborate indexing mechanism, since it brings
|
|
together meanings relating to various different Inform structures under a single
|
|
umbrella, the "lexicon entry" structure:
|
|
</p>
|
|
|
|
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">COMMON_NOUN_TLEXE</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax"> </span><span class="comment-syntax"> a kind</span>
|
|
<span class="definition-keyword">define</span> <span class="constant-syntax">PROPER_NOUN_TLEXE</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span><span class="plain-syntax"> </span><span class="comment-syntax"> an instance of "object"</span>
|
|
<span class="definition-keyword">define</span> <span class="constant-syntax">ADJECTIVAL_PHRASE_TLEXE</span><span class="plain-syntax"> </span><span class="constant-syntax">3</span><span class="plain-syntax"> </span><span class="comment-syntax"> the subject of a "Definition:"</span>
|
|
<span class="definition-keyword">define</span> <span class="constant-syntax">ENUMERATED_CONSTANT_TLEXE</span><span class="plain-syntax"> </span><span class="constant-syntax">4</span><span class="plain-syntax"> </span><span class="comment-syntax"> e.g., "green" if colour is a kind of value and green a colour</span>
|
|
<span class="definition-keyword">define</span> <span class="constant-syntax">VERB_TLEXE</span><span class="plain-syntax"> </span><span class="constant-syntax">5</span><span class="plain-syntax"> </span><span class="comment-syntax"> an ordinary verb</span>
|
|
<span class="definition-keyword">define</span> <span class="constant-syntax">PREP_TLEXE</span><span class="plain-syntax"> </span><span class="constant-syntax">7</span><span class="plain-syntax"> </span><span class="comment-syntax"> a "to be upon..." sort of verb</span>
|
|
<span class="definition-keyword">define</span> <span class="constant-syntax">MVERB_TLEXE</span><span class="plain-syntax"> </span><span class="constant-syntax">9</span><span class="plain-syntax"> </span><span class="comment-syntax"> a meaningless verb</span>
|
|
</pre>
|
|
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>We can set entries either to excerpts of words from the source, or to
|
|
any collation of up to 5 vocabulary entries.
|
|
</p>
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">index_tlexicon_entry</span><span class="plain-syntax"> {</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lemma</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">part_of_speech</span><span class="plain-syntax">; </span><span class="comment-syntax"> one of those above</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">category</span><span class="plain-syntax">; </span><span class="comment-syntax"> textual description of said, e.g., </span><span class="extract"><span class="extract-syntax">"adjective"</span></span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">general_pointer</span><span class="plain-syntax"> </span><span class="identifier-syntax">entry_refers_to</span><span class="plain-syntax">; </span><span class="comment-syntax"> depending on which part of speech</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">verb_defined_at</span><span class="plain-syntax">; </span><span class="comment-syntax"> sentence where defined (verbs only)</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gloss_note</span><span class="plain-syntax">; </span><span class="comment-syntax"> gloss on the definition, or </span><span class="extract"><span class="extract-syntax">NULL</span></span><span class="comment-syntax"> if none is provided</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lex_package</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">link_to</span><span class="plain-syntax">; </span><span class="comment-syntax"> word number in source text</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">reduced_to_lower_case</span><span class="plain-syntax">; </span><span class="comment-syntax"> text converted to lower case for sorting</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">index_tlexicon_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sorted_next</span><span class="plain-syntax">; </span><span class="comment-syntax"> next in lexicographic order</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
|
<span class="plain-syntax">} </span><span class="reserved-syntax">index_tlexicon_entry</span><span class="plain-syntax">;</span>
|
|
</pre>
|
|
<ul class="endnotetexts"><li>The structure index_tlexicon_entry is accessed in 6/ve2 and here.</li></ul>
|
|
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b></p>
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
<span class="reserved-syntax">index_tlexicon_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sorted_tlexicon</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> head of list in lexicographic order</span>
|
|
</pre>
|
|
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b>Lexicon entries are created by the following routine:
|
|
</p>
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
<span class="reserved-syntax">index_tlexicon_entry</span><span class="plain-syntax"> *</span><span class="function-syntax">TempLexicon::lexicon_new_entry</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">TempLexicon::lexicon_new_entry</span></span>:<br/><a href="6-lxc.html#SP5">§5</a>, <a href="6-lxc.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lemma</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">part</span><span class="plain-syntax">) {</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">index_tlexicon_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lex</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">index_tlexicon_entry</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">lemma</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">lemma</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">part_of_speech</span><span class="plain-syntax"> = </span><span class="identifier-syntax">part</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">entry_refers_to</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL_GENERAL_POINTER</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">category</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">gloss_note</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">verb_defined_at</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">lex</span><span class="plain-syntax">-></span><span class="element-syntax">reduced_to_lower_case</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::new</span><span class="plain-syntax">();</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">lex_package</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">lex</span><span class="plain-syntax">-></span><span class="element-syntax">link_to</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">lex</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax">}</span>
|
|
</pre>
|
|
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b></p>
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
<span class="reserved-syntax">index_tlexicon_entry</span><span class="plain-syntax"> *</span><span class="function-syntax">TempLexicon::new_entry_with_details</span><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lemma</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">pos</span><span class="plain-syntax">,</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">category</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gloss</span><span class="plain-syntax">) {</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">index_tlexicon_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lex</span><span class="plain-syntax"> = </span><a href="6-lxc.html#SP4" class="function-link"><span class="function-syntax">TempLexicon::lexicon_new_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">lemma</span><span class="plain-syntax">, </span><span class="identifier-syntax">pos</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">lemma</span><span class="plain-syntax"> = </span><span class="identifier-syntax">lemma</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">category</span><span class="plain-syntax"> = </span><span class="identifier-syntax">category</span><span class="plain-syntax">; </span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">gloss_note</span><span class="plain-syntax"> = </span><span class="identifier-syntax">gloss</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">lex</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax">}</span>
|
|
|
|
<span class="reserved-syntax">index_tlexicon_entry</span><span class="plain-syntax"> *</span><span class="function-syntax">TempLexicon::new_main_verb</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">TempLexicon::new_main_verb</span></span>:<br/><a href="6-lxc.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infinitive</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">part</span><span class="plain-syntax">,</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pack</span><span class="plain-syntax">) {</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">index_tlexicon_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lex</span><span class="plain-syntax"> = </span><a href="6-lxc.html#SP4" class="function-link"><span class="function-syntax">TempLexicon::lexicon_new_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">part</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">lemma</span><span class="plain-syntax"> = </span><span class="identifier-syntax">infinitive</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">category</span><span class="plain-syntax"> = </span><span class="string-syntax">"verb"</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">lex_package</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pack</span><span class="plain-syntax">;</span>
|
|
<span class="comment-syntax"> lex->verb_defined_at = current_sentence;</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">lex</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax">}</span>
|
|
</pre>
|
|
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. Printing the lexicon out in HTML format. </b></p>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b>Now for the bulk of the work. Entries appear in CSS paragraphs with hanging
|
|
indentation and no interparagraph spacing, so we need to insert regular
|
|
paragraphs between the As and the Bs, then between the Bs and the Cs, and so
|
|
on. Each entry consists of the wording, then maybe some icons, then an
|
|
explanation of what it is: for instance,
|
|
</p>
|
|
|
|
<blockquote>
|
|
<p>player's holdall [icon]\quad {\it noun, a kind of} container</p>
|
|
</blockquote>
|
|
|
|
<p class="commentary">In a few cases, there is a further textual gloss to add.
|
|
</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">TempLexicon::listing</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">TempLexicon::listing</span></span>:<br/>Gazetteer Element - <a href="6-ge.html#SP1">§1</a><br/>Lexicon Element - <a href="6-le.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">proper_nouns_only</span><span class="plain-syntax">) {</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">index_tlexicon_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lex</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> </span><span class="identifier-syntax">current_initial_letter</span><span class="plain-syntax"> = </span><span class="character-syntax">'?'</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">verb_count</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">proper_noun_count</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">lex</span><span class="plain-syntax"> = </span><span class="identifier-syntax">sorted_tlexicon</span><span class="plain-syntax">; </span><span class="identifier-syntax">lex</span><span class="plain-syntax">; </span><span class="identifier-syntax">lex</span><span class="plain-syntax"> = </span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">sorted_next</span><span class="plain-syntax">)</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">part_of_speech</span><span class="plain-syntax"> == </span><span class="constant-syntax">PROPER_NOUN_TLEXE</span><span class="plain-syntax">)</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">proper_noun_count</span><span class="plain-syntax">++;</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">proper_nouns_only</span><span class="plain-syntax">) {</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::begin_html_table</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">0</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">HTML::first_html_column</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> }</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">lex</span><span class="plain-syntax"> = </span><span class="identifier-syntax">sorted_tlexicon</span><span class="plain-syntax">; </span><span class="identifier-syntax">lex</span><span class="plain-syntax">; </span><span class="identifier-syntax">lex</span><span class="plain-syntax"> = </span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">sorted_next</span><span class="plain-syntax">) {</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">proper_nouns_only</span><span class="plain-syntax">) { </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">part_of_speech</span><span class="plain-syntax"> != </span><span class="constant-syntax">PROPER_NOUN_TLEXE</span><span class="plain-syntax">) </span><span class="reserved-syntax">continue</span><span class="plain-syntax">; }</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> { </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">part_of_speech</span><span class="plain-syntax"> == </span><span class="constant-syntax">PROPER_NOUN_TLEXE</span><span class="plain-syntax">) </span><span class="reserved-syntax">continue</span><span class="plain-syntax">; }</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">proper_nouns_only</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="identifier-syntax">proper_noun_count</span><span class="plain-syntax">/2)) </span><span class="identifier-syntax">HTML::next_html_column</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">current_initial_letter</span><span class="plain-syntax"> != </span><span class="identifier-syntax">Str::get_first_char</span><span class="plain-syntax">(</span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">reduced_to_lower_case</span><span class="plain-syntax">)) {</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) { </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">); </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">); }</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">current_initial_letter</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::get_first_char</span><span class="plain-syntax">(</span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">reduced_to_lower_case</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> }</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">++;</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">, </span><span class="string-syntax">"class=\"hang\""</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-lxc.html#SP7_1" class="named-paragraph-link"><span class="named-paragraph">Text of the actual lexicon entry</span><span class="named-paragraph-number">7.1</span></a></span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-lxc.html#SP7_2" class="named-paragraph-link"><span class="named-paragraph">Icon with link to documentation, source or verb table, if any</span><span class="named-paragraph-number">7.2</span></a></span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax">(</span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">part_of_speech</span><span class="plain-syntax">) {</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">ADJECTIVAL_PHRASE_TLEXE:</span>
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-lxc.html#SP7_5" class="named-paragraph-link"><span class="named-paragraph">Definition of adjectival phrase entry</span><span class="named-paragraph-number">7.5</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">ENUMERATED_CONSTANT_TLEXE:</span>
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-lxc.html#SP7_6" class="named-paragraph-link"><span class="named-paragraph">Definition of enumerated instance entry</span><span class="named-paragraph-number">7.6</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PROPER_NOUN_TLEXE:</span>
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-lxc.html#SP7_4" class="named-paragraph-link"><span class="named-paragraph">Definition of proper noun entry</span><span class="named-paragraph-number">7.4</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">COMMON_NOUN_TLEXE:</span>
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-lxc.html#SP7_3" class="named-paragraph-link"><span class="named-paragraph">Definition of common noun entry</span><span class="named-paragraph-number">7.3</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> }</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">gloss_note</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" <i>%s</i>"</span><span class="plain-syntax">, </span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">gloss_note</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> }</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">proper_nouns_only</span><span class="plain-syntax">) { </span><span class="identifier-syntax">HTML::end_html_row</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">); </span><span class="identifier-syntax">HTML::end_html_table</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">); }</span>
|
|
<span class="plain-syntax">}</span>
|
|
</pre>
|
|
<p class="commentary firstcommentary"><a id="SP7_1" class="paragraph-anchor"></a><b>§7.1. </b>In traditional dictionary fashion, we present the text in what may not be
|
|
the most normal ordering, in order to place the alphabetically important
|
|
part first: thus "see, to be able to" rather than "to be able to see".
|
|
(Compare "Gallifreyan High Council, continual incidences of madness and
|
|
treachery amongst the" in "Doctor Who: The Completely Useless
|
|
Encyclopaedia", eds. Howarth and Lyons (1996).)
|
|
</p>
|
|
|
|
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Text of the actual lexicon entry</span><span class="named-paragraph-number">7.1</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">lemma</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">part_of_speech</span><span class="plain-syntax"> == </span><span class="constant-syntax">PREP_TLEXE</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">", to be"</span><span class="plain-syntax">);</span>
|
|
</pre>
|
|
<ul class="endnotetexts"><li>This code is used in <a href="6-lxc.html#SP7">§7</a>.</li></ul>
|
|
<p class="commentary firstcommentary"><a id="SP7_2" class="paragraph-anchor"></a><b>§7.2. </b>Main lexicon entries to do with verbs link further down the index page
|
|
to the corresponding entries in the verb table. We want to use numbered
|
|
anchors for these links, but we want to avoid colliding with numbered
|
|
anchors already used for other purposes higher up on the Phrasebook index
|
|
page. So we use a set of anchors numbered 10000 and up, which is guaranteed
|
|
not to coincide with any of those.
|
|
</p>
|
|
|
|
<p class="commentary">We omit source links to an adjectival phrase because these are polymorphic,
|
|
that is, the phrase may have multiple definitions in different parts of the
|
|
source text: so any single link would be potentially misleading.
|
|
</p>
|
|
|
|
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Icon with link to documentation, source or verb table, if any</span><span class="named-paragraph-number">7.2</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">switch</span><span class="plain-syntax">(</span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">part_of_speech</span><span class="plain-syntax">) {</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">COMMON_NOUN_TLEXE:</span><span class="plain-syntax"> {</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ref</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Metadata::read_optional_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">lex_package</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^documentation"</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">ref</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">Index::DocReferences::link</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">ref</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> }</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">VERB_TLEXE:</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PREP_TLEXE:</span>
|
|
<span class="plain-syntax"> </span><a href="6-ifs.html#SP16" class="function-link"><span class="function-syntax">Index::below_link_numbered</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">10000</span><span class="plain-syntax">+</span><span class="identifier-syntax">verb_count</span><span class="plain-syntax">++);</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> }</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">part_of_speech</span><span class="plain-syntax"> != </span><span class="constant-syntax">ADJECTIVAL_PHRASE_TLEXE</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">link_to</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">))</span>
|
|
<span class="plain-syntax"> </span><a href="6-ifs.html#SP14" class="function-link"><span class="function-syntax">Index::link</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">link_to</span><span class="plain-syntax">);</span>
|
|
</pre>
|
|
<ul class="endnotetexts"><li>This code is used in <a href="6-lxc.html#SP7">§7</a>.</li></ul>
|
|
<p class="commentary firstcommentary"><a id="SP7_3" class="paragraph-anchor"></a><b>§7.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Definition of common noun entry</span><span class="named-paragraph-number">7.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="named-paragraph-container code-font"><a href="6-lxc.html#SP7_3_1" class="named-paragraph-link"><span class="named-paragraph">Begin definition text</span><span class="named-paragraph-number">7.3.1</span></a></span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">", a kind of "</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">superk</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Metadata::read_optional_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">lex_package</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^index_superkind"</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">superk</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">superk</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-lxc.html#SP7_3_2" class="named-paragraph-link"><span class="named-paragraph">End definition text</span><span class="named-paragraph-number">7.3.2</span></a></span><span class="plain-syntax">;</span>
|
|
</pre>
|
|
<ul class="endnotetexts"><li>This code is used in <a href="6-lxc.html#SP7">§7</a>.</li></ul>
|
|
<p class="commentary firstcommentary"><a id="SP7_4" class="paragraph-anchor"></a><b>§7.4. </b>Simply the name of an instance.
|
|
</p>
|
|
|
|
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Definition of proper noun entry</span><span class="named-paragraph-number">7.4</span></span><span class="comment-syntax"> =</span>
|
|
</p>
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-lxc.html#SP7_3_1" class="named-paragraph-link"><span class="named-paragraph">Begin definition text</span><span class="named-paragraph-number">7.3.1</span></a></span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Metadata::read_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">lex_package</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^index_kind"</span><span class="plain-syntax">));</span>
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-lxc.html#SP7_3_2" class="named-paragraph-link"><span class="named-paragraph">End definition text</span><span class="named-paragraph-number">7.3.2</span></a></span><span class="plain-syntax">;</span>
|
|
</pre>
|
|
<ul class="endnotetexts"><li>This code is used in <a href="6-lxc.html#SP7">§7</a>.</li></ul>
|
|
<p class="commentary firstcommentary"><a id="SP7_5" class="paragraph-anchor"></a><b>§7.5. </b>As mentioned above, an adjectival phrase can be multiply defined in
|
|
different contexts. We want to quote all of those.
|
|
</p>
|
|
|
|
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Definition of adjectival phrase entry</span><span class="named-paragraph-number">7.5</span></span><span class="comment-syntax"> =</span>
|
|
</p>
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-lxc.html#SP7_3_1" class="named-paragraph-link"><span class="named-paragraph">Begin definition text</span><span class="named-paragraph-number">7.3.1</span></a></span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">": %S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Metadata::read_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">lex_package</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^index_entry"</span><span class="plain-syntax">));</span>
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-lxc.html#SP7_3_2" class="named-paragraph-link"><span class="named-paragraph">End definition text</span><span class="named-paragraph-number">7.3.2</span></a></span><span class="plain-syntax">;</span>
|
|
</pre>
|
|
<ul class="endnotetexts"><li>This code is used in <a href="6-lxc.html#SP7">§7</a>.</li></ul>
|
|
<p class="commentary firstcommentary"><a id="SP7_6" class="paragraph-anchor"></a><b>§7.6. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Definition of enumerated instance entry</span><span class="named-paragraph-number">7.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="named-paragraph-container code-font"><a href="6-lxc.html#SP7_3_1" class="named-paragraph-link"><span class="named-paragraph">Begin definition text</span><span class="named-paragraph-number">7.3.1</span></a></span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">", value of %S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Metadata::read_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">lex_package</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^index_kind"</span><span class="plain-syntax">));</span>
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-lxc.html#SP7_3_2" class="named-paragraph-link"><span class="named-paragraph">End definition text</span><span class="named-paragraph-number">7.3.2</span></a></span><span class="plain-syntax">;</span>
|
|
</pre>
|
|
<ul class="endnotetexts"><li>This code is used in <a href="6-lxc.html#SP7">§7</a>.</li></ul>
|
|
<p class="commentary firstcommentary"><a id="SP7_3_1" class="paragraph-anchor"></a><b>§7.3.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Begin definition text</span><span class="named-paragraph-number">7.3.1</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" ... <i>"</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">proper_nouns_only</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">category</span><span class="plain-syntax">))</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%s"</span><span class="plain-syntax">, </span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">category</span><span class="plain-syntax">);</span>
|
|
</pre>
|
|
<ul class="endnotetexts"><li>This code is used in <a href="6-lxc.html#SP7_3">§7.3</a>, <a href="6-lxc.html#SP7_4">§7.4</a>, <a href="6-lxc.html#SP7_5">§7.5</a>, <a href="6-lxc.html#SP7_6">§7.6</a>.</li></ul>
|
|
<p class="commentary firstcommentary"><a id="SP7_3_2" class="paragraph-anchor"></a><b>§7.3.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">End definition text</span><span class="named-paragraph-number">7.3.2</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"</i>"</span><span class="plain-syntax">);</span>
|
|
</pre>
|
|
<ul class="endnotetexts"><li>This code is used in <a href="6-lxc.html#SP7_3">§7.3</a>, <a href="6-lxc.html#SP7_4">§7.4</a>, <a href="6-lxc.html#SP7_5">§7.5</a>, <a href="6-lxc.html#SP7_6">§7.6</a>.</li></ul>
|
|
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. Index tabulation. </b>The following produces the table of verbs in the Phrasebook Index page.
|
|
</p>
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
<span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tree_stored_by_lexicon</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">TempLexicon::stock</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">TempLexicon::stock</span></span>:<br/>Verbs Element - <a href="6-ve2.html#SP1">§1</a><br/>Gazetteer Element - <a href="6-ge.html#SP1">§1</a><br/>Lexicon Element - <a href="6-le.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax"> == </span><span class="identifier-syntax">tree_stored_by_lexicon</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">tree_stored_by_lexicon</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">tree_inventory</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inv</span><span class="plain-syntax"> = </span><a href="3-su.html#SP1" class="function-link"><span class="function-syntax">Synoptic::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">TreeLists::sort</span><span class="plain-syntax">(</span><span class="identifier-syntax">inv</span><span class="plain-syntax">-></span><span class="element-syntax">verb_nodes</span><span class="plain-syntax">, </span><a href="3-su.html#SP2" class="function-link"><span class="function-syntax">Synoptic::module_order</span></a><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="function-syntax"><TreeLists::len(inv-></span><span class="element-syntax">verb_nodes</span><span class="plain-syntax">); </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) {</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pack</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Package::defined_by_frame</span><span class="plain-syntax">(</span><span class="identifier-syntax">inv</span><span class="plain-syntax">-></span><span class="element-syntax">verb_nodes</span><span class="plain-syntax">-></span><span class="identifier-syntax">list</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">].</span><span class="identifier-syntax">node</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">index_tlexicon_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lex</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Metadata::read_numeric</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^meaningless"</span><span class="plain-syntax">))</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">lex</span><span class="plain-syntax"> = </span><a href="6-lxc.html#SP5" class="function-link"><span class="function-syntax">TempLexicon::new_main_verb</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Metadata::read_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^infinitive"</span><span class="plain-syntax">), </span><span class="constant-syntax">MVERB_TLEXE</span><span class="plain-syntax">, </span><span class="identifier-syntax">pack</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">lex</span><span class="plain-syntax"> = </span><a href="6-lxc.html#SP5" class="function-link"><span class="function-syntax">TempLexicon::new_main_verb</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Metadata::read_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^infinitive"</span><span class="plain-syntax">), </span><span class="constant-syntax">VERB_TLEXE</span><span class="plain-syntax">, </span><span class="identifier-syntax">pack</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">link_to</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">int</span><span class="plain-syntax">) </span><span class="identifier-syntax">Metadata::read_numeric</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^at"</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> }</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="function-syntax"><TreeLists::len(inv-></span><span class="element-syntax">preposition_nodes</span><span class="plain-syntax">); </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) {</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pack</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Package::defined_by_frame</span><span class="plain-syntax">(</span><span class="identifier-syntax">inv</span><span class="plain-syntax">-></span><span class="element-syntax">preposition_nodes</span><span class="plain-syntax">-></span><span class="identifier-syntax">list</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">].</span><span class="identifier-syntax">node</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">index_tlexicon_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lex</span><span class="plain-syntax"> = </span><a href="6-lxc.html#SP5" class="function-link"><span class="function-syntax">TempLexicon::new_main_verb</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Metadata::read_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^text"</span><span class="plain-syntax">), </span><span class="constant-syntax">PREP_TLEXE</span><span class="plain-syntax">, </span><span class="identifier-syntax">pack</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">link_to</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">int</span><span class="plain-syntax">) </span><span class="identifier-syntax">Metadata::read_numeric</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^at"</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> }</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="function-syntax"><TreeLists::len(inv-></span><span class="element-syntax">adjective_nodes</span><span class="plain-syntax">); </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) {</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pack</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Package::defined_by_frame</span><span class="plain-syntax">(</span><span class="identifier-syntax">inv</span><span class="plain-syntax">-></span><span class="element-syntax">adjective_nodes</span><span class="plain-syntax">-></span><span class="identifier-syntax">list</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">].</span><span class="identifier-syntax">node</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lemma</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Metadata::read_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^text"</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">lemma</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">index_tlexicon_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lex</span><span class="plain-syntax"> = </span><a href="6-lxc.html#SP4" class="function-link"><span class="function-syntax">TempLexicon::lexicon_new_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">lemma</span><span class="plain-syntax">, </span><span class="constant-syntax">ADJECTIVAL_PHRASE_TLEXE</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">category</span><span class="plain-syntax"> = </span><span class="string-syntax">"adjective"</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">lex_package</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pack</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> }</span>
|
|
<span class="plain-syntax"> }</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="function-syntax"><TreeLists::len(inv-></span><span class="element-syntax">kind_nodes</span><span class="plain-syntax">); </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) {</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pack</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Package::defined_by_frame</span><span class="plain-syntax">(</span><span class="identifier-syntax">inv</span><span class="plain-syntax">-></span><span class="element-syntax">kind_nodes</span><span class="plain-syntax">-></span><span class="identifier-syntax">list</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">].</span><span class="identifier-syntax">node</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Metadata::read_optional_numeric</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^is_base"</span><span class="plain-syntax">)) &&</span>
|
|
<span class="plain-syntax"> (</span><span class="identifier-syntax">Metadata::read_optional_numeric</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^is_subkind_of_object"</span><span class="plain-syntax">))) {</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">index_tlexicon_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lex</span><span class="plain-syntax"> = </span><a href="6-lxc.html#SP4" class="function-link"><span class="function-syntax">TempLexicon::lexicon_new_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Metadata::read_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^name"</span><span class="plain-syntax">), </span><span class="constant-syntax">COMMON_NOUN_TLEXE</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">link_to</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">int</span><span class="plain-syntax">) </span><span class="identifier-syntax">Metadata::read_numeric</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^at"</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">category</span><span class="plain-syntax"> = </span><span class="string-syntax">"noun"</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">lex_package</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pack</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> }</span>
|
|
<span class="plain-syntax"> }</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="function-syntax"><TreeLists::len(inv-></span><span class="element-syntax">instance_nodes</span><span class="plain-syntax">); </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) {</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pack</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Package::defined_by_frame</span><span class="plain-syntax">(</span><span class="identifier-syntax">inv</span><span class="plain-syntax">-></span><span class="element-syntax">instance_nodes</span><span class="plain-syntax">-></span><span class="identifier-syntax">list</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">].</span><span class="identifier-syntax">node</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Metadata::read_optional_numeric</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^is_object"</span><span class="plain-syntax">)) {</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">index_tlexicon_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lex</span><span class="plain-syntax"> = </span><a href="6-lxc.html#SP4" class="function-link"><span class="function-syntax">TempLexicon::lexicon_new_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Metadata::read_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^name"</span><span class="plain-syntax">), </span><span class="constant-syntax">PROPER_NOUN_TLEXE</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">link_to</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">int</span><span class="plain-syntax">) </span><span class="identifier-syntax">Metadata::read_numeric</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^at"</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">category</span><span class="plain-syntax"> = </span><span class="string-syntax">"noun"</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">lex_package</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pack</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">index_tlexicon_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lex</span><span class="plain-syntax"> = </span><a href="6-lxc.html#SP4" class="function-link"><span class="function-syntax">TempLexicon::lexicon_new_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Metadata::read_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^name"</span><span class="plain-syntax">), </span><span class="constant-syntax">ENUMERATED_CONSTANT_TLEXE</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">link_to</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">int</span><span class="plain-syntax">) </span><span class="identifier-syntax">Metadata::read_numeric</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^at"</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">category</span><span class="plain-syntax"> = </span><span class="string-syntax">"noun"</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">lex_package</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pack</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> }</span>
|
|
<span class="plain-syntax"> }</span>
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-lxc.html#SP8_1" class="named-paragraph-link"><span class="named-paragraph">Create lower-case forms of all lexicon entries dash</span><span class="named-paragraph-number">8.1</span></a></span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-lxc.html#SP8_2" class="named-paragraph-link"><span class="named-paragraph">Sort the lexicon into alphabetical order dash</span><span class="named-paragraph-number">8.2</span></a></span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax">}</span>
|
|
</pre>
|
|
<p class="commentary firstcommentary"><a id="SP8_1" class="paragraph-anchor"></a><b>§8.1. </b>Before we can sort the lexicon, we need to turn its disparate forms of name
|
|
into a single, canonical, lower-case representation.
|
|
</p>
|
|
|
|
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Create lower-case forms of all lexicon entries dash</span><span class="named-paragraph-number">8.1</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">index_tlexicon_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lex</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">lex</span><span class="plain-syntax">, </span><span class="reserved-syntax">index_tlexicon_entry</span><span class="plain-syntax">) {</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::copy</span><span class="plain-syntax">(</span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">reduced_to_lower_case</span><span class="plain-syntax">, </span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">lemma</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_THROUGH_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">, </span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">reduced_to_lower_case</span><span class="plain-syntax">)</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::put</span><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">, </span><span class="identifier-syntax">Characters::tolower</span><span class="plain-syntax">(</span><span class="identifier-syntax">Str::get</span><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">)));</span>
|
|
<span class="plain-syntax"> }</span>
|
|
</pre>
|
|
<ul class="endnotetexts"><li>This code is used in <a href="6-lxc.html#SP8">§8</a>.</li></ul>
|
|
<p class="commentary firstcommentary"><a id="SP8_2" class="paragraph-anchor"></a><b>§8.2. </b>The lexicon is sorted by insertion sort, which is not ideally fast, but
|
|
which is convenient when dealing with linked lists: there are unlikely to be
|
|
more than 1000 or so entries, so the speed penalty for insertion rather
|
|
than (say) quicksort is not great.
|
|
</p>
|
|
|
|
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Sort the lexicon into alphabetical order dash</span><span class="named-paragraph-number">8.2</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">index_tlexicon_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lex</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">lex</span><span class="plain-syntax">, </span><span class="reserved-syntax">index_tlexicon_entry</span><span class="plain-syntax">) {</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">index_tlexicon_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lex2</span><span class="plain-syntax">, *</span><span class="identifier-syntax">last_lex</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">sorted_tlexicon</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">sorted_tlexicon</span><span class="plain-syntax"> = </span><span class="identifier-syntax">lex</span><span class="plain-syntax">; </span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">sorted_next</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="reserved-syntax">continue</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> }</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">last_lex</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">lex2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">sorted_tlexicon</span><span class="plain-syntax">; </span><span class="identifier-syntax">lex2</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">last_lex</span><span class="plain-syntax"> = </span><span class="identifier-syntax">lex2</span><span class="plain-syntax">, </span><span class="identifier-syntax">lex2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">lex2</span><span class="plain-syntax">-></span><span class="element-syntax">sorted_next</span><span class="plain-syntax">)</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::cmp</span><span class="plain-syntax">(</span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">reduced_to_lower_case</span><span class="plain-syntax">, </span><span class="identifier-syntax">lex2</span><span class="plain-syntax">-></span><span class="element-syntax">reduced_to_lower_case</span><span class="plain-syntax">) < </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">last_lex</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">sorted_tlexicon</span><span class="plain-syntax"> = </span><span class="identifier-syntax">lex</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">last_lex</span><span class="plain-syntax">-></span><span class="element-syntax">sorted_next</span><span class="plain-syntax"> = </span><span class="identifier-syntax">lex</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">sorted_next</span><span class="plain-syntax"> = </span><span class="identifier-syntax">lex2</span><span class="plain-syntax">; </span><span class="reserved-syntax">goto</span><span class="plain-syntax"> </span><span class="identifier-syntax">Inserted</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> }</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">last_lex</span><span class="plain-syntax">-></span><span class="element-syntax">sorted_next</span><span class="plain-syntax"> = </span><span class="identifier-syntax">lex</span><span class="plain-syntax">; </span><span class="identifier-syntax">lex</span><span class="plain-syntax">-></span><span class="element-syntax">sorted_next</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">Inserted:</span><span class="plain-syntax"> ;</span>
|
|
<span class="plain-syntax"> }</span>
|
|
</pre>
|
|
<ul class="endnotetexts"><li>This code is used in <a href="6-lxc.html#SP8">§8</a>.</li></ul>
|
|
<nav role="progress"><div class="progresscontainer">
|
|
<ul class="progressbar"><li class="progressprev"><a href="6-ir.html">❮</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-mt.html">2</a></li><li class="progresschapter"><a href="3-sh.html">3</a></li><li class="progresschapter"><a href="4-cg.html">4</a></li><li class="progresschapter"><a href="5-ft.html">5</a></li><li class="progresscurrentchapter">6</li><li class="progresssection"><a href="6-ii.html">ii</a></li><li class="progresssection"><a href="6-ifs.html">ifs</a></li><li class="progresssection"><a href="6-ir.html">ir</a></li><li class="progresscurrent">lxc</li><li class="progresssection"><a href="6-ce.html">ce</a></li><li class="progresssection"><a href="6-ce2.html">ce2</a></li><li class="progresssection"><a href="6-be.html">be</a></li><li class="progresssection"><a href="6-re.html">re</a></li><li class="progresssection"><a href="6-ee.html">ee</a></li><li class="progresssection"><a href="6-fe.html">fe</a></li><li class="progresssection"><a href="6-te.html">te</a></li><li class="progresssection"><a href="6-ve.html">ve</a></li><li class="progresssection"><a href="6-rfse.html">rfse</a></li><li class="progresssection"><a href="6-ee2.html">ee2</a></li><li class="progresssection"><a href="6-se.html">se</a></li><li class="progresssection"><a href="6-ie.html">ie</a></li><li class="progresssection"><a href="6-ve2.html">ve2</a></li><li class="progresssection"><a href="6-ge.html">ge</a></li><li class="progresssection"><a href="6-le.html">le</a></li><li class="progresssection"><a href="6-ae.html">ae</a></li><li class="progresssection"><a href="6-pe.html">pe</a></li><li class="progresssection"><a href="6-ce3.html">ce3</a></li><li class="progresssection"><a href="6-pe2.html">pe2</a></li><li class="progresssection"><a href="6-te2.html">te2</a></li><li class="progresssection"><a href="6-ce4.html">ce4</a></li><li class="progresssection"><a href="6-ge2.html">ge2</a></li><li class="progresssection"><a href="6-ae2.html">ae2</a></li><li class="progresssection"><a href="6-sg.html">sg</a></li><li class="progresssection"><a href="6-em.html">em</a></li><li class="progresssection"><a href="6-me.html">me</a></li><li class="progresssection"><a href="6-ins.html">ins</a></li><li class="progresssection"><a href="6-spt.html">spt</a></li><li class="progresssection"><a href="6-tp.html">tp</a></li><li class="progresssection"><a href="6-bck.html">bck</a></li><li class="progresssection"><a href="6-rgn.html">rgn</a></li><li class="progresssection"><a href="6-tm.html">tm</a></li><li class="progresssection"><a href="6-sm.html">sm</a></li><li class="progresssection"><a href="6-hm.html">hm</a></li><li class="progresssection"><a href="6-rem.html">rem</a></li><li class="progressnext"><a href="6-ce.html">❯</a></li></ul></div>
|
|
</nav><!--End of weave-->
|
|
|
|
</main>
|
|
</body>
|
|
</html>
|
|
|