1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-06-29 05:24:57 +03:00

Fixed comments in words module

This commit is contained in:
Graham Nelson 2020-05-11 22:58:36 +01:00
parent 7f37431f4a
commit e671b1d795
8 changed files with 31 additions and 31 deletions

View file

@ -86,10 +86,10 @@ all we need do is set up some debugging log facilities.
<span class="plain-syntax"> </span><a href="2-nt.html#SP4" class="function-link"><span class="function-syntax">NodeType::make_parentage_allowed_table</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-nt.html#SP12" class="function-link"><span class="function-syntax">NodeType::metadata_setup</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-na.html#SP12" class="function-link"><span class="function-syntax">Annotations::make_annotation_allowed_table</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Writers::register_logger</span><span class="plain-syntax">(</span><span class="character-syntax">'m'</span><span class="plain-syntax">, </span><a href="2-pn.html#SP15" class="function-link"><span class="function-syntax">Node::log_tree</span></a><span class="plain-syntax">); /* |$</span><span class="identifier-syntax">m</span><span class="plain-syntax">| = </span><span class="identifier-syntax">log</span><span class="plain-syntax"> </span><span class="identifier-syntax">syntax</span><span class="plain-syntax"> </span><span class="identifier-syntax">tree</span><span class="plain-syntax"> </span><span class="identifier-syntax">from</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">Writers::register_logger_I</span><span class="plain-syntax">(</span><span class="character-syntax">'N'</span><span class="plain-syntax">, </span><a href="2-nt.html#SP8" class="function-link"><span class="function-syntax">NodeType::log</span></a><span class="plain-syntax">); /* |$</span><span class="identifier-syntax">N</span><span class="plain-syntax">| = </span><span class="identifier-syntax">log</span><span class="plain-syntax"> </span><span class="identifier-syntax">individual</span><span class="plain-syntax"> </span><span class="identifier-syntax">node</span><span class="plain-syntax"> </span><span class="identifier-syntax">type</span><span class="plain-syntax"> */</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Writers::register_logger</span><span class="plain-syntax">(</span><span class="character-syntax">'P'</span><span class="plain-syntax">, </span><a href="2-pn.html#SP17" class="function-link"><span class="function-syntax">Node::log_node</span></a><span class="plain-syntax">); /* |$</span><span class="identifier-syntax">P</span><span class="plain-syntax">| = </span><span class="identifier-syntax">log</span><span class="plain-syntax"> </span><span class="identifier-syntax">individual</span><span class="plain-syntax"> </span><span class="identifier-syntax">parse</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">Writers::register_logger</span><span class="plain-syntax">(</span><span class="character-syntax">'T'</span><span class="plain-syntax">, </span><a href="2-pn.html#SP15" class="function-link"><span class="function-syntax">Node::log_subtree</span></a><span class="plain-syntax">); /* |$</span><span class="identifier-syntax">T</span><span class="plain-syntax">| = </span><span class="identifier-syntax">log</span><span class="plain-syntax"> </span><span class="identifier-syntax">tree</span><span class="plain-syntax"> </span><span class="identifier-syntax">under</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">Writers::register_logger</span><span class="plain-syntax">(</span><span class="character-syntax">'m'</span><span class="plain-syntax">, </span><a href="2-pn.html#SP15" class="function-link"><span class="function-syntax">Node::log_tree</span></a><span class="plain-syntax">); </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">$m</span></span><span class="comment-syntax"> = log syntax tree from node</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Writers::register_logger_I</span><span class="plain-syntax">(</span><span class="character-syntax">'N'</span><span class="plain-syntax">, </span><a href="2-nt.html#SP8" class="function-link"><span class="function-syntax">NodeType::log</span></a><span class="plain-syntax">); </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">$N</span></span><span class="comment-syntax"> = log individual node type</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Writers::register_logger</span><span class="plain-syntax">(</span><span class="character-syntax">'P'</span><span class="plain-syntax">, </span><a href="2-pn.html#SP17" class="function-link"><span class="function-syntax">Node::log_node</span></a><span class="plain-syntax">); </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">$P</span></span><span class="comment-syntax"> = log individual parse node</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Writers::register_logger</span><span class="plain-syntax">(</span><span class="character-syntax">'T'</span><span class="plain-syntax">, </span><a href="2-pn.html#SP15" class="function-link"><span class="function-syntax">Node::log_subtree</span></a><span class="plain-syntax">); </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">$T</span></span><span class="comment-syntax"> = log tree under node</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">SyntaxModule::end</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>

View file

