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 > Parse Invocations< / 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-05-09 01:13:45 +03:00
< link href = "../docs-assets/Preform-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 >
< li > < a href = "index.html" > < span class = "selectedlink" > core< / span > < / a > < / li >
2020-03-19 02:11:25 +02:00
< li > < a href = "../kinds-module/index.html" > kinds< / a > < / li >
< li > < a href = "../if-module/index.html" > if< / a > < / li >
< li > < a href = "../multimedia-module/index.html" > multimedia< / a > < / li >
< li > < a href = "../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 >
< li > < a href = "../syntax-module/index.html" > syntax< / a > < / li >
< li > < a href = "../words-module/index.html" > words< / a > < / li >
< li > < a href = "../html-module/index.html" > html< / a > < / li >
2020-05-20 02:02:28 +03:00
< li > < a href = "../inflections-module/index.html" > inflections< / a > < / li >
< li > < a href = "../linguistics-module/index.html" > linguistics< / a > < / li >
< li > < a href = "../problems-module/index.html" > problems< / 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 'Parse Invocations' generated by Inweb -->
< div class = "breadcrumbs" >
< ul class = "crumbs" > < li > < a href = "../index.html" > Home< / a > < / li > < li > < a href = "../compiler.html" > Inform7 Modules< / a > < / li > < li > < a href = "index.html" > core< / a > < / li > < li > < a href = "index.html#25" > Chapter 25: Compilation< / a > < / li > < li > < b > Parse Invocations< / b > < / li > < / ul > < / div >
< p class = "purpose" > To register phrases with the excerpt parser, and to provide the excerpt parser with help in putting invocations together.< / p >
2019-03-17 14:40:57 +02:00
2020-04-16 01:49:59 +03:00
< ul class = "toc" > < li > < a href = "25-pi.html#SP1" > § 1. Parsing of phrases< / a > < / li > < li > < a href = "25-pi.html#SP4" > § 4. Parsing invocations< / a > < / li > < / ul > < hr class = "tocbar" >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< p class = "commentary firstcommentary" > < a id = "SP1" > < / a > < b > § 1. Parsing of phrases. < / b > The control structures of Inform are defined in the Standard Rules. Before
2019-03-17 14:40:57 +02:00
the coming of Python-style indentation to Inform, blocks of code were closed
with "end..." phrases: "end if", "end repeat" and "end while". In fact these
are still valid, for the benefit of partially sighted users, and the
following construction makes the end phrase for a given control structure.
< / p >
2020-05-09 01:13:45 +03:00
< pre class = "Preform-displayed-code all-displayed-code code-font" >
< span class = "Preform-function-syntax" > < end-phrase-construction> < / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > ::=< / span >
< span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > end< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > ...< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2020-05-17 13:51:27 +03:00
< ul class = "endnotetexts" > < li > This is < a href = "../words-module/4-ap.html" class = "internal" > Preform grammar< / a > , not regular C code.< / li > < / ul >
2020-05-03 03:01:21 +03:00
< p class = "commentary firstcommentary" > < a id = "SP2" > < / a > < b > § 2. < / b > This section aims to take text like
2019-03-17 14:40:57 +02:00
< / p >
< blockquote >
< p > add 17 to the list of small primes;< / p >
< / blockquote >
2020-05-03 03:01:21 +03:00
< p class = "commentary" > which the excerpt parser can see is a possible usage of a phrase such as
2019-03-17 14:40:57 +02:00
< / p >
< blockquote >
< p > To add (new entry - K) to (L - list of values of kind K), if absent: ...< / p >
< / blockquote >
2020-05-03 03:01:21 +03:00
< p class = "commentary" > and to help the excerpt parser by putting together an invocation.
2019-03-17 14:40:57 +02:00
< / p >
2020-05-03 03:01:21 +03:00
< p class = "commentary" > To even make that possible, though, we must first register each "To..."
2019-03-17 14:40:57 +02:00
phrase definition with the excerpt parser:
< / p >
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > Phrases::Parser::register_excerpt< / 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" > Phrases::Parser::register_excerpt< / span > < / span > :< br / > To Phrases - < a href = "22-tp.html#SP6" > § 6< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > phrase< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > ph< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > ph_type_data< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > phtd< / span > < span class = "plain-syntax" > = & (< / span > < span class = "identifier-syntax" > ph< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > type_data< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Wordings::empty< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > phtd< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > registration_text< / span > < span class = "plain-syntax" > )) < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > LOGIF< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PHRASE_REGISTRATION< / span > < span class = "plain-syntax" > , < / span > < span class = "string-syntax" > "Register phrase < %W> with type:\n$h"< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > phtd< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > registration_text< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > phtd< / span > < span class = "plain-syntax" > );< / 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 > < span class = "identifier-syntax" > phtd< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > registration_text< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > switch< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > phtd< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > manner_of_return< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > case< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > DECIDES_NOTHING_MOR:< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < a href = "22-ptd.html#SP22" class = "function-link" > < span class = "function-syntax" > Phrases::TypeData::is_a_say_phrase< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > ph< / span > < span class = "plain-syntax" > ))< / span >
< span class = "plain-syntax" > < / span > < a href = "25-pi.html#SP3" class = "function-link" > < span class = "function-syntax" > Phrases::Parser::register_phrasal< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > SAY_PHRASE_MC< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > ph< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > Wordings::trim_first_word< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > ));< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > phtd< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > as_inline< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > block_follows< / span > < span class = "plain-syntax" > != < / span > < span class = "constant-syntax" > NO_BLOCK_FOLLOWS< / span > < span class = "plain-syntax" > )< / span >
< span class = "plain-syntax" > < / span > < a href = "25-pi.html#SP3" class = "function-link" > < span class = "function-syntax" > Phrases::Parser::register_phrasal< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > VOID_PHRASE_MC< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > ph< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > Wordings::trim_last_word< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > ));< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > else< / span >
< span class = "plain-syntax" > < / span > < a href = "25-pi.html#SP3" class = "function-link" > < span class = "function-syntax" > Phrases::Parser::register_phrasal< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > VOID_PHRASE_MC< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > ph< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > break< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > case< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > DECIDES_CONDITION_MOR:< / span > < span class = "plain-syntax" > < / span > < a href = "25-pi.html#SP3" class = "function-link" > < span class = "function-syntax" > Phrases::Parser::register_phrasal< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > COND_PHRASE_MC< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > ph< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > ); < / span > < span class = "reserved-syntax" > break< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > case< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > DECIDES_VALUE_MOR:< / span > < span class = "plain-syntax" > < / span > < a href = "25-pi.html#SP3" class = "function-link" > < span class = "function-syntax" > Phrases::Parser::register_phrasal< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > VALUE_PHRASE_MC< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > ph< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > ); < / span > < span class = "reserved-syntax" > break< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > }< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2020-05-03 03:01:21 +03:00
< p class = "commentary firstcommentary" > < a id = "SP3" > < / a > < b > § 3. < / b > At this point, then, we've identified the meaning code (MC) to register
2019-03-17 14:40:57 +02:00
the phrase under, and must make the actual registration.
< / p >
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "reserved-syntax" > phrase< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > last_phrase_where_rp_problemed< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ;< / span >
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > Phrases::Parser::register_phrasal< / 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" > Phrases::Parser::register_phrasal< / span > < / span > :< br / > < a href = "25-pi.html#SP2" > § 2< / a > , < a href = "25-pi.html#SP3_2_1" > § 3.2.1< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > unsigned< / span > < span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > phrase_mc< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > phrase< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > ph< / 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 >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > LOGIF< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PHRASE_REGISTRATION< / span > < span class = "plain-syntax" > , < / span > < span class = "string-syntax" > "Register phrasal on < %W> : $u\n"< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > ,< / span >
< span class = "plain-syntax" > < / span > < a href = "22-ptd.html#SP13" class = "function-link" > < span class = "function-syntax" > Phrases::TypeData::kind< / span > < / a > < span class = "plain-syntax" > (& (< / span > < span class = "identifier-syntax" > ph< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > type_data< / span > < span class = "plain-syntax" > )));< / span >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "25-pi.html#SP3_1" class = "named-paragraph-link" > < span class = "named-paragraph" > Vet phrase text for suitability< / span > < span class = "named-paragraph-number" > 3.1< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "25-pi.html#SP3_2" class = "named-paragraph-link" > < span class = "named-paragraph" > Look for slash-divided alternative phrasings and recurse to register all variations< / span > < span class = "named-paragraph-number" > 3.2< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > ExcerptMeanings::register< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > phrase_mc< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > STORE_POINTER_phrase< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > ph< / 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
< p class = "commentary firstcommentary" > < a id = "SP3_1" > < / a > < b > § 3.1. < / b > Some sanity checks first:
2019-03-17 14:40:57 +02:00
< / p >
2020-05-03 03:01:21 +03:00
< p class = "commentary" > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Vet phrase text for suitability< / span > < span class = "named-paragraph-number" > 3.1< / span > < / span > < span class = "comment-syntax" > =< / span >
< / 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" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > bl< / span > < span class = "plain-syntax" > = < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > fixed_words< / span > < span class = "plain-syntax" > = < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > phrase_mc< / span > < span class = "plain-syntax" > == < / span > < span class = "constant-syntax" > SAY_PHRASE_MC< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > fixed_words< / span > < span class = "plain-syntax" > ++;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > LOOP_THROUGH_WORDING< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Lexer::word< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > ) == < / span > < span class = "identifier-syntax" > OPENBRACKET_V< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > bl< / span > < span class = "plain-syntax" > ++;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Lexer::word< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > ) == < / span > < span class = "identifier-syntax" > CLOSEBRACKET_V< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > bl< / span > < span class = "plain-syntax" > --;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > bl< / span > < span class = "plain-syntax" > == < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > fixed_words< / 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" > Vocabulary::test_flags< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > TEXT_MC< / span > < span class = "plain-syntax" > +< / span > < span class = "identifier-syntax" > TEXTWITHSUBS_MC< / span > < span class = "plain-syntax" > ))< / span >
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "25-pi.html#SP3_1_1" class = "named-paragraph-link" > < span class = "named-paragraph" > Issue problem for quoted text in phrase wording< / span > < span class = "named-paragraph-number" > 3.1.1< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > ((< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > < < / span > < span class = "identifier-syntax" > Wordings::last_wn< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > )) & & (< / span > < span class = "identifier-syntax" > Lexer::word< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > ) == < / span > < span class = "identifier-syntax" > CLOSEBRACKET_V< / span > < span class = "plain-syntax" > ) & & (< / span > < span class = "identifier-syntax" > Lexer::word< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > +1) == < / span > < span class = "identifier-syntax" > OPENBRACKET_V< / span > < span class = "plain-syntax" > ))< / span >
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "25-pi.html#SP3_1_2" class = "named-paragraph-link" > < span class = "named-paragraph" > Issue problem for brackets jammed up against each other< / span > < span class = "named-paragraph-number" > 3.1.2< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > fixed_words< / 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 = "25-pi.html#SP3_1_3" class = "named-paragraph-link" > < span class = "named-paragraph" > Issue problem for phrase consisting only of tokens< / span > < span class = "named-paragraph-number" > 3.1.3< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2020-05-03 03:01:21 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "25-pi.html#SP3" > § 3< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP3_1_1" > < / a > < b > § 3.1.1. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Issue problem for quoted text in phrase wording< / span > < span class = "named-paragraph-number" > 3.1.1< / span > < / span > < span class = "comment-syntax" > =< / span >
< / 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" > ph< / span > < span class = "plain-syntax" > != < / span > < span class = "identifier-syntax" > last_phrase_where_rp_problemed< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::Issue::sentence_problem< / span > < span class = "plain-syntax" > (< / span > < a href = "1-wtc.html#SP5" class = "function-link" > < span class = "function-syntax" > Task::syntax_tree< / span > < / a > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > _p_< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PM_QuotedInPhrase< / span > < span class = "plain-syntax" > ),< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "phrases can't be defined with quoted text as part of the fixed wording"< / span > < span class = "plain-syntax" > ,< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "so something like 'To go \"voluntarily\" to jail: ...' is not allowed."< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > last_phrase_where_rp_problemed< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > ph< / 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 >
2019-03-17 14:40:57 +02:00
< / pre >
2020-05-03 03:01:21 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "25-pi.html#SP3_1" > § 3.1< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP3_1_2" > < / a > < b > § 3.1.2. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Issue problem for brackets jammed up against each other< / span > < span class = "named-paragraph-number" > 3.1.2< / span > < / span > < span class = "comment-syntax" > =< / span >
< / 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" > ph< / span > < span class = "plain-syntax" > != < / span > < span class = "identifier-syntax" > last_phrase_where_rp_problemed< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::Issue::sentence_problem< / span > < span class = "plain-syntax" > (< / span > < a href = "1-wtc.html#SP5" class = "function-link" > < span class = "function-syntax" > Task::syntax_tree< / span > < / a > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > _p_< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PM_AdjacentTokens< / span > < span class = "plain-syntax" > ),< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "phrases can't be defined so that they have two bracketed varying elements "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "immediately next to each other"< / span > < span class = "plain-syntax" > ,< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "but instead need at least one fixed word in between. Thus 'To combine "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "(X - a number) (Y - a number)' is not allowed, but 'To combine (X - a "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "number) with (Y - a number)' works because of the 'with' dividing the "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "bracketed terms X and Y."< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > last_phrase_where_rp_problemed< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > ph< / 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 >
2019-03-17 14:40:57 +02:00
< / pre >
2020-05-03 03:01:21 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "25-pi.html#SP3_1" > § 3.1< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP3_1_3" > < / a > < b > § 3.1.3. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Issue problem for phrase consisting only of tokens< / span > < span class = "named-paragraph-number" > 3.1.3< / span > < / span > < span class = "comment-syntax" > =< / span >
< / 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" > ph< / span > < span class = "plain-syntax" > != < / span > < span class = "identifier-syntax" > last_phrase_where_rp_problemed< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::Issue::sentence_problem< / span > < span class = "plain-syntax" > (< / span > < a href = "1-wtc.html#SP5" class = "function-link" > < span class = "function-syntax" > Task::syntax_tree< / span > < / a > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > _p_< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PM_MustBeOneWord< / span > < span class = "plain-syntax" > ),< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "a 'To...' phrase must contain at least one fixed word"< / span > < span class = "plain-syntax" > ,< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "that is, one word other than the bracketed variables. So a declaration "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "like 'To (N - number): ...' is not allowed."< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > last_phrase_where_rp_problemed< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > ph< / 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 >
2019-03-17 14:40:57 +02:00
< / pre >
2020-05-03 03:01:21 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "25-pi.html#SP3_1" > § 3.1< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP3_2" > < / a > < b > § 3.2. < / b > The remaining work is to look out for this sort of thing:
2019-03-17 14:40:57 +02:00
< / p >
< blockquote >
< p > To rearrange the deckchairs/loungers on (S - a ship): ...< / p >
< / blockquote >
2020-05-03 03:01:21 +03:00
< p class = "commentary" > where the slash indicates an alternative wording:
2019-03-17 14:40:57 +02:00
< / p >
2020-05-03 03:01:21 +03:00
< p class = "commentary" > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Look for slash-divided alternative phrasings and recurse to register all variations< / span > < span class = "named-paragraph-number" > 3.2< / span > < / span > < span class = "comment-syntax" > =< / span >
< / 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" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > bl< / span > < span class = "plain-syntax" > = < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > LOOP_THROUGH_WORDING< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Lexer::word< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > ) == < / span > < span class = "identifier-syntax" > OPENBRACKET_V< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > bl< / span > < span class = "plain-syntax" > ++;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Lexer::word< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > ) == < / span > < span class = "identifier-syntax" > CLOSEBRACKET_V< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > bl< / span > < span class = "plain-syntax" > --;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > bl< / span > < span class = "plain-syntax" > == < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > wchar_t< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > p< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > phrase_mc< / span > < span class = "plain-syntax" > == < / span > < span class = "constant-syntax" > SAY_PHRASE_MC< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > p< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Lexer::word_raw_text< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > p< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Lexer::word_text< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > for< / span > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > j< / span > < span class = "plain-syntax" > =0; < / span > < span class = "identifier-syntax" > p< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > j< / span > < span class = "plain-syntax" > ]; < / span > < span class = "identifier-syntax" > j< / 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" > j< / span > < span class = "plain-syntax" > > 0) & & (< / span > < span class = "identifier-syntax" > p< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > j< / span > < span class = "plain-syntax" > -1] != < / span > < span class = "character-syntax" > '/'< / span > < span class = "plain-syntax" > ) & & (< / span > < span class = "identifier-syntax" > p< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > j< / span > < span class = "plain-syntax" > ] == < / span > < span class = "character-syntax" > '/'< / span > < span class = "plain-syntax" > ) & & < / span >
< span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > p< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > j< / span > < span class = "plain-syntax" > +1]) & & (< / span > < span class = "identifier-syntax" > p< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > j< / span > < span class = "plain-syntax" > +1] != < / span > < span class = "character-syntax" > '/'< / span > < span class = "plain-syntax" > ))< / span >
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "25-pi.html#SP3_2_1" class = "named-paragraph-link" > < span class = "named-paragraph" > This word is divided by a forward slash at the j-position in word i< / span > < span class = "named-paragraph-number" > 3.2.1< / span > < / a > < / span > < span class = "plain-syntax" > ;< / 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
< ul class = "endnotetexts" > < li > This code is used in < a href = "25-pi.html#SP3" > § 3< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP3_2_1" > < / a > < b > § 3.2.1. < / b > What we do is to reconstruct this as two different registrations:
2019-03-17 14:40:57 +02:00
< / p >
< blockquote >
< p > To rearrange the deckchairs on (S - a ship): ...< / p >
< / blockquote >
< blockquote >
< p > To rearrange the loungers on (S - a ship): ...< / p >
< / blockquote >
2020-05-03 03:01:21 +03:00
< p class = "commentary" > and then recursively call ourselves to handle each individual one. We'll
2019-03-17 14:40:57 +02:00
call the left and right hand sides of "deckchairs/loungers" the A and
B forms.
< / p >
2020-05-03 03:01:21 +03:00
< p class = "commentary" > Note than a phrase with many slashed words will register a frightening
2019-03-17 14:40:57 +02:00
number of possibilities — for example,
< / p >
< blockquote >
< p > To meld/blend/merge (O - object) onto/into/amongst/with (P - object) quickly/rapidly/pronto: ...< / p >
< / blockquote >
2020-05-03 03:01:21 +03:00
< p class = "commentary" > will register 36 excerpts. But the hashing in the excerpts parser shouldn't
2019-03-17 14:40:57 +02:00
make the result too slow.
< / p >
2020-05-03 03:01:21 +03:00
< p class = "commentary" > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > This word is divided by a forward slash at the j-position in word i< / span > < span class = "named-paragraph-number" > 3.2.1< / span > < / span > < span class = "comment-syntax" > =< / span >
< / 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" > TEMPORARY_TEXT< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > a_form< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > TEMPORARY_TEXT< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > b_form< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "25-pi.html#SP3_2_1_1" class = "named-paragraph-link" > < span class = "named-paragraph" > Splice up the A and B forms of the slashed word< / span > < span class = "named-paragraph-number" > 3.2.1.1< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
2020-05-09 01:13:45 +03:00
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "25-pi.html#SP3_2_1_2" class = "named-paragraph-link" > < span class = "named-paragraph" > Make sure the A form isn't the S-word< / span > < span class = "named-paragraph-number" > 3.2.1.2< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > wording< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > AW< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > EMPTY_WORDING< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > BW< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > EMPTY_WORDING< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "25-pi.html#SP3_2_1_3" class = "named-paragraph-link" > < span class = "named-paragraph" > Splice up the A and B forms of the whole phrase wording< / span > < span class = "named-paragraph-number" > 3.2.1.3< / 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" > Wordings::nonempty< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > AW< / span > < span class = "plain-syntax" > )) < / span > < a href = "25-pi.html#SP3" class = "function-link" > < span class = "function-syntax" > Phrases::Parser::register_phrasal< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > phrase_mc< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > ph< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > AW< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Wordings::nonempty< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > BW< / span > < span class = "plain-syntax" > )) < / span > < a href = "25-pi.html#SP3" class = "function-link" > < span class = "function-syntax" > Phrases::Parser::register_phrasal< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > phrase_mc< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > ph< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > BW< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > DISCARD_TEXT< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > a_form< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > DISCARD_TEXT< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > b_form< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > ;< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2020-05-03 03:01:21 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "25-pi.html#SP3_2" > § 3.2< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP3_2_1_1" > < / a > < b > § 3.2.1.1. < / b > The double-dash means "omit this word altogether".
2019-03-17 14:40:57 +02:00
< / p >
2020-05-03 03:01:21 +03:00
< p class = "commentary" > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Splice up the A and B forms of the slashed word< / span > < span class = "named-paragraph-number" > 3.2.1.1< / span > < / span > < span class = "comment-syntax" > =< / span >
< / 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" > for< / span > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > k< / span > < span class = "plain-syntax" > =0; < / span > < span class = "identifier-syntax" > k< / span > < span class = "plain-syntax" > < < / span > < span class = "identifier-syntax" > j< / span > < span class = "plain-syntax" > ; < / span > < span class = "identifier-syntax" > k< / span > < span class = "plain-syntax" > ++) < / span > < span class = "identifier-syntax" > PUT_TO< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > a_form< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > p< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > k< / span > < span class = "plain-syntax" > ]);< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > for< / span > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > k< / span > < span class = "plain-syntax" > =< / span > < span class = "identifier-syntax" > j< / span > < span class = "plain-syntax" > +1; < / span > < span class = "identifier-syntax" > p< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > k< / span > < span class = "plain-syntax" > ]; < / span > < span class = "identifier-syntax" > k< / span > < span class = "plain-syntax" > ++) < / span > < span class = "identifier-syntax" > PUT_TO< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > b_form< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > p< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > k< / span > < span class = "plain-syntax" > ]);< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Str::eq_wide_string< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > a_form< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > L< / span > < span class = "string-syntax" > "--"< / span > < span class = "plain-syntax" > )) < / span > < span class = "identifier-syntax" > Str::clear< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > a_form< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Str::eq_wide_string< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > b_form< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > L< / span > < span class = "string-syntax" > "--"< / span > < span class = "plain-syntax" > )) < / span > < span class = "identifier-syntax" > Str::clear< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > b_form< / span > < span class = "plain-syntax" > );< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2020-05-03 03:01:21 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "25-pi.html#SP3_2_1" > § 3.2.1< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP3_2_1_2" > < / a > < b > § 3.2.1.2. < / b > If we don't check this then hybrids like
2019-03-17 14:40:57 +02:00
< / p >
< blockquote >
< p > To say/adjust (X - an object): ...< / p >
< / blockquote >
2020-05-03 03:01:21 +03:00
< p class = "commentary" > will confuse two different sorts of phrase. ("Say" is allowed after the first
2019-03-17 14:40:57 +02:00
word, though.)
< / p >
2020-05-03 03:01:21 +03:00
< p class = "commentary" > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Make sure the A form isn't the S-word< / span > < span class = "named-paragraph-number" > 3.2.1.2< / span > < / span > < span class = "comment-syntax" > =< / span >
< / 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" > Str::eq_wide_string< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > a_form< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > L< / span > < span class = "string-syntax" > "say"< / span > < span class = "plain-syntax" > )) & & < / span >
< span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > i< / 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 = "identifier-syntax" > phrase_mc< / span > < span class = "plain-syntax" > != < / span > < span class = "constant-syntax" > SAY_PHRASE_MC< / 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" > ph< / span > < span class = "plain-syntax" > != < / span > < span class = "identifier-syntax" > last_phrase_where_rp_problemed< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::Issue::sentence_problem< / span > < span class = "plain-syntax" > (< / span > < a href = "1-wtc.html#SP5" class = "function-link" > < span class = "function-syntax" > Task::syntax_tree< / span > < / a > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > _p_< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PM_SaySlashed< / span > < span class = "plain-syntax" > ),< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "'say' is not allowed as the first word of a phrase"< / span > < span class = "plain-syntax" > ,< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "even when presented as one of a number of slashed alternatives. "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "(This is because 'say' is reserved for creating text substitutions.)"< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > last_phrase_where_rp_problemed< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > ph< / 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
< ul class = "endnotetexts" > < li > This code is used in < a href = "25-pi.html#SP3_2_1" > § 3.2.1< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP3_2_1_3" > < / a > < b > § 3.2.1.3. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Splice up the A and B forms of the whole phrase wording< / span > < span class = "named-paragraph-number" > 3.2.1.3< / span > < / span > < span class = "comment-syntax" > =< / span >
< / 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" > feed_t< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > id< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Feeds::begin< / span > < span class = "plain-syntax" > ();< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > > < / span > < span class = "identifier-syntax" > Wordings::first_wn< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > )) < / span > < span class = "identifier-syntax" > Feeds::feed_wording< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Wordings::up_to< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > -1));< / span >
2020-05-12 12:00:53 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Str::len< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > a_form< / span > < span class = "plain-syntax" > ) > < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > Feeds::feed_text_expanding_strings< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > a_form< / 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" > i< / span > < span class = "plain-syntax" > < < / span > < span class = "identifier-syntax" > Wordings::last_wn< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > )) < / span > < span class = "identifier-syntax" > Feeds::feed_wording< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Wordings::from< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > +1));< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > AW< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Feeds::end< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > id< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > id< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Feeds::begin< / span > < span class = "plain-syntax" > ();< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > > < / span > < span class = "identifier-syntax" > Wordings::first_wn< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > )) < / span > < span class = "identifier-syntax" > Feeds::feed_wording< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Wordings::up_to< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > -1));< / span >
2020-05-12 12:00:53 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Str::len< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > b_form< / span > < span class = "plain-syntax" > ) > < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > Feeds::feed_text_expanding_strings< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > b_form< / 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" > i< / span > < span class = "plain-syntax" > < < / span > < span class = "identifier-syntax" > Wordings::last_wn< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > )) < / span > < span class = "identifier-syntax" > Feeds::feed_wording< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Wordings::from< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > +1));< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > BW< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Feeds::end< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > id< / span > < span class = "plain-syntax" > );< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2020-05-03 03:01:21 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "25-pi.html#SP3_2_1" > § 3.2.1< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP4" > < / a > < b > § 4. Parsing invocations. < / b > So, then, at this point the excerpt parser has identified a phrase which it
2019-03-17 14:40:57 +02:00
thinks may be being invoked in some text. For example, it may have read:
< / p >
< blockquote >
< p > advance the pawn by 2;< / p >
< / blockquote >
2020-05-03 03:01:21 +03:00
< p class = "commentary" > and guessed that this is an invocation of
2019-03-17 14:40:57 +02:00
< / p >
< blockquote >
< p > To advance (the piece - a chess piece) by (N - a number): ...< / p >
< / blockquote >
2020-05-03 03:01:21 +03:00
< p class = "commentary" > An S-node will have been constructed for the possibility that this is correct,
2019-03-17 14:40:57 +02:00
identifying the text of any phrase options used (here there are none) and the
text of the tokens, "the pawn" and "2".
< / p >
2020-05-03 03:01:21 +03:00
< p class = "commentary" > We now take over, and construct an invocation structure on this basis.
2019-03-17 14:40:57 +02:00
Note that there's no reason to suppose this will pass type-checking:
we would be just as happy with
< / p >
< blockquote >
< p > advance "frangipane" by 10:21 PM;< / p >
< / blockquote >
2020-05-03 03:01:21 +03:00
< p class = "commentary" > because our only aim here is to document the possibility for later checking.
2019-03-17 14:40:57 +02:00
< / p >
2020-05-03 03:01:21 +03:00
< p class = "commentary" > The invocation is marked as "unproven", meaning that the typechecker hasn't
2019-03-17 14:40:57 +02:00
yet vetted it, unless it's a fixed wording with nothing to check:
< / p >
< blockquote >
< p > To shed my skin: ...< / p >
< / blockquote >
2020-05-03 03:01:21 +03:00
< p class = "commentary" > because then our purely textual match is sufficient.
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 = "identifier-syntax" > parse_node< / span > < span class = "plain-syntax" > *< / span > < span class = "function-syntax" > Phrases::Parser::parse_against< / 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" > Phrases::Parser::parse_against< / span > < / span > :< br / > Conditions and Phrases - < a href = "10-cap.html#SP12_1" > § 12.1< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > phrase< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > ph< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > parse_node< / 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" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > p< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > internal_error< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > "parse against null subtree"< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > wording< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > WW< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > EMPTY_WORDING< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > wording< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > OW< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > EMPTY_WORDING< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > wording< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > token_text< / span > < span class = "plain-syntax" > [15]; < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > no_tokens< / span > < span class = "plain-syntax" > = < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "25-pi.html#SP4_1" class = "named-paragraph-link" > < span class = "named-paragraph" > Extract all this text from the subtree< / span > < span class = "named-paragraph-number" > 4.1< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > parse_node< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > inv< / span > < span class = "plain-syntax" > = < / span > < a href = "25-in.html#SP9" class = "function-link" > < span class = "function-syntax" > Invocations::new< / span > < / a > < span class = "plain-syntax" > ();< / span >
< span class = "plain-syntax" > < / span > < a href = "25-in.html#SP12" class = "function-link" > < span class = "function-syntax" > Invocations::set_word_range< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > inv< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > WW< / span > < span class = "plain-syntax" > );< / span >
2020-05-11 17:21:29 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Node::set_phrase_invoked< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > inv< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > ph< / span > < span class = "plain-syntax" > );< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < a href = "14-ds2.html#SP25" class = "function-link" > < span class = "function-syntax" > Dash::suspend_validation< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > ph_type_data< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > phtd< / span > < span class = "plain-syntax" > = & (< / span > < span class = "identifier-syntax" > ph< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > type_data< / 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" > i< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > for< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > =0; < / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > < < / span > < span class = "identifier-syntax" > no_tokens< / span > < span class = "plain-syntax" > ; < / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > ++) < / span > < span class = "named-paragraph-container code-font" > < a href = "25-pi.html#SP4_2" class = "named-paragraph-link" > < span class = "named-paragraph" > Parse the ith token into the invocation< / span > < span class = "named-paragraph-number" > 4.2< / 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" > Wordings::nonempty< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > OW< / span > < span class = "plain-syntax" > )) < / span > < a href = "25-in.html#SP19" class = "function-link" > < span class = "function-syntax" > Invocations::set_phrase_options< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > inv< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > OW< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < a href = "14-ds2.html#SP25" class = "function-link" > < span class = "function-syntax" > Dash::suspend_validation< / span > < / a > < 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" > LOGIF< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > MATCHING< / span > < span class = "plain-syntax" > , < / span > < span class = "string-syntax" > "Parse against to invocation: $e\n"< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > inv< / 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" > inv< / 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
< p class = "commentary firstcommentary" > < a id = "SP4_1" > < / a > < b > § 4.1. < / b > We will never actually hit the 15 tokens limit, because it's impossible to
2019-03-17 14:40:57 +02:00
register phrases with more than that number of tokens anyway.
< / p >
2020-05-03 03:01:21 +03:00
< p class = "commentary" > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Extract all this text from the subtree< / span > < span class = "named-paragraph-number" > 4.1< / span > < / span > < span class = "comment-syntax" > =< / span >
< / 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" >
2020-05-11 17:21:29 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > WW< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Node::get_text< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > p< / span > < span class = "plain-syntax" > );< / span >
2020-05-03 03:01:21 +03:00
< 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" > down< / span > < span class = "plain-syntax" > ;< / span >
2020-05-11 17:21:29 +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" > Annotations::read_int< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > p< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > is_phrase_option_ANNOT< / span > < span class = "plain-syntax" > ))) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > OW< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Node::get_text< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > p< / span > < span class = "plain-syntax" > );< / span >
2020-05-03 03:01:21 +03:00
< 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 = "element-syntax" > next< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > for< / span > < span class = "plain-syntax" > (; ((< / span > < span class = "identifier-syntax" > p< / span > < span class = "plain-syntax" > ) & & (< / span > < span class = "identifier-syntax" > no_tokens< / span > < span class = "plain-syntax" > < 15)); < / 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 = "element-syntax" > next< / span > < span class = "plain-syntax" > ) {< / span >
2020-05-11 17:21:29 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Node::get_type< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > p< / span > < span class = "plain-syntax" > ) == < / span > < span class = "identifier-syntax" > UNKNOWN_NT< / span > < span class = "plain-syntax" > )< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > token_text< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > no_tokens< / span > < span class = "plain-syntax" > ++] = < / span > < span class = "identifier-syntax" > Node::get_text< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > p< / 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 > < span class = "identifier-syntax" > internal_error< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > "Unexpected production in phrase args"< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > no_tokens< / span > < span class = "plain-syntax" > > < / span > < span class = "constant-syntax" > MAX_TOKENS_PER_PHRASE< / span > < span class = "plain-syntax" > )< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::Fatal::issue< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > "MAX_TOKENS_PER_PHRASE exceeded"< / span > < span class = "plain-syntax" > );< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2020-05-03 03:01:21 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "25-pi.html#SP4" > § 4< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP4_2" > < / a > < b > § 4.2. < / b > As can be seen, the way we parse the token text depends on the context,
2019-03-17 14:40:57 +02:00
that is, depends on what we're expecting to find. (This is why the excerpt
parser needs our help in the first place.)
< / p >
2020-05-03 03:01:21 +03:00
< p class = "commentary" > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Parse the ith token into the invocation< / span > < span class = "named-paragraph-number" > 4.2< / span > < / span > < span class = "comment-syntax" > =< / span >
< / 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" > parse_node< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > to_match< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > phtd< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > token_sequence< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > ].< / span > < span class = "element-syntax" > to_match< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > wording< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > X< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Articles::remove_the< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > token_text< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > ]);< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > phtd< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > token_sequence< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > ].< / span > < span class = "element-syntax" > construct< / span > < span class = "plain-syntax" > == < / span > < span class = "constant-syntax" > NEW_LOCAL_PT_CONSTRUCT< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > to_match< / span > < span class = "plain-syntax" > = < / span > < a href = "14-sp.html#SP1" class = "function-link" > < span class = "function-syntax" > Specifications::from_kind< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > K_value< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < a href = "25-in.html#SP16" class = "function-link" > < span class = "function-syntax" > Invocations::make_token< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > inv< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > NEW_LOCAL_CONTEXT_NT< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > X< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > phtd< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > token_sequence< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > ].< / span > < span class = "element-syntax" > token_kind< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > phtd< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > token_sequence< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > ].< / span > < span class = "element-syntax" > construct< / span > < span class = "plain-syntax" > == < / span > < span class = "constant-syntax" > EXISTING_LOCAL_PT_CONSTRUCT< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > to_match< / span > < span class = "plain-syntax" > = < / span > < a href = "14-sp.html#SP1" class = "function-link" > < span class = "function-syntax" > Specifications::from_kind< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > K_value< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < a href = "25-in.html#SP16" class = "function-link" > < span class = "function-syntax" > Invocations::make_token< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > inv< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > LVALUE_LOCAL_CONTEXT_NT< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > X< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > phtd< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > token_sequence< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > ].< / span > < span class = "element-syntax" > token_kind< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > phtd< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > token_sequence< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > ].< / span > < span class = "element-syntax" > construct< / span > < span class = "plain-syntax" > == < / span > < span class = "constant-syntax" > STORAGE_PT_CONSTRUCT< / span > < span class = "plain-syntax" > )< / span >
2020-05-11 17:21:29 +03:00
< span class = "plain-syntax" > < / span > < a href = "25-in.html#SP16" class = "function-link" > < span class = "function-syntax" > Invocations::make_token< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > inv< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > LVALUE_CONTEXT_NT< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > X< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > Node::get_kind_of_value< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > to_match< / 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 > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > phtd< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > token_sequence< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > ].< / span > < span class = "element-syntax" > construct< / span > < span class = "plain-syntax" > == < / span > < span class = "constant-syntax" > TABLE_REFERENCE_PT_CONSTRUCT< / span > < span class = "plain-syntax" > )< / span >
2020-05-11 17:21:29 +03:00
< span class = "plain-syntax" > < / span > < a href = "25-in.html#SP16" class = "function-link" > < span class = "function-syntax" > Invocations::make_token< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > inv< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > LVALUE_TR_CONTEXT_NT< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > X< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > Node::get_kind_of_value< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > to_match< / 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 > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > phtd< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > token_sequence< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > ].< / span > < span class = "element-syntax" > construct< / span > < span class = "plain-syntax" > == < / span > < span class = "constant-syntax" > CONDITION_PT_CONSTRUCT< / span > < span class = "plain-syntax" > )< / span >
< span class = "plain-syntax" > < / span > < a href = "25-in.html#SP16" class = "function-link" > < span class = "function-syntax" > Invocations::make_token< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > inv< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > CONDITION_CONTEXT_NT< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > X< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > phtd< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > token_sequence< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > ].< / span > < span class = "element-syntax" > construct< / span > < span class = "plain-syntax" > == < / span > < span class = "constant-syntax" > VOID_PT_CONSTRUCT< / span > < span class = "plain-syntax" > )< / span >
< span class = "plain-syntax" > < / span > < a href = "25-in.html#SP16" class = "function-link" > < span class = "function-syntax" > Invocations::make_token< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > inv< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > VOID_CONTEXT_NT< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > X< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < a href = "14-sp.html#SP2" class = "function-link" > < span class = "function-syntax" > Specifications::is_kind_like< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > to_match< / span > < span class = "plain-syntax" > ))< / span >
< span class = "plain-syntax" > < / span > < a href = "25-in.html#SP16" class = "function-link" > < span class = "function-syntax" > Invocations::make_token< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > inv< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > RVALUE_CONTEXT_NT< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > X< / span > < span class = "plain-syntax" > , < / span > < a href = "14-sp.html#SP1" class = "function-link" > < span class = "function-syntax" > Specifications::to_kind< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > to_match< / span > < span class = "plain-syntax" > ));< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < a href = "14-sp.html#SP3" class = "function-link" > < span class = "function-syntax" > Specifications::is_description< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > to_match< / span > < span class = "plain-syntax" > ))< / span >
< span class = "plain-syntax" > < / span > < a href = "25-in.html#SP16" class = "function-link" > < span class = "function-syntax" > Invocations::make_token< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > inv< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > MATCHING_RVALUE_CONTEXT_NT< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > X< / span > < span class = "plain-syntax" > , < / span > < a href = "14-sp.html#SP1" class = "function-link" > < span class = "function-syntax" > Specifications::to_kind< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > to_match< / span > < span class = "plain-syntax" > ));< / span >
2020-05-11 17:21:29 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Node::is< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > to_match< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > CONSTANT_NT< / span > < span class = "plain-syntax" > ))< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < a href = "25-in.html#SP16" class = "function-link" > < span class = "function-syntax" > Invocations::make_token< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > inv< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > SPECIFIC_RVALUE_CONTEXT_NT< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > X< / span > < span class = "plain-syntax" > , < / span > < a href = "14-sp.html#SP1" class = "function-link" > < span class = "function-syntax" > Specifications::to_kind< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > to_match< / span > < span class = "plain-syntax" > ));< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > < / span > < a href = "25-in.html#SP16" class = "function-link" > < span class = "function-syntax" > Invocations::make_token< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > inv< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > RVALUE_CONTEXT_NT< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > X< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ); < / span > < span class = "comment-syntax" > doesn't actually happen< / span >
< span class = "plain-syntax" > < / span > < a href = "25-in.html#SP16" class = "function-link" > < span class = "function-syntax" > Invocations::set_token_to_be_parsed_against< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > inv< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > to_match< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > parse_node< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > as_parsed< / span > < span class = "plain-syntax" > = < / span > < a href = "14-sp.html#SP8" class = "function-link" > < span class = "function-syntax" > Specifications::new_UNKNOWN< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > X< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < a href = "25-in.html#SP16" class = "function-link" > < span class = "function-syntax" > Invocations::set_token_as_parsed< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > inv< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > as_parsed< / span > < span class = "plain-syntax" > );< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2020-05-03 03:01:21 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "25-pi.html#SP4" > § 4< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP5" > < / a > < b > § 5. < / b > < / p >
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > Phrases::Parser::parse_within_inv< / 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" > Phrases::Parser::parse_within_inv< / span > < / span > :< br / > Dash - < a href = "14-ds2.html#SP11_9_1_1" > § 11.9.1.1< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > parse_node< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > inv< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < a href = "10-aots.html#SP14" class = "function-link" > < span class = "function-syntax" > ExParser::warn_expression_cache< / span > < / a > < 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" > N< / span > < span class = "plain-syntax" > = < / span > < a href = "25-in.html#SP17" class = "function-link" > < span class = "function-syntax" > Invocations::get_no_tokens< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > inv< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > for< / span > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > = < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > ; < / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > < < / span > < span class = "identifier-syntax" > N< / span > < span class = "plain-syntax" > ; < / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > ++) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > parse_node< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > to_match< / span > < span class = "plain-syntax" > = < / span > < a href = "25-in.html#SP17" class = "function-link" > < span class = "function-syntax" > Invocations::get_token_to_be_parsed_against< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > inv< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > cons< / span > < span class = "plain-syntax" > = -1;< / span >
2020-05-11 17:21:29 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > phrase< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > ph< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Node::get_phrase_invoked< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > inv< / 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" > ph< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > cons< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > ph< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > type_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > token_sequence< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > ].< / span > < span class = "element-syntax" > construct< / 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" > to_match< / span > < span class = "plain-syntax" > ) || (< / span > < span class = "identifier-syntax" > cons< / span > < span class = "plain-syntax" > == < / span > < span class = "constant-syntax" > CONDITION_PT_CONSTRUCT< / span > < span class = "plain-syntax" > ) || (< / span > < span class = "identifier-syntax" > cons< / span > < span class = "plain-syntax" > == < / span > < span class = "constant-syntax" > VOID_PT_CONSTRUCT< / span > < span class = "plain-syntax" > )) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > parse_node< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > as_parsed< / span > < span class = "plain-syntax" > = < / span > < a href = "25-in.html#SP17" class = "function-link" > < span class = "function-syntax" > Invocations::get_token_as_parsed< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > inv< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > );< / span >
2020-05-11 17:21:29 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > wording< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > XW< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Node::get_text< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > as_parsed< / span > < span class = "plain-syntax" > );< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > #< / span > < span class = "identifier-syntax" > ifdef< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > IF_MODULE< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > pto< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > permit_trying_omission< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > ((< / span > < a href = "14-sp.html#SP2" class = "function-link" > < span class = "function-syntax" > Specifications::is_kind_like< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > to_match< / span > < span class = "plain-syntax" > )) & & < / span >
< span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Kinds::Compare::eq< / span > < span class = "plain-syntax" > (< / span > < a href = "14-sp.html#SP1" class = "function-link" > < span class = "function-syntax" > Specifications::to_kind< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > to_match< / span > < span class = "plain-syntax" > ), < / span > < span class = "identifier-syntax" > K_stored_action< / span > < span class = "plain-syntax" > ))) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > permit_trying_omission< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "25-pi.html#SP5_1" class = "named-paragraph-link" > < span class = "named-paragraph" > Parse the action in a try phrase< / span > < span class = "named-paragraph-number" > 5.1< / span > < / a > < / 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" > permit_trying_omission< / 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" > endif< / span >
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "25-pi.html#SP5_2" class = "named-paragraph-link" > < span class = "named-paragraph" > Parse any other token< / span > < span class = "named-paragraph-number" > 5.2< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > #< / span > < span class = "identifier-syntax" > ifdef< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > IF_MODULE< / span >
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > permit_trying_omission< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > pto< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > #< / span > < span class = "identifier-syntax" > endif< / span >
2020-05-11 17:21:29 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Node::set_text< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > as_parsed< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > XW< / span > < span class = "plain-syntax" > );< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < a href = "25-in.html#SP16" class = "function-link" > < span class = "function-syntax" > Invocations::set_token_as_parsed< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > inv< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > as_parsed< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > }< / 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
< p class = "commentary firstcommentary" > < a id = "SP5_1" > < / a > < b > § 5.1. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Parse the action in a try phrase< / span > < span class = "named-paragraph-number" > 5.1< / span > < / span > < span class = "comment-syntax" > =< / span >
< / 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" >
2020-05-09 01:13:45 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "function-syntax" > < action-pattern> < / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > XW< / span > < span class = "plain-syntax" > ))< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > as_parsed< / span > < span class = "plain-syntax" > = < / span > < a href = "14-cn.html#SP10" class = "function-link" > < span class = "function-syntax" > Conditions::new_TEST_ACTION< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "function-syntax" > < < rp> > < / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > XW< / 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 >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > permit_trying_omission< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "25-pi.html#SP5_2" class = "named-paragraph-link" > < span class = "named-paragraph" > Parse any other token< / span > < span class = "named-paragraph-number" > 5.2< / span > < / a > < / 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
< ul class = "endnotetexts" > < li > This code is used in < a href = "25-pi.html#SP5" > § 5< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP5_2" > < / a > < b > § 5.2. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Parse any other token< / span > < span class = "named-paragraph-number" > 5.2< / span > < / span > < span class = "comment-syntax" > =< / span >
< / 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" > kind< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > save_probable_noun_phrase_context< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > probable_noun_phrase_context< / 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" > save_let_equation_mode< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > let_equation_mode< / span > < span class = "plain-syntax" > ;< / span >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > probable_noun_phrase_context< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < a href = "14-sp.html#SP2" class = "function-link" > < span class = "function-syntax" > Specifications::is_kind_like< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > to_match< / span > < span class = "plain-syntax" > ))< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > probable_noun_phrase_context< / span > < span class = "plain-syntax" > =< / span >
< span class = "plain-syntax" > < / span > < a href = "14-sp.html#SP1" class = "function-link" > < span class = "function-syntax" > Specifications::to_kind< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > to_match< / span > < span class = "plain-syntax" > );< / span >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > let_equation_mode< / span > < span class = "plain-syntax" > = < / span > < a href = "22-ptd.html#SP27" class = "function-link" > < span class = "function-syntax" > Phrases::TypeData::is_a_let_equation< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > ph< / span > < span class = "plain-syntax" > );< / span >
2019-03-17 14:40:57 +02:00
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" > t< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ; < / span > < span class = "comment-syntax" > redundant assignment to keep < / span > < span class = "extract" > < span class = "extract-syntax" > gcc< / span > < / span > < span class = "comment-syntax" > happy< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < a href = "14-sp.html#SP3" class = "function-link" > < span class = "function-syntax" > Specifications::is_description< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > to_match< / span > < span class = "plain-syntax" > ))< / span >
2020-05-09 01:13:45 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > t< / span > < span class = "plain-syntax" > = < / span > < span class = "function-syntax" > < s-value> < / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > XW< / 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 > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > cons< / span > < span class = "plain-syntax" > == < / span > < span class = "constant-syntax" > CONDITION_PT_CONSTRUCT< / span > < span class = "plain-syntax" > )< / span >
2020-05-09 01:13:45 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > t< / span > < span class = "plain-syntax" > = < / span > < span class = "function-syntax" > < s-condition> < / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > XW< / 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 > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > cons< / span > < span class = "plain-syntax" > == < / span > < span class = "constant-syntax" > VOID_PT_CONSTRUCT< / span > < span class = "plain-syntax" > )< / span >
2020-05-09 01:13:45 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > t< / span > < span class = "plain-syntax" > = < / span > < span class = "function-syntax" > < s-command> < / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > XW< / 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 >
2020-05-09 01:13:45 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > t< / span > < span class = "plain-syntax" > = < / span > < span class = "function-syntax" > < s-value> < / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > XW< / span > < span class = "plain-syntax" > );< / span >
2019-03-17 14:40:57 +02:00
2020-05-09 01:13:45 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > t< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > as_parsed< / span > < span class = "plain-syntax" > = < / span > < span class = "function-syntax" > < < rp> > < / 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 > < span class = "identifier-syntax" > as_parsed< / span > < span class = "plain-syntax" > = < / span > < a href = "14-sp.html#SP8" class = "function-link" > < span class = "function-syntax" > Specifications::new_UNKNOWN< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > XW< / span > < span class = "plain-syntax" > );< / span >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > LOGIF< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > MATCHING< / span > < span class = "plain-syntax" > , < / span > < span class = "string-syntax" > "(%d/%d) Expected kind $u: parsed token %W (cons %d) to $P\n"< / span > < span class = "plain-syntax" > ,< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > +1, < / span > < span class = "identifier-syntax" > N< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > probable_noun_phrase_context< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > XW< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > cons< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > as_parsed< / span > < span class = "plain-syntax" > );< / span >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > probable_noun_phrase_context< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > save_probable_noun_phrase_context< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > let_equation_mode< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > save_let_equation_mode< / span > < span class = "plain-syntax" > ;< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2020-05-03 03:01:21 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "25-pi.html#SP5" > § 5< / a > , < a href = "25-pi.html#SP5_1" > § 5.1< / a > .< / li > < / ul >
< nav role = "progress" > < div class = "progresscontainer" >
2020-05-03 18:34:53 +03:00
< ul class = "progressbar" > < li class = "progressprev" > < a href = "25-in.html" > ❮ < / a > < / li > < li class = "progresschapter" > < a href = "P-wtmd.html" > P< / a > < / li > < li class = "progresschapter" > < a href = "1-cm.html" > 1< / a > < / li > < li class = "progresschapter" > < a href = "2-up.html" > 2< / a > < / li > < li class = "progresschapter" > < a href = "3-nl.html" > 3< / a > < / li > < li class = "progresschapter" > < a href = "4-its.html" > 4< / a > < / li > < li class = "progresschapter" > < a href = "5-lp.html" > 5< / a > < / li > < li class = "progresschapter" > < a href = "6-bp.html" > 6< / a > < / li > < li class = "progresschapter" > < a href = "7-ptu.html" > 7< / a > < / li > < li class = "progresschapter" > < a href = "8-ef.html" > 8< / a > < / li > < li class = "progresschapter" > < a href = "9-ita.html" > 9< / a > < / li > < li class = "progresschapter" > < a href = "10-aots.html" > 10< / a > < / li > < li class = "progresschapter" > < a href = "11-itpc.html" > 11< / a > < / li > < li class = "progresschapter" > < a href = "12-ter.html" > 12< / a > < / li > < li class = "progresschapter" > < a href = "13-kak.html" > 13< / a > < / li > < li class = "progresschapter" > < a href = "14-sp.html" > 14< / a > < / li > < li class = "progresschapter" > < a href = "15-pr.html" > 15< / a > < / li > < li class = "progresschapter" > < a href = "16-is.html" > 16< / a > < / li > < li class = "progresschapter" > < a href = "17-tl.html" > 17< / a > < / li > < li class = "progresschapter" > < a href = "18-lc.html" > 18< / a > < / li > < li class = "progresschapter" > < a href = "19-tc.html" > 19< / a > < / li > < li class = "progresschapter" > < a href = "20-eq.html" > 20< / a > < / li > < li class = "progresschapter" > < a href = "21-rl.html" > 21< / a > < / li > < li class = "progresschapter" > < a href = "22-itp.html" > 22< / a > < / li > < li class = "progresschapter" > < a href = "23-ad.html" > 23< / a > < / li > < li class = "progresschapter" > < a href = "24-lv.html" > 24< / a > < / li > < li class = "progresscurrentchapter" > 25< / li > < li class = "progresssection" > < a href = "25-in.html" > in< / a > < / li > < li class = "progresscurrent" > pi< / li > < li class = "progresssection" > < a href = "25-ci.html" > ci< / a > < / li > < li class = "progresssection" > < a href = "25-ciac.html" > ciac< / a > < / li > < li class = "progresssection" > < a href = "25-cii.html" > cii< / a > < / li > < li class = "progresssection" > < a href = "25-cp.html" > cp< / a > < / li > < li class = "progresschapter" > < a href = "26-fc.html" > 26< / a > < / li > < li class = "progresschapter" > < a href = "27-hr.html" > 27< / a > < / li > < li class = "progressnext" > < a href = "25-ci.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 >