2019-03-17 14:40:57 +02:00
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
< html >
< head >
2020-04-14 19:56:54 +03:00
< title > Text Literals< / title >
2020-05-03 03:20:55 +03:00
< link href = "../docs-assets/Breadcrumbs.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
2020-03-19 02:11:25 +02:00
< meta name = "viewport" content = "width=device-width initial-scale=1" >
2019-03-17 14:40:57 +02:00
< meta http-equiv = "Content-Type" content = "text/html; charset=utf-8" >
< meta http-equiv = "Content-Language" content = "en-gb" >
2020-05-03 03:01:21 +03:00
2020-05-03 03:20:55 +03:00
< 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" >
2020-05-03 03:01:21 +03:00
< script >
function togglePopup(material_id) {
var popup = document.getElementById(material_id);
popup.classList.toggle("show");
}
< / script >
2020-05-03 03:20:55 +03:00
< 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" >
2020-04-14 19:56:54 +03:00
2019-03-17 14:40:57 +02:00
< / head >
2020-05-03 03:01:21 +03:00
< body class = "commentary-font" >
2020-03-19 02:11:25 +02:00
< nav role = "navigation" >
2020-04-14 19:56:54 +03:00
< h1 > < a href = "../index.html" >
2020-05-03 18:34:53 +03:00
< img src = "../docs-assets/Inform.png" height = 72" >
2020-04-14 19:56:54 +03:00
< / a > < / h1 >
< ul > < li > < a href = "../compiler.html" > compiler tools< / a > < / li >
2020-03-19 02:11:25 +02:00
< 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 >
2020-04-14 19:56:54 +03:00
< / ul > < h2 > Compiler Webs< / h2 > < ul >
2020-03-19 02:11:25 +02:00
< 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 >
2020-04-14 19:56:54 +03:00
< / ul > < h2 > Inbuild Modules< / h2 > < ul >
< li > < a href = "../supervisor-module/index.html" > supervisor< / a > < / li >
< / ul > < h2 > Inform7 Modules< / h2 > < ul >
2020-08-26 12:52:50 +03:00
< li > < a href = "../core-module/index.html" > core< / a > < / li >
< li > < a href = "../assertions-module/index.html" > assertions< / a > < / li >
2021-02-06 20:00:34 +02:00
< li > < a href = "../values-module/index.html" > values< / a > < / li >
2020-08-26 12:52:50 +03:00
< li > < a href = "../knowledge-module/index.html" > knowledge< / a > < / li >
< li > < a href = "../imperative-module/index.html" > imperative< / a > < / li >
2021-02-06 20:00:34 +02:00
< li > < a href = "index.html" > < span class = "selectedlink" > runtime< / span > < / a > < / li >
2020-03-19 02:11:25 +02:00
< 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 >
2020-04-14 19:56:54 +03:00
< / ul > < h2 > Inter Modules< / h2 > < ul >
< li > < a href = "../bytecode-module/index.html" > bytecode< / a > < / li >
2020-03-19 02:11:25 +02:00
< li > < a href = "../building-module/index.html" > building< / a > < / li >
< li > < a href = "../codegen-module/index.html" > codegen< / a > < / li >
2020-05-20 02:02:28 +03:00
< / ul > < h2 > Services< / h2 > < ul >
2020-04-14 19:56:54 +03:00
< li > < a href = "../arch-module/index.html" > arch< / a > < / li >
2020-08-20 01:36:18 +03:00
< li > < a href = "../calculus-module/index.html" > calculus< / a > < / li >
2020-04-14 19:56:54 +03:00
< li > < a href = "../html-module/index.html" > html< / a > < / li >
2020-05-20 02:02:28 +03:00
< li > < a href = "../inflections-module/index.html" > inflections< / a > < / li >
2020-08-20 01:36:18 +03:00
< li > < a href = "../kinds-module/index.html" > kinds< / a > < / li >
2020-05-20 02:02:28 +03:00
< li > < a href = "../linguistics-module/index.html" > linguistics< / a > < / li >
< li > < a href = "../problems-module/index.html" > problems< / a > < / li >
2020-08-20 01:36:18 +03:00
< li > < a href = "../syntax-module/index.html" > syntax< / a > < / li >
< li > < a href = "../words-module/index.html" > words< / a > < / li >
2020-03-19 02:11:25 +02:00
< li > < a href = "../../../inweb/docs/foundation-module/index.html" > foundation< / a > < / li >
2020-04-14 19:56:54 +03:00
< / ul >
2020-03-19 02:11:25 +02:00
< / nav >
< main role = "main" >
2020-05-03 03:01:21 +03:00
<!-- Weave of 'Text Literals' generated by Inweb -->
< div class = "breadcrumbs" >
2021-04-21 14:02:18 +03:00
< ul class = "crumbs" > < li > < a href = "../index.html" > Home< / a > < / li > < li > < a href = "../compiler.html" > Inform7< / a > < / li > < li > < a href = "index.html" > runtime< / a > < / li > < li > < a href = "index.html#4" > Chapter 4: Enclosed Resources< / a > < / li > < li > < b > Text Literals< / b > < / li > < / ul > < / div >
2020-05-03 03:01:21 +03:00
< p class = "purpose" > In this section we compile text constants.< / p >
2019-03-17 14:40:57 +02:00
2021-04-22 09:19:25 +03:00
< ul class = "toc" > < li > < a href = "4-tl.html#SP1" > § 1. Runtime representation< / a > < / li > < / ul > < hr class = "tocbar" >
< p class = "commentary firstcommentary" > < a id = "SP1" class = "paragraph-anchor" > < / a > < b > § 1. Runtime representation. < / b > Literal texts arise from source text such as:
< / p >
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > let< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Q< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > be< / span > < span class = "plain-syntax" > < / span > < span class = "string-syntax" > "the quick brown fox"< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > say< / span > < span class = "plain-syntax" > < / span > < span class = "string-syntax" > "Where has that indolent hound got to?"< / span > < span class = "plain-syntax" > ;< / span >
< / pre >
< p class = "commentary" > Note that only < span class = "extract" > < span class = "extract-syntax" > "the quick brown fox"< / span > < / span > is actually a constant value here; the
text concerning the hound is turned directly into operands for Inter instructions
for printing text, and never needs to be a value. The fox text, on the other hand,
is being stored in < span class = "extract" > < span class = "extract-syntax" > Q< / span > < / span > , so it clearly has to be something we can manipulate and
copy.
< / p >
< p class = "commentary" > Text at runtime is stored in small blocks, always of size 2:
< / p >
2021-04-21 14:02:18 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
2021-04-22 09:19:25 +03:00
< span class = "plain-syntax" > small block:< / span >
< span class = "plain-syntax" > Q ----------------> format< / span >
< span class = "plain-syntax" > content< / span >
< / pre >
< p class = "commentary" > The format can be one of four possible alternatives at runtime, and the runtime
system may dynamically switch between them; essentially it uses this to
decompress text from its "packed" form to a character-accessible form only
on demand.
< / p >
< p class = "commentary" > The compiler generates only one of these formats: < span class = "extract" > < span class = "extract-syntax" > CONSTANT_PACKED_TEXT_STORAGE< / span > < / span > .
In this format, the < span class = "extract" > < span class = "extract-syntax" > content< / span > < / span > is a packed string, and there is no long block
to make. (Note that in Inter, as in the Inform 6 virtual machines on which it
is based, a pointer to a function to print text is a valid packed string: so
the < span class = "extract" > < span class = "extract-syntax" > content< / span > < / span > will sometimes be a function, and sometimes a string array.)
< / p >
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "identifier-syntax" > inter_name< / span > < span class = "plain-syntax" > *< / span > < span class = "function-syntax" > TextLiterals::small_block< / 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" > TextLiterals::small_block< / span > < / span > :< br / > < a href = "4-tl.html#SP2" > § 2< / a > , < a href = "4-tl.html#SP15" > § 15< / a > < br / > Text Substitutions - < a href = "4-ts.html#SP7_1" > § 7.1< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > inter_name< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > content< / span > < span class = "plain-syntax" > ) {< / span >
2021-04-21 14:02:18 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > inter_name< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > N< / span > < span class = "plain-syntax" > = < / span > < a href = "4-enc.html#SP2" class = "function-link" > < span class = "function-syntax" > Enclosures::new_small_block_for_constant< / span > < / a > < span class = "plain-syntax" > ();< / span >
2021-04-22 09:19:25 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < a href = "4-tl.html#SP1" class = "function-link" > < span class = "function-syntax" > TextLiterals::small_block_at< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > content< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > N< / span > < span class = "plain-syntax" > );< / span >
2021-04-21 14:02:18 +03:00
< span class = "plain-syntax" > }< / span >
2021-04-22 09:19:25 +03:00
< span class = "identifier-syntax" > inter_name< / span > < span class = "plain-syntax" > *< / span > < span class = "function-syntax" > TextLiterals::small_block_at< / 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" > TextLiterals::small_block_at< / span > < / span > :< br / > < a href = "4-tl.html#SP14_1" > § 14.1< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > inter_name< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > content< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > inter_name< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > small_block< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > packaging_state< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > save< / span > < span class = "plain-syntax" > = < / span > < a href = "2-ea.html#SP2" class = "function-link" > < span class = "function-syntax" > EmitArrays::begin< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > small_block< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > K_value< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < a href = "2-ea.html#SP4" class = "function-link" > < span class = "function-syntax" > EmitArrays::iname_entry< / span > < / a > < span class = "plain-syntax" > (< / span > < a href = "2-hrr.html#SP11" class = "function-link" > < span class = "function-syntax" > Hierarchy::find< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > CONSTANT_PACKED_TEXT_STORAGE_HL< / span > < span class = "plain-syntax" > ));< / span >
< span class = "plain-syntax" > < / span > < a href = "2-ea.html#SP4" class = "function-link" > < span class = "function-syntax" > EmitArrays::iname_entry< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > content< / span > < span class = "plain-syntax" > );< / span >
2021-04-21 14:02:18 +03:00
< span class = "plain-syntax" > < / span > < a href = "2-ea.html#SP6" class = "function-link" > < span class = "function-syntax" > EmitArrays::end< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > save< / 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" > small_block< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2021-04-22 09:19:25 +03:00
< / pre >
< p class = "commentary firstcommentary" > < a id = "SP2" class = "paragraph-anchor" > < / a > < b > § 2. < / b > The default text is empty:
< / p >
2021-04-21 14:02:18 +03:00
2021-04-22 09:19:25 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
2021-04-21 14:02:18 +03:00
< span class = "identifier-syntax" > inter_name< / span > < span class = "plain-syntax" > *< / span > < span class = "function-syntax" > TextLiterals::default_text< / 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" > TextLiterals::default_text< / span > < / span > :< br / > < a href = "4-tl.html#SP15" > § 15< / a > < br / > Runtime Support for Kinds - < a href = "5-rsfk.html#SP5" > § 5< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > ) {< / span >
2021-04-22 09:19:25 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < a href = "4-tl.html#SP1" class = "function-link" > < span class = "function-syntax" > TextLiterals::small_block< / span > < / a > < span class = "plain-syntax" > (< / span > < a href = "2-hrr.html#SP11" class = "function-link" > < span class = "function-syntax" > Hierarchy::find< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > EMPTY_TEXT_PACKED_HL< / span > < span class = "plain-syntax" > ));< / span >
2021-04-21 14:02:18 +03:00
< span class = "plain-syntax" > }< / span >
< / pre >
2021-04-22 09:19:25 +03:00
< p class = "commentary firstcommentary" > < a id = "SP3" class = "paragraph-anchor" > < / a > < b > § 3. < / b > Each literal text needed is stored as a "small block array", or SBA, with
2021-02-06 20:00:34 +02:00
just two words in it. These are then compiled in the Inter hierarchy in
alphabetical sequence, with no repetitions. Because of that, a numerical
comparison of the addresses of these literal texts is equivalent to an
alphabetical comparison of their contents.
2019-03-17 14:40:57 +02:00
< / p >
2021-02-06 20:00:34 +02:00
< p class = "commentary" > But it means we must store up every literal text, and keep them in a sorted
condition. To do so reasonably efficiently, we use a "red-black tree": a form of
balanced binary tree structure such that nodes appear in alphabetical order
from left to right in the tree, but which has a roughly equal depth throughout,
so that the number of string comparisons needed to search it is nearly the
binary logarithm of the number of nodes.
2019-03-17 14:40:57 +02:00
< / p >
2021-02-06 20:00:34 +02:00
< p class = "commentary" > For an account of the theory, see Sedgewick, "Algorithms" (2nd edn, chap. 15),
or < a href = "https://en.wikipedia.org/wiki/Red– black_tree" class = "external" > this Wikipedia page< / a > .
2019-03-17 14:40:57 +02:00
< / p >
2021-02-06 20:00:34 +02:00
< p class = "commentary" > The name is used because each node in the tree is marked either "red" or "black":
2019-03-17 14:40:57 +02:00
< / p >
2020-05-03 03:01:21 +03:00
< pre class = "definitions code-font" > < span class = "definition-keyword" > define< / span > < span class = "constant-syntax" > RED_NODE< / span > < span class = "plain-syntax" > < / span > < span class = "constant-syntax" > 1< / span >
< span class = "definition-keyword" > define< / span > < span class = "constant-syntax" > BLACK_NODE< / span > < span class = "plain-syntax" > < / span > < span class = "constant-syntax" > 2< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-22 09:19:25 +03:00
< p class = "commentary firstcommentary" > < a id = "SP4" class = "paragraph-anchor" > < / a > < b > § 4. < / b > The nodes in the tree will be instances of the following structure:
2019-03-17 14:40:57 +02:00
< / p >
2020-05-03 03:01:21 +03:00
< 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" > literal_text< / 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" > lt_position< / span > < span class = "plain-syntax" > ; < / span > < span class = "comment-syntax" > position in the source of quoted text< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > bibliographic_conventions< / span > < span class = "plain-syntax" > ; < / span > < span class = "comment-syntax" > mostly for apostrophes< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > unescaped< / span > < span class = "plain-syntax" > ; < / span > < span class = "comment-syntax" > completely so< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > unexpanded< / span > < span class = "plain-syntax" > ; < / span > < span class = "comment-syntax" > don't expand single quotes to double< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > node_colour< / span > < span class = "plain-syntax" > ; < / span > < span class = "comment-syntax" > red or black: see above< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > struct< / span > < span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > literal_text< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > left_node< / span > < span class = "plain-syntax" > ; < / span > < span class = "comment-syntax" > within their red-black tree< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > struct< / span > < span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > literal_text< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > right_node< / 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" > small_block_array_needed< / 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" > inter_name< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > lt_iname< / 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" > inter_name< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > lt_sba_iname< / span > < span class = "plain-syntax" > ;< / span >
2020-05-09 15:07:39 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > CLASS_DEFINITION< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > } < / span > < span class = "reserved-syntax" > literal_text< / span > < span class = "plain-syntax" > ;< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-11 18:42:37 +03:00
< ul class = "endnotetexts" > < li > The structure literal_text is accessed in 7/ap and here.< / li > < / ul >
2021-04-22 09:19:25 +03:00
< p class = "commentary firstcommentary" > < a id = "SP5" class = "paragraph-anchor" > < / a > < b > § 5. < / b > The tree is always connected, with a single root node. The so-called Z node
2019-03-17 14:40:57 +02:00
is a special node representing a leaf with no contents, Z presumably standing
for zero.
< / p >
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "reserved-syntax" > literal_text< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > root_of_literal_text< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ;< / span >
< span class = "reserved-syntax" > literal_text< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > z_node< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ;< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-22 09:19:25 +03:00
< p class = "commentary firstcommentary" > < a id = "SP6" class = "paragraph-anchor" > < / a > < b > § 6. < / b > When Inform is storing text not for use at run-time but instead for the
2021-02-06 20:00:34 +02:00
bibliographic data in, for example, its XML-format iFiction record, it needs
to read text literals in a special mode bypassing all this red-black business:
2019-03-17 14:40:57 +02:00
< / p >
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > encode_constant_text_bibliographically< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ; < / span > < span class = "comment-syntax" > Compile literal text semi-literally< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-22 09:19:25 +03:00
< p class = "commentary firstcommentary" > < a id = "SP7" class = "paragraph-anchor" > < / a > < b > § 7. < / b > We are allowed to flag one text where ordinary apostrophe-to-double-quote
2019-03-17 14:40:57 +02:00
substitution doesn't occur: this is used for the title at the top of the
source text, and nothing else.
< / p >
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > wn_quote_suppressed< / span > < span class = "plain-syntax" > = -1;< / span >
2021-02-06 20:00:34 +02:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > TextLiterals::suppress_quote_expansion< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > wording< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > ) {< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > wn_quote_suppressed< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Wordings::first_wn< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > }< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-22 09:19:25 +03:00
< p class = "commentary firstcommentary" > < a id = "SP8" class = "paragraph-anchor" > < / a > < b > § 8. < / b > The following creates a node in the tree; the word number is the location of
2021-02-06 20:00:34 +02:00
the text in the source — recall that quoted text, whatever its contents,
always occupies just one word number.
2019-03-17 14:40:57 +02:00
< / p >
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
2021-04-22 09:19:25 +03:00
< span class = "reserved-syntax" > literal_text< / span > < span class = "plain-syntax" > *< / span > < span class = "function-syntax" > TextLiterals::lt_new< / 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" > TextLiterals::lt_new< / span > < / span > :< br / > < a href = "4-tl.html#SP11_2" > § 11.2< / a > , < a href = "4-tl.html#SP11_3" > § 11.3< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > w1< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > colour< / span > < span class = "plain-syntax" > ) {< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > literal_text< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > x< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > CREATE< / span > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > literal_text< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > x< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > left_node< / 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" > x< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > right_node< / 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" > x< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > node_colour< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > colour< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > x< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > lt_position< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > w1< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > x< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > bibliographic_conventions< / 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" > x< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > unescaped< / 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" > x< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > unexpanded< / 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" > x< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > small_block_array_needed< / 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" > x< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > lt_sba_iname< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ;< / span >
2021-04-21 14:02:18 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > x< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > lt_iname< / span > < span class = "plain-syntax" > = < / span > < a href = "4-enc.html#SP1" class = "function-link" > < span class = "function-syntax" > Enclosures::new_iname< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > LITERALS_HAP< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > TEXT_LITERAL_HL< / span > < span class = "plain-syntax" > );< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::annotate_i< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > x< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > lt_iname< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > TEXT_LITERAL_IANN< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > 1< / 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" > wn_quote_suppressed< / span > < span class = "plain-syntax" > > = < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > ) & & (< / span > < span class = "identifier-syntax" > w1< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > wn_quote_suppressed< / span > < span class = "plain-syntax" > )) < / span > < span class = "identifier-syntax" > x< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > unexpanded< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > TRUE< / 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" > x< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-22 09:19:25 +03:00
< p class = "commentary firstcommentary" > < a id = "SP9" class = "paragraph-anchor" > < / a > < b > § 9. < / b > And this utility compares the text at a given source position with the
2021-02-06 20:00:34 +02:00
text stored at a node in the tree:
2019-03-17 14:40:57 +02:00
< / p >
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
2021-04-22 09:19:25 +03:00
< span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > TextLiterals::lt_cmp< / span > < button class = "popup" onclick = "togglePopup('usagePopup5')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup5" > Usage of < span class = "code-font" > < span class = "function-syntax" > TextLiterals::lt_cmp< / span > < / span > :< br / > < a href = "4-tl.html#SP11_3" > § 11.3< / a > , < a href = "4-tl.html#SP11_3_2_1" > § 11.3.2.1< / a > , < a href = "4-tl.html#SP12" > § 12< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > w1< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > literal_text< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > lt< / span > < span class = "plain-syntax" > ) {< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > lt< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ) < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "constant-syntax" > 1< / 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" > lt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > lt_position< / span > < span class = "plain-syntax" > < < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > ) < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "constant-syntax" > 1< / 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" > Wide::cmp< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Lexer::word_text< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > w1< / span > < span class = "plain-syntax" > ), < / span > < span class = "identifier-syntax" > Lexer::word_text< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > lt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > lt_position< / span > < span class = "plain-syntax" > ));< / span >
< span class = "plain-syntax" > }< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-22 09:19:25 +03:00
< p class = "commentary firstcommentary" > < a id = "SP10" class = "paragraph-anchor" > < / a > < b > § 10. < / b > < / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
2021-04-21 14:02:18 +03:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > TextLiterals::mark_as_unescaped< / span > < button class = "popup" onclick = "togglePopup('usagePopup6')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup6" > Usage of < span class = "code-font" > < span class = "function-syntax" > TextLiterals::mark_as_unescaped< / span > < / span > :< br / > Responses - < a href = "4-rsp.html#SP11_1_2" > § 11.1.2< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > literal_text< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > lt< / span > < span class = "plain-syntax" > ) {< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > lt< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > lt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > unescaped< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-22 09:19:25 +03:00
< p class = "commentary firstcommentary" > < a id = "SP11" class = "paragraph-anchor" > < / a > < b > § 11. < / b > That's it for the preliminaries.
2019-03-17 14:40:57 +02:00
< / p >
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
2021-04-22 09:19:25 +03:00
< span class = "reserved-syntax" > literal_text< / span > < span class = "plain-syntax" > *< / span > < span class = "function-syntax" > TextLiterals::compile_literal< / span > < button class = "popup" onclick = "togglePopup('usagePopup7')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup7" > Usage of < span class = "code-font" > < span class = "function-syntax" > TextLiterals::compile_literal< / span > < / span > :< br / > < a href = "4-tl.html#SP13" > § 13< / a > , < a href = "4-tl.html#SP15" > § 15< / a > < br / > Action Patterns - < a href = "7-ap.html#SP5" > § 5< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > value_holster< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > VH< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > write< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > wording< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > ) {< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > w1< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Wordings::first_wn< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > );< / span >
2021-04-22 09:19:25 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Wide::cmp< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Lexer::word_text< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > w1< / span > < span class = "plain-syntax" > ), < / span > < span class = "identifier-syntax" > L< / span > < span class = "string-syntax" > "\"\""< / span > < span class = "plain-syntax" > ) == < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > ) < / span > < span class = "named-paragraph-container code-font" > < a href = "4-tl.html#SP11_1" class = "named-paragraph-link" > < span class = "named-paragraph" > Handle the empty text outside the tree< / span > < span class = "named-paragraph-number" > 11.1< / span > < / a > < / 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" > z_node< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ) < / span > < span class = "named-paragraph-container code-font" > < a href = "4-tl.html#SP11_2" class = "named-paragraph-link" > < span class = "named-paragraph" > Initialise the red-black tree< / span > < span class = "named-paragraph-number" > 11.2< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "4-tl.html#SP11_3" class = "named-paragraph-link" > < span class = "named-paragraph" > Search for the text as a key in the red-black tree< / span > < span class = "named-paragraph-number" > 11.3< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > }< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-22 09:19:25 +03:00
< p class = "commentary firstcommentary" > < a id = "SP11_1" class = "paragraph-anchor" > < / a > < b > § 11.1. < / b > The empty text < span class = "extract" > < span class = "extract-syntax" > ""< / span > < / span > compiles to a special value < span class = "extract" > < span class = "extract-syntax" > EMPTY_TEXT_VALUE< / span > < / span > , and is
2021-02-06 20:00:34 +02:00
not stored in the tree.
< / p >
2021-04-22 09:19:25 +03:00
< p class = "commentary" > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Handle the empty text outside the tree< / span > < span class = "named-paragraph-number" > 11.1< / span > < / span > < span class = "comment-syntax" > =< / span >
2021-02-06 20:00:34 +02:00
< / p >
< pre class = "displayed-code all-displayed-code code-font" >
2021-04-19 00:42:39 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > ((< / span > < span class = "identifier-syntax" > write< / span > < span class = "plain-syntax" > ) & & (< / span > < span class = "identifier-syntax" > VH< / span > < span class = "plain-syntax" > )) < / span > < a href = "2-emt.html#SP2" class = "function-link" > < span class = "function-syntax" > Emit::holster_iname< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > VH< / span > < span class = "plain-syntax" > , < / span > < a href = "2-hrr.html#SP11" class = "function-link" > < span class = "function-syntax" > Hierarchy::find< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > EMPTY_TEXT_VALUE_HL< / span > < span class = "plain-syntax" > ));< / span >
2021-02-06 20:00:34 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ;< / span >
< / pre >
2021-04-22 09:19:25 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-tl.html#SP11" > § 11< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP11_2" class = "paragraph-anchor" > < / a > < b > § 11.2. < / b > Note that the tree doesn't begin empty, but with a null node. Moreover,
2019-03-17 14:40:57 +02:00
the tree is always a strict binary tree in which every node always has two
children. One or both may be the Z node, and both children of Z are itself.
This sounds tricky, but minimises the number of comparisons needed to
check that branches are valid, the alternative being to allow some branches
which are null pointers.
< / p >
2021-04-22 09:19:25 +03:00
< p class = "commentary" > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Initialise the red-black tree< / span > < span class = "named-paragraph-number" > 11.2< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
2021-04-22 09:19:25 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > z_node< / span > < span class = "plain-syntax" > = < / span > < a href = "4-tl.html#SP8" class = "function-link" > < span class = "function-syntax" > TextLiterals::lt_new< / span > < / a > < span class = "plain-syntax" > (-1, < / span > < span class = "constant-syntax" > BLACK_NODE< / span > < span class = "plain-syntax" > );< / span >
2021-02-06 20:00:34 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > z_node< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > left_node< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > z_node< / span > < span class = "plain-syntax" > ; < / span > < span class = "identifier-syntax" > z_node< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > right_node< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > z_node< / span > < span class = "plain-syntax" > ;< / span >
2021-04-22 09:19:25 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > root_of_literal_text< / span > < span class = "plain-syntax" > = < / span > < a href = "4-tl.html#SP8" class = "function-link" > < span class = "function-syntax" > TextLiterals::lt_new< / span > < / a > < span class = "plain-syntax" > (-1, < / span > < span class = "constant-syntax" > BLACK_NODE< / span > < span class = "plain-syntax" > );< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > root_of_literal_text< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > left_node< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > z_node< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > root_of_literal_text< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > right_node< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > z_node< / span > < span class = "plain-syntax" > ;< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-22 09:19:25 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-tl.html#SP11" > § 11< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP11_3" class = "paragraph-anchor" > < / a > < b > § 11.3. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Search for the text as a key in the red-black tree< / span > < span class = "named-paragraph-number" > 11.3< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > literal_text< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > x< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > root_of_literal_text< / span > < span class = "plain-syntax" > , *< / span > < span class = "identifier-syntax" > p< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > x< / span > < span class = "plain-syntax" > , *< / span > < span class = "identifier-syntax" > g< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > p< / span > < span class = "plain-syntax" > , *< / span > < span class = "identifier-syntax" > gg< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > g< / 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" > went_left< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ; < / span > < span class = "comment-syntax" > redundant assignment to appease < / span > < span class = "extract" > < span class = "extract-syntax" > gcc -O2< / span > < / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > do< / span > < span class = "plain-syntax" > {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > gg< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > g< / span > < span class = "plain-syntax" > ; < / span > < span class = "identifier-syntax" > g< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > p< / span > < span class = "plain-syntax" > ; < / span > < span class = "identifier-syntax" > p< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > x< / span > < span class = "plain-syntax" > ;< / span >
2021-04-22 09:19:25 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > sgn< / span > < span class = "plain-syntax" > = < / span > < a href = "4-tl.html#SP9" class = "function-link" > < span class = "function-syntax" > TextLiterals::lt_cmp< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > w1< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > x< / 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" > sgn< / span > < span class = "plain-syntax" > == < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > ) < / span > < span class = "named-paragraph-container code-font" > < a href = "4-tl.html#SP11_3_1" class = "named-paragraph-link" > < span class = "named-paragraph" > Locate this as the new node< / span > < span class = "named-paragraph-number" > 11.3.1< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > sgn< / span > < span class = "plain-syntax" > < < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > ) { < / span > < span class = "identifier-syntax" > went_left< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ; < / span > < span class = "identifier-syntax" > x< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > x< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > left_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" > sgn< / span > < span class = "plain-syntax" > > < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > ) { < / span > < span class = "identifier-syntax" > went_left< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ; < / span > < span class = "identifier-syntax" > x< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > x< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > right_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" > x< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > left_node< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > node_colour< / span > < span class = "plain-syntax" > == < / span > < span class = "constant-syntax" > RED_NODE< / span > < span class = "plain-syntax" > ) & & < / span >
< span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > x< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > right_node< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > node_colour< / span > < span class = "plain-syntax" > == < / span > < span class = "constant-syntax" > RED_NODE< / span > < span class = "plain-syntax" > ))< / span >
2021-04-22 09:19:25 +03:00
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "4-tl.html#SP11_3_2" class = "named-paragraph-link" > < span class = "named-paragraph" > Perform a split< / span > < span class = "named-paragraph-number" > 11.3.2< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > } < / span > < span class = "reserved-syntax" > while< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > x< / span > < span class = "plain-syntax" > != < / span > < span class = "identifier-syntax" > z_node< / span > < span class = "plain-syntax" > );< / span >
2021-04-22 09:19:25 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > x< / span > < span class = "plain-syntax" > = < / span > < a href = "4-tl.html#SP8" class = "function-link" > < span class = "function-syntax" > TextLiterals::lt_new< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > w1< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > RED_NODE< / span > < span class = "plain-syntax" > );< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > x< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > left_node< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > z_node< / span > < span class = "plain-syntax" > ; < / span > < span class = "identifier-syntax" > x< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > right_node< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > z_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" > went_left< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > p< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > left_node< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > x< / span > < span class = "plain-syntax" > ; < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > p< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > right_node< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > x< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > literal_text< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > new_x< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > x< / span > < span class = "plain-syntax" > ;< / span >
2021-04-22 09:19:25 +03:00
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "4-tl.html#SP11_3_2" class = "named-paragraph-link" > < span class = "named-paragraph" > Perform a split< / span > < span class = "named-paragraph-number" > 11.3.2< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > x< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > new_x< / span > < span class = "plain-syntax" > ;< / span >
2021-04-22 09:19:25 +03:00
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "4-tl.html#SP11_3_1" class = "named-paragraph-link" > < span class = "named-paragraph" > Locate this as the new node< / span > < span class = "named-paragraph-number" > 11.3.1< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-22 09:19:25 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-tl.html#SP11" > § 11< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP11_3_1" class = "paragraph-anchor" > < / a > < b > § 11.3.1. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Locate this as the new node< / span > < span class = "named-paragraph-number" > 11.3.1< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > encode_constant_text_bibliographically< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > x< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > bibliographic_conventions< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > TRUE< / 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" > write< / span > < span class = "plain-syntax" > ) {< / span >
2021-02-06 20:00:34 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > x< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > lt_sba_iname< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > )< / span >
2021-04-21 14:02:18 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > x< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > lt_sba_iname< / span > < span class = "plain-syntax" > = < / span > < a href = "4-enc.html#SP2" class = "function-link" > < span class = "function-syntax" > Enclosures::new_small_block_for_constant< / span > < / a > < span class = "plain-syntax" > ();< / span >
2021-04-17 17:28:28 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > VH< / span > < span class = "plain-syntax" > ) < / span > < a href = "2-emt.html#SP2" class = "function-link" > < span class = "function-syntax" > Emit::holster_iname< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > VH< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > x< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > lt_sba_iname< / span > < span class = "plain-syntax" > );< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > x< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > small_block_array_needed< / 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" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > x< / span > < span class = "plain-syntax" > ;< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-22 09:19:25 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-tl.html#SP11_3" > § 11.3< / a > (twice).< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP11_3_2" class = "paragraph-anchor" > < / a > < b > § 11.3.2. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Perform a split< / span > < span class = "named-paragraph-number" > 11.3.2< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > x< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > node_colour< / span > < span class = "plain-syntax" > = < / span > < span class = "constant-syntax" > RED_NODE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > x< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > left_node< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > node_colour< / span > < span class = "plain-syntax" > = < / span > < span class = "constant-syntax" > BLACK_NODE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > x< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > right_node< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > node_colour< / span > < span class = "plain-syntax" > = < / span > < span class = "constant-syntax" > BLACK_NODE< / span > < span class = "plain-syntax" > ;< / span >
2021-04-22 09:19:25 +03:00
< 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 = "identifier-syntax" > node_colour< / span > < span class = "plain-syntax" > == < / span > < span class = "constant-syntax" > RED_NODE< / span > < span class = "plain-syntax" > ) < / span > < span class = "named-paragraph-container code-font" > < a href = "4-tl.html#SP11_3_2_1" class = "named-paragraph-link" > < span class = "named-paragraph" > Rotations will be needed< / span > < span class = "named-paragraph-number" > 11.3.2.1< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > root_of_literal_text< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > right_node< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > node_colour< / span > < span class = "plain-syntax" > = < / span > < span class = "constant-syntax" > BLACK_NODE< / span > < span class = "plain-syntax" > ;< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-22 09:19:25 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-tl.html#SP11_3" > § 11.3< / a > (twice).< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP11_3_2_1" class = "paragraph-anchor" > < / a > < b > § 11.3.2.1. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Rotations will be needed< / span > < span class = "named-paragraph-number" > 11.3.2.1< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > g< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > node_colour< / span > < span class = "plain-syntax" > = < / span > < span class = "constant-syntax" > RED_NODE< / 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" > left_of_g< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > left_of_p< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ;< / span >
2021-04-22 09:19:25 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < a href = "4-tl.html#SP9" class = "function-link" > < span class = "function-syntax" > TextLiterals::lt_cmp< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > w1< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > g< / span > < span class = "plain-syntax" > ) < < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > left_of_g< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < a href = "4-tl.html#SP9" class = "function-link" > < span class = "function-syntax" > TextLiterals::lt_cmp< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > w1< / 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 = "identifier-syntax" > left_of_p< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > TRUE< / 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" > left_of_g< / span > < span class = "plain-syntax" > != < / span > < span class = "identifier-syntax" > left_of_p< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > p< / span > < span class = "plain-syntax" > = < / span > < a href = "4-tl.html#SP12" class = "function-link" > < span class = "function-syntax" > TextLiterals::rotate< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > w1< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > g< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > x< / span > < span class = "plain-syntax" > = < / span > < a href = "4-tl.html#SP12" class = "function-link" > < span class = "function-syntax" > TextLiterals::rotate< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > w1< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > gg< / span > < span class = "plain-syntax" > );< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > x< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > node_colour< / span > < span class = "plain-syntax" > = < / span > < span class = "constant-syntax" > BLACK_NODE< / span > < span class = "plain-syntax" > ;< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-22 09:19:25 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-tl.html#SP11_3_2" > § 11.3.2< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP12" class = "paragraph-anchor" > < / a > < b > § 12. < / b > Rotation is a local tree rearrangement which tends to move it towards
2019-03-17 14:40:57 +02:00
rather than away from "balance", that is, towards a configuration where
the depth of tree is roughly even.
< / p >
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
2021-04-22 09:19:25 +03:00
< span class = "reserved-syntax" > literal_text< / span > < span class = "plain-syntax" > *< / span > < span class = "function-syntax" > TextLiterals::rotate< / span > < button class = "popup" onclick = "togglePopup('usagePopup8')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup8" > Usage of < span class = "code-font" > < span class = "function-syntax" > TextLiterals::rotate< / span > < / span > :< br / > < a href = "4-tl.html#SP11_3_2_1" > § 11.3.2.1< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > w1< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > literal_text< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > y< / span > < span class = "plain-syntax" > ) {< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > literal_text< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > c< / span > < span class = "plain-syntax" > , *< / span > < span class = "identifier-syntax" > gc< / span > < span class = "plain-syntax" > ;< / span >
2021-04-22 09:19:25 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < a href = "4-tl.html#SP9" class = "function-link" > < span class = "function-syntax" > TextLiterals::lt_cmp< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > w1< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > y< / 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 = "identifier-syntax" > y< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > left_node< / span > < span class = "plain-syntax" > ; < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > c< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > y< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > right_node< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < a href = "4-tl.html#SP9" class = "function-link" > < span class = "function-syntax" > TextLiterals::lt_cmp< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > w1< / 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 >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > gc< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > c< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > left_node< / span > < span class = "plain-syntax" > ; < / span > < span class = "identifier-syntax" > c< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > left_node< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > gc< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > right_node< / span > < span class = "plain-syntax" > ; < / span > < span class = "identifier-syntax" > gc< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > right_node< / 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" > else< / span > < span class = "plain-syntax" > {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > gc< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > c< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > right_node< / span > < span class = "plain-syntax" > ; < / span > < span class = "identifier-syntax" > c< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > right_node< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > gc< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > left_node< / span > < span class = "plain-syntax" > ; < / span > < span class = "identifier-syntax" > gc< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > left_node< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > c< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2021-04-22 09:19:25 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < a href = "4-tl.html#SP9" class = "function-link" > < span class = "function-syntax" > TextLiterals::lt_cmp< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > w1< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > y< / span > < span class = "plain-syntax" > ) < < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > y< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > left_node< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > gc< / span > < span class = "plain-syntax" > ; < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > y< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > right_node< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > gc< / span > < span class = "plain-syntax" > ;< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > gc< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-21 14:02:18 +03:00
< p class = "commentary firstcommentary" > < a id = "SP13" class = "paragraph-anchor" > < / a > < b > § 13. < / b > A version from fixed text:
2019-03-17 14:40:57 +02:00
< / p >
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
2021-04-22 09:19:25 +03:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > TextLiterals::compile_literal_from_text< / span > < button class = "popup" onclick = "togglePopup('usagePopup9')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup9" > Usage of < span class = "code-font" > < span class = "function-syntax" > TextLiterals::compile_literal_from_text< / span > < / span > :< br / > Emit - < a href = "2-emt.html#SP12" > § 12< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > inter_name< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > context< / span > < span class = "plain-syntax" > ,< / span >
2021-02-06 20:00:34 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > inter_ti< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > v1< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > inter_ti< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > v2< / 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 = "plain-syntax" > < / span > < span class = "reserved-syntax" > literal_text< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > lt< / span > < span class = "plain-syntax" > =< / span >
2021-04-22 09:19:25 +03:00
< span class = "plain-syntax" > < / span > < a href = "4-tl.html#SP11" class = "function-link" > < span class = "function-syntax" > TextLiterals::compile_literal< / span > < / a > < 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 = "identifier-syntax" > Feeds::feed_C_string< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > p< / span > < span class = "plain-syntax" > ));< / span >
2021-04-17 17:28:28 +03:00
< span class = "plain-syntax" > < / span > < a href = "2-emt.html#SP3" class = "function-link" > < span class = "function-syntax" > Emit::to_value_pair_in_context< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > context< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > v1< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > v2< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > lt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > lt_sba_iname< / span > < span class = "plain-syntax" > );< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > }< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-21 14:02:18 +03:00
< p class = "commentary firstcommentary" > < a id = "SP14" class = "paragraph-anchor" > < / a > < b > § 14. < / b > The above gradually piled up the need for < span class = "extract" > < span class = "extract-syntax" > TX_L_*< / span > < / span > constants/routines,
2019-03-17 14:40:57 +02:00
as compilation went on: now comes the reckoning, when we have to declare
all of these. We traverse the tree from left to right, because that produces
the texts in alphabetical order; the Z-node, of course, is a terminal and
shouldn't be visited, and the root node has no text (and so has word
2020-05-03 03:01:21 +03:00
number < span class = "extract" > < span class = "extract-syntax" > -1< / span > < / span > ).
2019-03-17 14:40:57 +02:00
< / p >
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
2021-02-06 20:00:34 +02:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > TextLiterals::compile< / span > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > ) {< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > root_of_literal_text< / span > < span class = "plain-syntax" > )< / span >
2021-04-21 14:02:18 +03:00
< span class = "plain-syntax" > < / span > < a href = "4-tl.html#SP14" class = "function-link" > < span class = "function-syntax" > TextLiterals::traverse_lts< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > root_of_literal_text< / span > < span class = "plain-syntax" > );< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > }< / span >
2021-02-06 20:00:34 +02:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > TextLiterals::traverse_lts< / span > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > literal_text< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > lt< / span > < span class = "plain-syntax" > ) {< / span >
2021-04-21 14:02:18 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > lt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > left_node< / span > < span class = "plain-syntax" > != < / span > < span class = "identifier-syntax" > z_node< / span > < span class = "plain-syntax" > ) < / span > < a href = "4-tl.html#SP14" class = "function-link" > < span class = "function-syntax" > TextLiterals::traverse_lts< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > lt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > left_node< / span > < span class = "plain-syntax" > );< / span >
2021-04-22 09:19:25 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > lt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > lt_position< / span > < span class = "plain-syntax" > > = < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > ) < / span > < span class = "named-paragraph-container code-font" > < a href = "4-tl.html#SP14_1" class = "named-paragraph-link" > < span class = "named-paragraph" > Compile a standard literal text< / span > < span class = "named-paragraph-number" > 14.1< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
2021-04-21 14:02:18 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > lt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > right_node< / span > < span class = "plain-syntax" > != < / span > < span class = "identifier-syntax" > z_node< / span > < span class = "plain-syntax" > ) < / span > < a href = "4-tl.html#SP14" class = "function-link" > < span class = "function-syntax" > TextLiterals::traverse_lts< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > lt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > right_node< / span > < span class = "plain-syntax" > );< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > }< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-21 14:02:18 +03:00
< p class = "commentary firstcommentary" > < a id = "SP14_1" class = "paragraph-anchor" > < / a > < b > § 14.1. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Compile a standard literal text< / span > < span class = "named-paragraph-number" > 14.1< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
2021-04-22 09:19:25 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Task::wraps_existing_storyfile< / span > < span class = "plain-syntax" > ()) {< / span >
2021-04-17 17:28:28 +03:00
< span class = "plain-syntax" > < / span > < a href = "2-emt.html#SP10" class = "function-link" > < span class = "function-syntax" > Emit::text_constant< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > lt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > lt_iname< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > I< / span > < span class = "string-syntax" > "--"< / span > < span class = "plain-syntax" > );< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > } < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > {< / span >
2020-06-28 01:18:54 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > TEMPORARY_TEXT< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > TLT< / span > < span class = "plain-syntax" > )< / span >
2021-04-22 09:19:25 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > options< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > CT_DEQUOTE< / span > < span class = "plain-syntax" > + < / span > < span class = "identifier-syntax" > CT_EXPAND_APOSTROPHES< / 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" > lt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > unescaped< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > options< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > CT_DEQUOTE< / span > < span class = "plain-syntax" > ;< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > lt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > bibliographic_conventions< / span > < span class = "plain-syntax" > )< / span >
2021-04-22 09:19:25 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > options< / span > < span class = "plain-syntax" > += < / span > < span class = "identifier-syntax" > CT_RECOGNISE_APOSTROPHE_SUBSTITUTION< / span > < span class = "plain-syntax" > + < / span > < span class = "identifier-syntax" > CT_RECOGNISE_UNICODE_SUBSTITUTION< / 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" > lt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > unexpanded< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > options< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > CT_DEQUOTE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > TranscodeText::from_wide_string< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > TLT< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > Lexer::word_text< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > lt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > lt_position< / span > < span class = "plain-syntax" > ), < / span > < span class = "identifier-syntax" > options< / span > < span class = "plain-syntax" > );< / span >
2021-04-17 17:28:28 +03:00
< span class = "plain-syntax" > < / span > < a href = "2-emt.html#SP10" class = "function-link" > < span class = "function-syntax" > Emit::text_constant< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > lt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > lt_iname< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > TLT< / span > < span class = "plain-syntax" > );< / span >
2020-06-28 01:18:54 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > DISCARD_TEXT< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > TLT< / span > < span class = "plain-syntax" > )< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > }< / span >
2021-04-22 09:19:25 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > lt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > small_block_array_needed< / span > < span class = "plain-syntax" > )< / span >
< span class = "plain-syntax" > < / span > < a href = "4-tl.html#SP1" class = "function-link" > < span class = "function-syntax" > TextLiterals::small_block_at< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > lt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > lt_iname< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > lt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > lt_sba_iname< / span > < span class = "plain-syntax" > );< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-21 14:02:18 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-tl.html#SP14" > § 14< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP15" class = "paragraph-anchor" > < / a > < b > § 15. < / b > < / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
2021-04-22 09:19:25 +03:00
< span class = "reserved-syntax" > literal_text< / span > < span class = "plain-syntax" > *< / span > < span class = "function-syntax" > TextLiterals::compile_literal_sb< / span > < button class = "popup" onclick = "togglePopup('usagePopup10')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup10" > Usage of < span class = "code-font" > < span class = "function-syntax" > TextLiterals::compile_literal_sb< / span > < / span > :< br / > Responses - < a href = "4-rsp.html#SP11_1_2" > § 11.1.2< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > value_holster< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > VH< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > wording< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > ) {< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > literal_text< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > lt< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ;< / span >
2021-04-08 17:06:01 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > CompileValues::compiling_in_constant_mode< / span > < span class = "plain-syntax" > ()) {< / span >
2021-04-22 09:19:25 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > lt< / span > < span class = "plain-syntax" > = < / span > < a href = "4-tl.html#SP11" class = "function-link" > < span class = "function-syntax" > TextLiterals::compile_literal< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > );< / span >
2021-04-21 14:02:18 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > inter_name< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > N< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ;< / span >
2021-04-22 09:19:25 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > lt< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > N< / span > < span class = "plain-syntax" > = < / span > < a href = "4-tl.html#SP2" class = "function-link" > < span class = "function-syntax" > TextLiterals::default_text< / span > < / a > < 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" > N< / span > < span class = "plain-syntax" > = < / span > < a href = "4-tl.html#SP1" class = "function-link" > < span class = "function-syntax" > TextLiterals::small_block< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > lt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > lt_iname< / span > < span class = "plain-syntax" > );< / span >
2021-04-21 14:02:18 +03:00
< span class = "plain-syntax" > < / span > < a href = "2-emt.html#SP2" class = "function-link" > < span class = "function-syntax" > Emit::holster_iname< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > VH< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > N< / span > < span class = "plain-syntax" > );< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > } < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > {< / span >
2021-04-22 09:19:25 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > lt< / span > < span class = "plain-syntax" > = < / span > < a href = "4-tl.html#SP11" class = "function-link" > < span class = "function-syntax" > TextLiterals::compile_literal< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > VH< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > );< / span >
2020-05-03 03:01:21 +03:00
< 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" > lt< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2020-05-03 03:01:21 +03:00
< nav role = "progress" > < div class = "progresscontainer" >
2021-04-22 09:19:25 +03:00
< ul class = "progressbar" > < li class = "progressprev" > < a href = "4-ll.html" > ❮ < / a > < / li > < li class = "progresschapter" > < a href = "P-wtmd.html" > P< / a > < / li > < li class = "progresschapter" > < a href = "1-rm.html" > 1< / a > < / li > < li class = "progresschapter" > < a href = "2-hrr.html" > 2< / a > < / li > < li class = "progresschapter" > < a href = "3-fc.html" > 3< / a > < / li > < li class = "progresscurrentchapter" > 4< / li > < li class = "progresssection" > < a href = "4-enc.html" > enc< / a > < / li > < li class = "progresssection" > < a href = "4-ll.html" > ll< / a > < / li > < li class = "progresscurrent" > tl< / li > < li class = "progresssection" > < a href = "4-ts.html" > ts< / a > < / li > < li class = "progresssection" > < a href = "4-rsp.html" > rsp< / a > < / li > < li class = "progresssection" > < a href = "4-bq.html" > bq< / a > < / li > < li class = "progresschapter" > < a href = "5-rsfk.html" > 5< / a > < / li > < li class = "progresschapter" > < a href = "6-nmn.html" > 6< / a > < / li > < li class = "progresschapter" > < a href = "7-act.html" > 7< / a > < / li > < li class = "progresschapter" > < a href = "8-prs.html" > 8< / a > < / li > < li class = "progresschapter" > < a href = "9-fgr.html" > 9< / a > < / li > < li class = "progresschapter" > < a href = "10-sc.html" > 10< / a > < / li > < li class = "progressnext" > < a href = "4-ts.html" > ❯ < / a > < / li > < / ul > < / div >
2020-05-03 03:01:21 +03:00
< / nav > <!-- End of weave -->
2019-03-17 14:40:57 +02:00
2020-03-19 02:11:25 +02:00
< / main >
2019-03-17 14:40:57 +02:00
< / body >
< / html >