@ -323,7 +323,7 @@ sentence divisions. The other cases are more complicated: see below.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">stopped</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">no_stop_words</span><span class="plain-syntax">++; </span><span class="identifier-syntax">at</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">stop_character</span><span class="plain-syntax"> == </span><span class="character-syntax">'X'</span><span class="plain-syntax">) { /* </span><span class="identifier-syntax">X</span><span class="plain-syntax"> </span><span class="identifier-syntax">breaks</span><span class="plain-syntax"> </span><span class="identifier-syntax">are</span><span class="plain-syntax"> </span><span class="identifier-syntax">like</span><span class="plain-syntax"> </span><span class="identifier-syntax">full</span><span class="plain-syntax"> </span><span class="identifier-syntax">stops</span><span class="plain-syntax">, </span><span class="identifier-syntax">but</span><span class="plain-syntax"> </span><span class="identifier-syntax">there</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">no</span><span class="plain-syntax"> </span><span class="identifier-syntax">stop</span><span class="plain-syntax"> </span><span class="identifier-syntax">word</span><span class="plain-syntax"> </span><span class="identifier-syntax">to</span><span class="plain-syntax"> </span><span class="identifier-syntax">skip</span><span class="plain-syntax"> </span><span class="identifier-syntax">over</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">stop_character</span><span class="plain-syntax"> == </span><span class="character-syntax">'X'</span><span class="plain-syntax">) { </span><span class="comment-syntax"> X breaks are like full stops, but there is no stop word to skip over</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">stop_character</span><span class="plain-syntax"> = </span><span class="character-syntax">'.'</span><span class="plain-syntax">; </span><span class="identifier-syntax">back_up_one_word</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</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">no_stop_words</span><span class="plain-syntax"> &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
@ -751,8 +751,8 @@ will make a <span class="extract"><span class="extract-syntax">INVOCATION_LIST_N
<span class="plain-syntax"> </span><span class="identifier-syntax">BW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">GET_RW</span><span class="plain-syntax">(</span><span class="function-syntax">&lt;list-comma-division&gt;</span><span class="plain-syntax">, </span><span class="constant-syntax">2</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">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">AW</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><a href="3-snt.html#SP6" class="function-link"><span class="function-syntax">Sentences::make_node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::up_to</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::last_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">AW</span><span class="plain-syntax">)), </span><span class="character-syntax">':'</span><span class="plain-syntax">); /* </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">preamble</span><span class="plain-syntax"> </span><span class="identifier-syntax">stopped</span><span class="plain-syntax"> </span><span class="identifier-syntax">with</span><span class="plain-syntax"> </span><span class="identifier-syntax">a</span><span class="plain-syntax"> </span><span class="identifier-syntax">colon</span><span class="plain-syntax"> */</span>
<span class="plain-syntax"> </span><a href="3-snt.html#SP6" class="function-link"><span class="function-syntax">Sentences::make_node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">BW</span><span class="plain-syntax">, </span><span class="character-syntax">'.'</span><span class="plain-syntax">); /* </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">body</span><span class="plain-syntax"> </span><span class="identifier-syntax">with</span><span class="plain-syntax"> </span><span class="identifier-syntax">one</span><span class="plain-syntax"> </span><span class="identifier-syntax">sentence</span><span class="plain-syntax">, </span><span class="identifier-syntax">stopped</span><span class="plain-syntax"> </span><span class="identifier-syntax">with</span><span class="plain-syntax"> </span><span class="identifier-syntax">a</span><span class="plain-syntax"> </span><span class="identifier-syntax">stop</span><span class="plain-syntax"> */</span>
<span class="plain-syntax"> </span><a href="3-snt.html#SP6" class="function-link"><span class="function-syntax">Sentences::make_node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::up_to</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::last_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">AW</span><span class="plain-syntax">)), </span><span class="character-syntax">':'</span><span class="plain-syntax">); </span><span class="comment-syntax"> rule preamble stopped with a colon</span>
<span class="plain-syntax"> </span><a href="3-snt.html#SP6" class="function-link"><span class="function-syntax">Sentences::make_node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">BW</span><span class="plain-syntax">, </span><span class="character-syntax">'.'</span><span class="plain-syntax">); </span><span class="comment-syntax"> rule body with one sentence, stopped with a stop</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
</pre>

View file

@ -93,19 +93,19 @@ which use this module:
</pre>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">WordsModule::start</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Memory::reason_name</span><span class="plain-syntax">(</span><span class="constant-syntax">LEXER_TEXT_MREASON</span><span class="plain-syntax">, </span><span class="string-syntax">"source text"</span><span class="plain-syntax">); </span><span class="comment-syntax"> ho hum</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Memory::reason_name</span><span class="plain-syntax">(</span><span class="constant-syntax">LEXER_TEXT_MREASON</span><span class="plain-syntax">, </span><span class="string-syntax">"source text"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Memory::reason_name</span><span class="plain-syntax">(</span><span class="constant-syntax">LEXER_WORDS_MREASON</span><span class="plain-syntax">, </span><span class="string-syntax">"source text details"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Writers::register_writer</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">, &amp;</span><a href="2-wa.html#SP9" class="function-link"><span class="function-syntax">WordAssemblages::writer</span></a><span class="plain-syntax">); </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">%A</span></span><span class="comment-syntax"> = write word assemblage</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Writers::register_writer_I</span><span class="plain-syntax">(</span><span class="character-syntax">'N'</span><span class="plain-syntax">, &amp;</span><a href="3-lxr.html#SP18" class="function-link"><span class="function-syntax">Lexer::writer</span></a><span class="plain-syntax">); /* |%</span><span class="identifier-syntax">N</span><span class="plain-syntax">| = </span><span class="identifier-syntax">write</span><span class="plain-syntax"> </span><span class="identifier-syntax">word</span><span class="plain-syntax"> </span><span class="identifier-syntax">with</span><span class="plain-syntax"> </span><span class="identifier-syntax">this</span><span class="plain-syntax"> </span><span class="identifier-syntax">number</span><span class="plain-syntax"> */</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Writers::register_writer</span><span class="plain-syntax">(</span><span class="character-syntax">'V'</span><span class="plain-syntax">, &amp;</span><a href="2-vcb.html#SP8" class="function-link"><span class="function-syntax">Vocabulary::writer</span></a><span class="plain-syntax">); /* |%</span><span class="identifier-syntax">V</span><span class="plain-syntax">| = </span><span class="identifier-syntax">write</span><span class="plain-syntax"> </span><span class="identifier-syntax">vocabulary</span><span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax"> */</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Writers::register_writer_W</span><span class="plain-syntax">(</span><span class="character-syntax">'W'</span><span class="plain-syntax">, &amp;</span><a href="3-wrd.html#SP22" class="function-link"><span class="function-syntax">Wordings::writer</span></a><span class="plain-syntax">); /* |%</span><span class="identifier-syntax">W</span><span class="plain-syntax">| = </span><span class="identifier-syntax">write</span><span class="plain-syntax"> </span><span class="reserved-syntax">wording</span><span class="plain-syntax"> */</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Writers::register_writer</span><span class="plain-syntax">(</span><span class="character-syntax">'A'</span><span class="plain-syntax">, &amp;</span><a href="2-wa.html#SP9" class="function-link"><span class="function-syntax">WordAssemblages::writer</span></a><span class="plain-syntax">); </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">%A</span></span><span class="comment-syntax"> = write word assemblage</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Writers::register_writer_I</span><span class="plain-syntax">(</span><span class="character-syntax">'N'</span><span class="plain-syntax">, &amp;</span><a href="3-lxr.html#SP18" class="function-link"><span class="function-syntax">Lexer::writer</span></a><span class="plain-syntax">); </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">%N</span></span><span class="comment-syntax"> = write word with this number</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Writers::register_writer</span><span class="plain-syntax">(</span><span class="character-syntax">'V'</span><span class="plain-syntax">, &amp;</span><a href="2-vcb.html#SP8" class="function-link"><span class="function-syntax">Vocabulary::writer</span></a><span class="plain-syntax">); </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">%V</span></span><span class="comment-syntax"> = write vocabulary entry</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Writers::register_writer_W</span><span class="plain-syntax">(</span><span class="character-syntax">'W'</span><span class="plain-syntax">, &amp;</span><a href="3-wrd.html#SP22" class="function-link"><span class="function-syntax">Wordings::writer</span></a><span class="plain-syntax">); </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">%W</span></span><span class="comment-syntax"> = write wording</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Log::declare_aspect</span><span class="plain-syntax">(</span><span class="constant-syntax">LEXICAL_OUTPUT_DA</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"lexical output"</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Log::declare_aspect</span><span class="plain-syntax">(</span><span class="constant-syntax">VOCABULARY_DA</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"vocabulary"</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Writers::register_logger</span><span class="plain-syntax">(</span><span class="character-syntax">'f'</span><span class="plain-syntax">, </span><a href="2-wa.html#SP13" class="function-link"><span class="function-syntax">WordAssemblages::log</span></a><span class="plain-syntax">); /* |$</span><span class="identifier-syntax">f</span><span class="plain-syntax">| = </span><span class="identifier-syntax">log</span><span class="plain-syntax"> </span><span class="identifier-syntax">word</span><span class="plain-syntax"> </span><span class="identifier-syntax">assemblage</span><span class="plain-syntax"> */</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Writers::register_logger</span><span class="plain-syntax">(</span><span class="character-syntax">'v'</span><span class="plain-syntax">, </span><a href="2-vcb.html#SP6" class="function-link"><span class="function-syntax">Vocabulary::log</span></a><span class="plain-syntax">); /* |$</span><span class="identifier-syntax">v</span><span class="plain-syntax">| = </span><span class="identifier-syntax">log</span><span class="plain-syntax"> </span><span class="identifier-syntax">vocabulary</span><span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax"> */</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Writers::register_logger</span><span class="plain-syntax">(</span><span class="character-syntax">'f'</span><span class="plain-syntax">, </span><a href="2-wa.html#SP13" class="function-link"><span class="function-syntax">WordAssemblages::log</span></a><span class="plain-syntax">); </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">$f</span></span><span class="comment-syntax"> = log word assemblage</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Writers::register_logger</span><span class="plain-syntax">(</span><span class="character-syntax">'v'</span><span class="plain-syntax">, </span><a href="2-vcb.html#SP6" class="function-link"><span class="function-syntax">Vocabulary::log</span></a><span class="plain-syntax">); </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">$v</span></span><span class="comment-syntax"> = log vocabulary entry</span>
<span class="plain-syntax"> </span><a href="3-lxr.html#SP11" class="function-link"><span class="function-syntax">Lexer::start</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-vcb.html#SP3" class="function-link"><span class="function-syntax">Vocabulary::create_punctuation</span></a><span class="plain-syntax">();</span>

View file

@ -410,7 +410,7 @@ they're treated more like literal texts and I6 inclusions.
<span class="plain-syntax"> </span><span class="reserved-syntax">unsigned</span><span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">hash_code</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">wchar_t</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax"> = </span><span class="identifier-syntax">text</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">p</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'-'</span><span class="plain-syntax">: </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">p</span><span class="plain-syntax">[1] == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">break</span><span class="plain-syntax">; /* </span><span class="identifier-syntax">an</span><span class="plain-syntax"> </span><span class="identifier-syntax">isolated</span><span class="plain-syntax"> </span><span class="identifier-syntax">minus</span><span class="plain-syntax"> </span><span class="identifier-syntax">sign</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax"> </span><span class="identifier-syntax">ordinary</span><span class="plain-syntax"> </span><span class="identifier-syntax">word</span><span class="plain-syntax"> */</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'-'</span><span class="plain-syntax">: </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">p</span><span class="plain-syntax">[1] == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">break</span><span class="plain-syntax">; </span><span class="comment-syntax"> an isolated minus sign is an ordinary word</span>
<span class="plain-syntax"> </span><span class="comment-syntax"> and otherwise fall into...</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'0'</span><span class="plain-syntax">: </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'1'</span><span class="plain-syntax">: </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'2'</span><span class="plain-syntax">: </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'3'</span><span class="plain-syntax">: </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'4'</span><span class="plain-syntax">:</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'5'</span><span class="plain-syntax">: </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'6'</span><span class="plain-syntax">: </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'7'</span><span class="plain-syntax">: </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'8'</span><span class="plain-syntax">: </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'9'</span><span class="plain-syntax">:</span>

View file

@ -144,14 +144,14 @@ less than the following variable's value.
characters cause word divisions, or signal literals.
</p>
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">STRING_BEGIN</span><span class="plain-syntax"> </span><span class="character-syntax">'"'</span><span class="plain-syntax"> /* </span><span class="identifier-syntax">Strings</span><span class="plain-syntax"> </span><span class="identifier-syntax">are</span><span class="plain-syntax"> </span><span class="identifier-syntax">always</span><span class="plain-syntax"> </span><span class="reserved-syntax">double</span><span class="plain-syntax">-</span><span class="identifier-syntax">quoted</span><span class="plain-syntax"> */</span>
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">STRING_BEGIN</span><span class="plain-syntax"> </span><span class="character-syntax">'"'</span><span class="plain-syntax"> </span><span class="comment-syntax"> Strings are always double-quoted</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">STRING_END</span><span class="plain-syntax"> </span><span class="character-syntax">'"'</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">TEXT_SUBSTITUTION_BEGIN</span><span class="plain-syntax"> </span><span class="character-syntax">'['</span><span class="plain-syntax"> /* </span><span class="identifier-syntax">Inside</span><span class="plain-syntax"> </span><span class="identifier-syntax">strings</span><span class="plain-syntax">, </span><span class="identifier-syntax">this</span><span class="plain-syntax"> </span><span class="identifier-syntax">denotes</span><span class="plain-syntax"> </span><span class="identifier-syntax">a</span><span class="plain-syntax"> </span><span class="identifier-syntax">text</span><span class="plain-syntax"> </span><span class="identifier-syntax">substitution</span><span class="plain-syntax"> */</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">TEXT_SUBSTITUTION_BEGIN</span><span class="plain-syntax"> </span><span class="character-syntax">'['</span><span class="plain-syntax"> </span><span class="comment-syntax"> Inside strings, this denotes a text substitution</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">TEXT_SUBSTITUTION_END</span><span class="plain-syntax"> </span><span class="character-syntax">']'</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">TEXT_SUBSTITUTION_SEPARATOR</span><span class="plain-syntax"> </span><span class="character-syntax">','</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">COMMENT_BEGIN</span><span class="plain-syntax"> </span><span class="character-syntax">'['</span><span class="plain-syntax"> /* </span><span class="identifier-syntax">Text</span><span class="plain-syntax"> </span><span class="identifier-syntax">between</span><span class="plain-syntax"> </span><span class="identifier-syntax">these</span><span class="plain-syntax">, </span><span class="identifier-syntax">outside</span><span class="plain-syntax"> </span><span class="identifier-syntax">strings</span><span class="plain-syntax">, </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">comment</span><span class="plain-syntax"> */</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">COMMENT_BEGIN</span><span class="plain-syntax"> </span><span class="character-syntax">'['</span><span class="plain-syntax"> </span><span class="comment-syntax"> Text between these, outside strings, is comment</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">COMMENT_END</span><span class="plain-syntax"> </span><span class="character-syntax">']'</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">INFORM6_ESCAPE_BEGIN_1</span><span class="plain-syntax"> </span><span class="character-syntax">'('</span><span class="plain-syntax"> /* </span><span class="identifier-syntax">Text</span><span class="plain-syntax"> </span><span class="identifier-syntax">beginning</span><span class="plain-syntax"> </span><span class="identifier-syntax">with</span><span class="plain-syntax"> </span><span class="identifier-syntax">this</span><span class="plain-syntax"> </span><span class="identifier-syntax">pair</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">literal</span><span class="plain-syntax"> </span><span class="identifier-syntax">I6</span><span class="plain-syntax"> </span><span class="identifier-syntax">code</span><span class="plain-syntax"> */</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">INFORM6_ESCAPE_BEGIN_1</span><span class="plain-syntax"> </span><span class="character-syntax">'('</span><span class="plain-syntax"> </span><span class="comment-syntax"> Text beginning with this pair is literal I6 code</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">INFORM6_ESCAPE_BEGIN_2</span><span class="plain-syntax"> </span><span class="character-syntax">'-'</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">INFORM6_ESCAPE_END_1</span><span class="plain-syntax"> </span><span class="character-syntax">'-'</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">INFORM6_ESCAPE_END_2</span><span class="plain-syntax"> </span><span class="character-syntax">')'</span>
@ -626,7 +626,7 @@ always being "off").
<span class="plain-syntax"> </span><span class="identifier-syntax">lexer_allow_I6_escapes</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="comment-syntax"> reset the internal states</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">lxs_most_significant_space_char</span><span class="plain-syntax"> = </span><span class="character-syntax">'\n'</span><span class="plain-syntax">; /* </span><span class="identifier-syntax">we</span><span class="plain-syntax"> </span><span class="identifier-syntax">imagine</span><span class="plain-syntax"> </span><span class="identifier-syntax">each</span><span class="plain-syntax"> </span><span class="identifier-syntax">lexer</span><span class="plain-syntax"> </span><span class="identifier-syntax">feed</span><span class="plain-syntax"> </span><span class="identifier-syntax">starting</span><span class="plain-syntax"> </span><span class="identifier-syntax">a</span><span class="plain-syntax"> </span><span class="identifier-syntax">new</span><span class="plain-syntax"> </span><span class="identifier-syntax">line</span><span class="plain-syntax"> */</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">lxs_most_significant_space_char</span><span class="plain-syntax"> = </span><span class="character-syntax">'\n'</span><span class="plain-syntax">; </span><span class="comment-syntax"> we imagine each lexer feed starting a new line</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">lxs_number_of_tab_stops</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">; </span><span class="comment-syntax"> but not yet indented with tabs</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">lxs_this_line_is_empty_so_far</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; </span><span class="comment-syntax"> clearly</span>
@ -913,7 +913,7 @@ and the code in the previous paragraph has been watching them for us.
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">lw_array</span><span class="plain-syntax">[</span><span class="identifier-syntax">lexer_wordcount</span><span class="plain-syntax">].</span><span class="element-syntax">lw_break</span><span class="plain-syntax"> = </span><span class="identifier-syntax">lxs_most_significant_space_char</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">lxs_most_significant_space_char</span><span class="plain-syntax"> = </span><span class="character-syntax">' '</span><span class="plain-syntax">; /* </span><span class="identifier-syntax">waiting</span><span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">next</span><span class="plain-syntax"> </span><span class="identifier-syntax">run</span><span class="plain-syntax"> </span><span class="identifier-syntax">of</span><span class="plain-syntax"> </span><span class="identifier-syntax">whitespace</span><span class="plain-syntax">, </span><span class="identifier-syntax">after</span><span class="plain-syntax"> </span><span class="identifier-syntax">this</span><span class="plain-syntax"> </span><span class="identifier-syntax">word</span><span class="plain-syntax"> */</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">lxs_most_significant_space_char</span><span class="plain-syntax"> = </span><span class="character-syntax">' '</span><span class="plain-syntax">; </span><span class="comment-syntax"> waiting for the next run of whitespace, after this word</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">lxs_number_of_tab_stops</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-lxr.html#SP26">&#167;26</a>.</li></ul>
@ -1173,7 +1173,7 @@ finished.
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">default:</span><span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"in unknown literal mode"</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">lxs_literal_mode</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><span class="character-syntax">' '</span><span class="plain-syntax">; /* </span><span class="identifier-syntax">trigger</span><span class="plain-syntax"> </span><span class="identifier-syntax">completion</span><span class="plain-syntax"> </span><span class="identifier-syntax">of</span><span class="plain-syntax"> </span><span class="identifier-syntax">this</span><span class="plain-syntax"> </span><span class="identifier-syntax">word</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">lxs_literal_mode</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><span class="character-syntax">' '</span><span class="plain-syntax">; </span><span class="comment-syntax"> trigger completion of this word</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-lxr.html#SP26">&#167;26</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP26_8"></a><b>&#167;26.8. Breaking strings up at text substitutions. </b>When text contains text substitutions, these are ordinarily ignored by the
@ -1211,7 +1211,7 @@ to recording the character, so to get rid of the <span class="extract"><span cla
<span class="plain-syntax"> </span><a href="3-lxr.html#SP26" class="function-link"><span class="function-syntax">Lexer::feed_char_into_lexer</span></a><span class="plain-syntax">(</span><span class="constant-syntax">STRING_END</span><span class="plain-syntax">); </span><span class="comment-syntax"> feed </span><span class="extract"><span class="extract-syntax">"</span></span><span class="comment-syntax"> to close the old string</span>
<span class="plain-syntax"> </span><a href="3-lxr.html#SP26" class="function-link"><span class="function-syntax">Lexer::feed_char_into_lexer</span></a><span class="plain-syntax">(</span><span class="character-syntax">' '</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-lxr.html#SP26" class="function-link"><span class="function-syntax">Lexer::feed_char_into_lexer</span></a><span class="plain-syntax">(</span><span class="constant-syntax">TEXT_SUBSTITUTION_SEPARATOR</span><span class="plain-syntax">); </span><span class="comment-syntax"> feed </span><span class="extract"><span class="extract-syntax">,</span></span><span class="comment-syntax"> to start new word</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><span class="character-syntax">' '</span><span class="plain-syntax">; /* </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">lexer</span><span class="plain-syntax"> </span><span class="identifier-syntax">now</span><span class="plain-syntax"> </span><span class="identifier-syntax">goes</span><span class="plain-syntax"> </span><span class="identifier-syntax">on</span><span class="plain-syntax"> </span><span class="identifier-syntax">to</span><span class="plain-syntax"> </span><span class="identifier-syntax">record</span><span class="plain-syntax"> </span><span class="identifier-syntax">a</span><span class="plain-syntax"> </span><span class="identifier-syntax">space</span><span class="plain-syntax">, </span><span class="identifier-syntax">which</span><span class="plain-syntax"> </span><span class="identifier-syntax">will</span><span class="plain-syntax"> </span><span class="identifier-syntax">end</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> |,| </span><span class="identifier-syntax">word</span><span class="plain-syntax"> */</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><span class="character-syntax">' '</span><span class="plain-syntax">; </span><span class="comment-syntax"> the lexer now goes on to record a space, which will end the </span><span class="extract"><span class="extract-syntax">,</span></span><span class="comment-syntax"> word</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">lxs_scanning_text_substitution</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; </span><span class="comment-syntax"> but remember that we must get back again</span>
<span class="plain-syntax"> }</span>
</pre>
@ -1243,7 +1243,7 @@ spurious space is never fed, and there is no problem.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">lexer_divide_strings_at_text_substitutions</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="constant-syntax">TEXT_SUBSTITUTION_END</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">lxs_scanning_text_substitution</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> *(</span><span class="identifier-syntax">lexer_hwm</span><span class="plain-syntax">-1) = </span><span class="constant-syntax">TEXT_SUBSTITUTION_SEPARATOR</span><span class="plain-syntax">; </span><span class="comment-syntax"> overwrite recorded copy of </span><span class="extract"><span class="extract-syntax">]</span></span><span class="comment-syntax"> with </span><span class="extract"><span class="extract-syntax">,</span></span>
<span class="plain-syntax"> </span><a href="3-lxr.html#SP26" class="function-link"><span class="function-syntax">Lexer::feed_char_into_lexer</span></a><span class="plain-syntax">(</span><span class="character-syntax">' '</span><span class="plain-syntax">); /* </span><span class="identifier-syntax">then</span><span class="plain-syntax"> </span><span class="identifier-syntax">feed</span><span class="plain-syntax"> </span><span class="identifier-syntax">a</span><span class="plain-syntax"> </span><span class="identifier-syntax">space</span><span class="plain-syntax"> </span><span class="identifier-syntax">to</span><span class="plain-syntax"> </span><span class="identifier-syntax">end</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> |,| </span><span class="identifier-syntax">word</span><span class="plain-syntax"> */</span>
<span class="plain-syntax"> </span><a href="3-lxr.html#SP26" class="function-link"><span class="function-syntax">Lexer::feed_char_into_lexer</span></a><span class="plain-syntax">(</span><span class="character-syntax">' '</span><span class="plain-syntax">); </span><span class="comment-syntax"> then feed a space to end the </span><span class="extract"><span class="extract-syntax">,</span></span><span class="comment-syntax"> word</span>
<span class="plain-syntax"> </span><a href="3-lxr.html#SP26" class="function-link"><span class="function-syntax">Lexer::feed_char_into_lexer</span></a><span class="plain-syntax">(</span><span class="constant-syntax">STRING_BEGIN</span><span class="plain-syntax">); </span><span class="comment-syntax"> then feed </span><span class="extract"><span class="extract-syntax">"</span></span><span class="comment-syntax"> to open a new string</span>
<span class="plain-syntax"> }</span>
</pre>

View file

@ -126,13 +126,13 @@ instance, so they are not similarly converted.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">newline_char</span><span class="plain-syntax"> == </span><span class="character-syntax">'\x0d'</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">newline_char</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">; </span><span class="reserved-syntax">continue</span><span class="plain-syntax">; </span><span class="comment-syntax"> suppress </span><span class="extract"><span class="extract-syntax">0x000A</span></span><span class="comment-syntax"> when it follows </span><span class="extract"><span class="extract-syntax">0x000D</span></span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">newline_char</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cr</span><span class="plain-syntax">; </span><span class="identifier-syntax">cr</span><span class="plain-syntax"> = </span><span class="character-syntax">'\n'</span><span class="plain-syntax">; /* </span><span class="identifier-syntax">and</span><span class="plain-syntax"> </span><span class="identifier-syntax">otherwise</span><span class="plain-syntax"> </span><span class="identifier-syntax">convert</span><span class="plain-syntax"> </span><span class="identifier-syntax">to</span><span class="plain-syntax"> |</span><span class="character-syntax">'\n'</span><span class="plain-syntax">| */</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">newline_char</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cr</span><span class="plain-syntax">; </span><span class="identifier-syntax">cr</span><span class="plain-syntax"> = </span><span class="character-syntax">'\n'</span><span class="plain-syntax">; </span><span class="comment-syntax"> and otherwise convert to </span><span class="extract"><span class="extract-syntax">'\n'</span></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="character-syntax">'\x0d'</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">newline_char</span><span class="plain-syntax"> == </span><span class="character-syntax">'\x0a'</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">newline_char</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">; </span><span class="reserved-syntax">continue</span><span class="plain-syntax">; </span><span class="comment-syntax"> suppress </span><span class="extract"><span class="extract-syntax">0x000D</span></span><span class="comment-syntax"> when it follows </span><span class="extract"><span class="extract-syntax">0x000A</span></span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">newline_char</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cr</span><span class="plain-syntax">; </span><span class="identifier-syntax">cr</span><span class="plain-syntax"> = </span><span class="character-syntax">'\n'</span><span class="plain-syntax">; /* </span><span class="identifier-syntax">and</span><span class="plain-syntax"> </span><span class="identifier-syntax">otherwise</span><span class="plain-syntax"> </span><span class="identifier-syntax">convert</span><span class="plain-syntax"> </span><span class="identifier-syntax">to</span><span class="plain-syntax"> |</span><span class="character-syntax">'\n'</span><span class="plain-syntax">| */</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">newline_char</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cr</span><span class="plain-syntax">; </span><span class="identifier-syntax">cr</span><span class="plain-syntax"> = </span><span class="character-syntax">'\n'</span><span class="plain-syntax">; </span><span class="comment-syntax"> and otherwise convert to </span><span class="extract"><span class="extract-syntax">'\n'</span></span>
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">default:</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">newline_char</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
@ -182,11 +182,11 @@ quoted text (i.e., their text within double-quotes).
<span class="plain-syntax"> </span><span class="comment-syntax"> inside quoted text, each run of non-whitespace counts as 1 word</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">p</span><span class="plain-syntax">++; </span><span class="comment-syntax"> skip opening quotation mark</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (*</span><span class="identifier-syntax">p</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">while</span><span class="plain-syntax"> ((*</span><span class="identifier-syntax">p</span><span class="plain-syntax"> == </span><span class="character-syntax">' '</span><span class="plain-syntax">) || (*</span><span class="identifier-syntax">p</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NEWLINE_IN_STRING</span><span class="plain-syntax">)) </span><span class="identifier-syntax">p</span><span class="plain-syntax">++; /* </span><span class="identifier-syntax">move</span><span class="plain-syntax"> </span><span class="identifier-syntax">past</span><span class="plain-syntax"> </span><span class="identifier-syntax">white</span><span class="plain-syntax"> </span><span class="identifier-syntax">space</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">p</span><span class="plain-syntax"> == </span><span class="character-syntax">'"'</span><span class="plain-syntax">) || (*</span><span class="identifier-syntax">p</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">)) </span><span class="reserved-syntax">break</span><span class="plain-syntax">; /* </span><span class="identifier-syntax">stop</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> </span><span class="identifier-syntax">this</span><span class="plain-syntax"> </span><span class="identifier-syntax">reaches</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">end</span><span class="plain-syntax"> */</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> ((*</span><span class="identifier-syntax">p</span><span class="plain-syntax"> == </span><span class="character-syntax">' '</span><span class="plain-syntax">) || (*</span><span class="identifier-syntax">p</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NEWLINE_IN_STRING</span><span class="plain-syntax">)) </span><span class="identifier-syntax">p</span><span class="plain-syntax">++; </span><span class="comment-syntax"> move past white space</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((*</span><span class="identifier-syntax">p</span><span class="plain-syntax"> == </span><span class="character-syntax">'"'</span><span class="plain-syntax">) || (*</span><span class="identifier-syntax">p</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">)) </span><span class="reserved-syntax">break</span><span class="plain-syntax">; </span><span class="comment-syntax"> stop if this reaches the end</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">N</span><span class="plain-syntax">++; </span><span class="comment-syntax"> otherwise we have a word</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> ((*</span><span class="identifier-syntax">p</span><span class="plain-syntax"> != </span><span class="character-syntax">' '</span><span class="plain-syntax">) &amp;&amp; (*</span><span class="identifier-syntax">p</span><span class="plain-syntax"> != </span><span class="identifier-syntax">NEWLINE_IN_STRING</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> &amp;&amp; (*</span><span class="identifier-syntax">p</span><span class="plain-syntax"> != </span><span class="character-syntax">'"'</span><span class="plain-syntax">) &amp;&amp; (*</span><span class="identifier-syntax">p</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">)) </span><span class="identifier-syntax">p</span><span class="plain-syntax">++; /* </span><span class="identifier-syntax">move</span><span class="plain-syntax"> </span><span class="identifier-syntax">to</span><span class="plain-syntax"> </span><span class="identifier-syntax">white</span><span class="plain-syntax"> </span><span class="identifier-syntax">space</span><span class="plain-syntax"> </span><span class="identifier-syntax">or</span><span class="plain-syntax"> </span><span class="identifier-syntax">end</span><span class="plain-syntax"> */</span>
<span class="plain-syntax"> &amp;&amp; (*</span><span class="identifier-syntax">p</span><span class="plain-syntax"> != </span><span class="character-syntax">'"'</span><span class="plain-syntax">) &amp;&amp; (*</span><span class="identifier-syntax">p</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">)) </span><span class="identifier-syntax">p</span><span class="plain-syntax">++; </span><span class="comment-syntax"> move to white space or end</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="comment-syntax"> outside quoted text, each lexer word not wholly composed of punctuation scores 1</span>

View file

@ -425,7 +425,7 @@ and we return <span class="extract"><span class="extract-syntax">w2</span></span
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Wordings::writer</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">Wordings::writer</span></span>:<br/>Words Module - <a href="1-wm.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">format_string</span><span class="plain-syntax">, </span><span class="reserved-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</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">format_string</span><span class="plain-syntax">[0]) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'W'</span><span class="plain-syntax">: /* </span><span class="identifier-syntax">bare</span><span class="plain-syntax"> |%</span><span class="identifier-syntax">W</span><span class="plain-syntax">| </span><span class="identifier-syntax">means</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">same</span><span class="plain-syntax"> </span><span class="identifier-syntax">as</span><span class="plain-syntax"> |%-</span><span class="identifier-syntax">W</span><span class="plain-syntax">|, </span><span class="identifier-syntax">so</span><span class="plain-syntax"> </span><span class="identifier-syntax">fall</span><span class="plain-syntax"> </span><span class="identifier-syntax">through</span><span class="plain-syntax"> </span><span class="identifier-syntax">to</span><span class="plain-syntax">... */</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'W'</span><span class="plain-syntax">: </span><span class="comment-syntax"> bare </span><span class="extract"><span class="extract-syntax">%W</span></span><span class="comment-syntax"> means the same as </span><span class="extract"><span class="extract-syntax">%-W</span></span><span class="comment-syntax">, so fall through to...</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'-'</span><span class="plain-syntax">: </span><span class="named-paragraph-container code-font"><a href="3-wrd.html#SP22_1" class="named-paragraph-link"><span class="named-paragraph">Write the stream with normalised casing</span><span class="named-paragraph-number">22.1</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="character-syntax">'+'</span><span class="plain-syntax">: </span><span class="named-paragraph-container code-font"><a href="3-wrd.html#SP22_2" class="named-paragraph-link"><span class="named-paragraph">Write the stream raw</span><span class="named-paragraph-number">22.2</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="character-syntax">'&lt;'</span><span class="plain-syntax">: </span><span class="named-paragraph-container code-font"><a href="3-wrd.html#SP22_3" class="named-paragraph-link"><span class="named-paragraph">Write the stream in an abbreviated raw form</span><span class="named-paragraph-number">22.3</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>

View file

@ -35,7 +35,7 @@ DECLARE_CLASS(ptoken)
=
void WordsModule::start(void) {
Memory::reason_name(LEXER_TEXT_MREASON, "source text"); /* ho hum */
Memory::reason_name(LEXER_TEXT_MREASON, "source text");
Memory::reason_name(LEXER_WORDS_MREASON, "source text details");
Writers::register_writer('A', &WordAssemblages::writer); /* |%A| = write word assemblage */