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 >
2021-04-04 01:10:19 +03:00
< title > Compile Blocks and Lines< / title >
2020-05-03 03:20:55 +03:00
< link href = "../docs-assets/Breadcrumbs.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
2020-03-19 02:11:25 +02:00
< meta name = "viewport" content = "width=device-width initial-scale=1" >
2019-03-17 14:40:57 +02:00
< meta http-equiv = "Content-Type" content = "text/html; charset=utf-8" >
< meta http-equiv = "Content-Language" content = "en-gb" >
2020-05-03 03:01:21 +03:00
2020-05-03 03:20:55 +03:00
< link href = "../docs-assets/Contents.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
< link href = "../docs-assets/Progress.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
< link href = "../docs-assets/Navigation.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
< link href = "../docs-assets/Fonts.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
< link href = "../docs-assets/Base.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
2020-05-03 03:01:21 +03:00
< script >
function togglePopup(material_id) {
var popup = document.getElementById(material_id);
popup.classList.toggle("show");
}
< / script >
2020-05-03 03:20:55 +03:00
< link href = "../docs-assets/Popups.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
< link href = "../docs-assets/Colours.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
2020-04-14 19:56:54 +03:00
2019-03-17 14:40:57 +02:00
< / head >
2020-05-03 03:01:21 +03:00
< body class = "commentary-font" >
2020-03-19 02:11:25 +02:00
< nav role = "navigation" >
2020-04-14 19:56:54 +03:00
< h1 > < a href = "../index.html" >
2020-05-03 18:34:53 +03:00
< img src = "../docs-assets/Inform.png" height = 72" >
2020-04-14 19:56:54 +03:00
< / a > < / h1 >
< ul > < li > < a href = "../compiler.html" > compiler tools< / a > < / li >
2020-03-19 02:11:25 +02:00
< li > < a href = "../other.html" > other tools< / a > < / li >
< li > < a href = "../extensions.html" > extensions and kits< / a > < / li >
< li > < a href = "../units.html" > unit test tools< / a > < / li >
2020-04-14 19:56:54 +03:00
< / ul > < h2 > Compiler Webs< / h2 > < ul >
2020-03-19 02:11:25 +02:00
< li > < a href = "../inbuild/index.html" > inbuild< / a > < / li >
< li > < a href = "../inform7/index.html" > inform7< / a > < / li >
< li > < a href = "../inter/index.html" > inter< / a > < / li >
2020-04-14 19:56:54 +03:00
< / ul > < h2 > Inbuild Modules< / h2 > < ul >
< li > < a href = "../supervisor-module/index.html" > supervisor< / a > < / li >
< / ul > < h2 > Inform7 Modules< / h2 > < ul >
2020-08-26 12:52:50 +03:00
< li > < a href = "../core-module/index.html" > core< / a > < / li >
< li > < a href = "../assertions-module/index.html" > assertions< / a > < / li >
< li > < a href = "../values-module/index.html" > values< / a > < / li >
< li > < a href = "../knowledge-module/index.html" > knowledge< / a > < / li >
< li > < a href = "index.html" > < span class = "selectedlink" > imperative< / span > < / a > < / li >
< li > < a href = "../runtime-module/index.html" > runtime< / a > < / li >
2020-03-19 02:11:25 +02:00
< li > < a href = "../if-module/index.html" > if< / a > < / li >
< li > < a href = "../multimedia-module/index.html" > multimedia< / a > < / li >
< li > < a href = "../index-module/index.html" > index< / a > < / li >
2020-04-14 19:56:54 +03:00
< / ul > < h2 > Inter Modules< / h2 > < ul >
< li > < a href = "../bytecode-module/index.html" > bytecode< / a > < / li >
2020-03-19 02:11:25 +02:00
< li > < a href = "../building-module/index.html" > building< / a > < / li >
< li > < a href = "../codegen-module/index.html" > codegen< / a > < / li >
2020-05-20 02:02:28 +03:00
< / ul > < h2 > Services< / h2 > < ul >
2020-04-14 19:56:54 +03:00
< li > < a href = "../arch-module/index.html" > arch< / a > < / li >
2020-08-20 01:36:18 +03:00
< li > < a href = "../calculus-module/index.html" > calculus< / a > < / li >
2020-04-14 19:56:54 +03:00
< li > < a href = "../html-module/index.html" > html< / a > < / li >
2020-05-20 02:02:28 +03:00
< li > < a href = "../inflections-module/index.html" > inflections< / a > < / li >
2020-08-20 01:36:18 +03:00
< li > < a href = "../kinds-module/index.html" > kinds< / a > < / li >
2020-05-20 02:02:28 +03:00
< li > < a href = "../linguistics-module/index.html" > linguistics< / a > < / li >
< li > < a href = "../problems-module/index.html" > problems< / a > < / li >
2020-08-20 01:36:18 +03:00
< li > < a href = "../syntax-module/index.html" > syntax< / a > < / li >
< li > < a href = "../words-module/index.html" > words< / a > < / li >
2020-03-19 02:11:25 +02:00
< li > < a href = "../../../inweb/docs/foundation-module/index.html" > foundation< / a > < / li >
2020-04-14 19:56:54 +03:00
< / ul >
2020-03-19 02:11:25 +02:00
< / nav >
< main role = "main" >
2021-04-04 01:10:19 +03:00
<!-- Weave of 'Compile Blocks and Lines' generated by Inweb -->
2020-05-03 03:01:21 +03:00
< div class = "breadcrumbs" >
2021-04-04 01:10:19 +03:00
< ul class = "crumbs" > < li > < a href = "../index.html" > Home< / a > < / li > < li > < a href = "../compiler.html" > Inform7< / a > < / li > < li > < a href = "index.html" > imperative< / a > < / li > < li > < a href = "index.html#4" > Chapter 4: Invocations< / a > < / li > < li > < b > Compile Blocks and Lines< / b > < / li > < / ul > < / div >
< p class = "purpose" > Compiling a code block of lines from an imperative definition.< / p >
2019-03-17 14:40:57 +02:00
2021-04-04 01:10:19 +03:00
< ul class = "toc" > < li > < a href = "4-cbal.html#SP4" > § 4. Validation of invocations< / a > < / li > < li > < a href = "4-cbal.html#SP5" > § 5. Problem messages for complex say constructions< / a > < / li > < / ul > < hr class = "tocbar" >
2019-03-17 14:40:57 +02:00
2021-04-04 01:10:19 +03:00
< p class = "commentary firstcommentary" > < a id = "SP1" class = "paragraph-anchor" > < / a > < b > § 1. < / b > < / p >
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > disallow_let_assignments< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ;< / span >
2021-04-04 01:10:19 +03:00
< span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > CompileBlocksAndLines::disallow_let< / span > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > ) {< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > disallow_let_assignments< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2021-04-04 01:10:19 +03:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > CompileBlocksAndLines::full_definition_body< / 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" > CompileBlocksAndLines::full_definition_body< / span > < / span > :< br / > Compile Imperative Definitions - < a href = "2-cid.html#SP1_3" > § 1.3< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > statement_count< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > parse_node< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > pn< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < a href = "4-cbal.html#SP1" class = "function-link" > < span class = "function-syntax" > CompileBlocksAndLines::code_block< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > statement_count< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > pn< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > );< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > }< / span >
2021-04-04 01:10:19 +03:00
< span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > CompileBlocksAndLines::code_block< / 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" > CompileBlocksAndLines::code_block< / span > < / span > :< br / > < a href = "4-cbal.html#SP1_3_4" > § 1.3.4< / a > , < a href = "4-cbal.html#SP1_3_5_1" > § 1.3.5.1< / a > , < a href = "4-cbal.html#SP1_3_5_2" > § 1.3.5.2< / a > , < a href = "4-cbal.html#SP1_3_5_3" > § 1.3.5.3< / a > , < a href = "4-cbal.html#SP1_3_5_4" > § 1.3.5.4< / a > , < a href = "4-cbal.html#SP1_4_3" > § 1.4.3< / a > , < a href = "4-cbal.html#SP1_4_5" > § 1.4.5< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > statement_count< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > parse_node< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > pn< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > top_level< / 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" > pn< / span > < span class = "plain-syntax" > ) {< / span >
2020-05-09 01:13:45 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > m< / span > < span class = "plain-syntax" > = < / span > < span class = "function-syntax" > < s-value-uncached> -> < / span > < span class = "identifier-syntax" > multiplicitous< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "function-syntax" > < s-value-uncached> -> < / span > < span class = "identifier-syntax" > multiplicitous< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
2020-08-26 12:52:50 +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" > pn< / span > < span class = "plain-syntax" > ) != < / span > < span class = "identifier-syntax" > CODE_BLOCK_NT< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > internal_error< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > "not a code block"< / span > < span class = "plain-syntax" > );< / span >
2021-04-01 01:28:26 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > ((< / span > < span class = "identifier-syntax" > top_level< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ) & & (< / span > < span class = "identifier-syntax" > pn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > down< / span > < span class = "plain-syntax" > ) & & (< / span > < span class = "identifier-syntax" > pn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > down< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > next< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ) & & (< / span > < span class = "identifier-syntax" > pn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > down< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > down< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ))< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > disallow_let_assignments< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
2021-04-01 01:28:26 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > for< / 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 = "identifier-syntax" > pn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > down< / span > < span class = "plain-syntax" > ; < / span > < span class = "identifier-syntax" > p< / span > < span class = "plain-syntax" > ; < / span > < span class = "identifier-syntax" > p< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > p< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > next< / span > < span class = "plain-syntax" > ) {< / span >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > statement_count< / span > < span class = "plain-syntax" > = < / span > < a href = "4-cbal.html#SP1" class = "function-link" > < span class = "function-syntax" > CompileBlocksAndLines::code_line< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > statement_count< / 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 = "plain-syntax" > < / span > < span class = "identifier-syntax" > disallow_let_assignments< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ;< / span >
2020-05-09 01:13:45 +03:00
< span class = "plain-syntax" > < / span > < span class = "function-syntax" > < s-value-uncached> -> < / span > < span class = "identifier-syntax" > multiplicitous< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > m< / span > < span class = "plain-syntax" > ;< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > statement_count< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2021-04-04 01:10:19 +03:00
< span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > CompileBlocksAndLines::code_line< / span > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > statement_count< / 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 >
2020-05-11 17:21:29 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > control_structure_phrase< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > csp< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Node::get_control_structure_used< / 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" > parse_node< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > to_compile< / 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" > ControlStructures::opens_block< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > csp< / span > < span class = "plain-syntax" > )) {< / span >
2021-04-03 16:32:59 +03:00
< span class = "plain-syntax" > < / span > < a href = "2-cb.html#SP9" class = "function-link" > < span class = "function-syntax" > CodeBlocks::beginning_block_phrase< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > csp< / span > < span class = "plain-syntax" > );< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > to_compile< / 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-03 03:01:21 +03:00
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > statement_count< / span > < span class = "plain-syntax" > ++;< / span >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "4-cbal.html#SP1_1" class = "named-paragraph-link" > < span class = "named-paragraph" > Compile a comment about this line< / span > < span class = "named-paragraph-number" > 1.1< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > L< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Produce::level< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > ());< / span >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "4-cbal.html#SP1_2" class = "named-paragraph-link" > < span class = "named-paragraph" > Compile the head< / span > < span class = "named-paragraph-number" > 1.2< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "4-cbal.html#SP1_3" class = "named-paragraph-link" > < span class = "named-paragraph" > Compile the midriff< / span > < span class = "named-paragraph-number" > 1.3< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "4-cbal.html#SP1_4" class = "named-paragraph-link" > < span class = "named-paragraph" > Compile the tail< / span > < span class = "named-paragraph-number" > 1.4< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > statement_count< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-04 01:10:19 +03:00
< p class = "commentary firstcommentary" > < a id = "SP1_1" class = "paragraph-anchor" > < / a > < b > § 1.1. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Compile a comment about this line< / span > < span class = "named-paragraph-number" > 1.1< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
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" > Wordings::nonempty< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Node::get_text< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > to_compile< / span > < span class = "plain-syntax" > ))) {< / span >
2020-06-28 01:18:54 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > TEMPORARY_TEXT< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > C< / span > < span class = "plain-syntax" > )< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > WRITE_TO< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > C< / span > < span class = "plain-syntax" > , < / span > < span class = "string-syntax" > "[%d: "< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > statement_count< / span > < span class = "plain-syntax" > );< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > CompiledText::comment< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > C< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > Node::get_text< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > to_compile< / span > < span class = "plain-syntax" > ));< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > WRITE_TO< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > C< / span > < span class = "plain-syntax" > , < / span > < span class = "string-syntax" > "]"< / span > < span class = "plain-syntax" > );< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Emit::code_comment< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > C< / span > < span class = "plain-syntax" > );< / span >
2020-06-28 01:18:54 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > DISCARD_TEXT< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > C< / span > < span class = "plain-syntax" > )< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > }< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-04 01:10:19 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-cbal.html#SP1" > § 1< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP1_2" class = "paragraph-anchor" > < / a > < b > § 1.2. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Compile the head< / span > < span class = "named-paragraph-number" > 1.2< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > csp< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > say_CSP< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > current_sentence< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > to_compile< / span > < span class = "plain-syntax" > ;< / span >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "4-cbal.html#SP1_2_1" class = "named-paragraph-link" > < span class = "named-paragraph" > Compile a say head< / span > < span class = "named-paragraph-number" > 1.2.1< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > }< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-04 01:10:19 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-cbal.html#SP1" > § 1< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP1_2_1" class = "paragraph-anchor" > < / a > < b > § 1.2.1. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Compile a say head< / span > < span class = "named-paragraph-number" > 1.2.1< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
2021-04-01 01:28:26 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > for< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > parse_node< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > say_node< / 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 > < span class = "identifier-syntax" > prev_sn< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ; < / span > < span class = "identifier-syntax" > say_node< / span > < span class = "plain-syntax" > ; < / span > < span class = "identifier-syntax" > prev_sn< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > say_node< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > say_node< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > say_node< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > next< / span > < span class = "plain-syntax" > ) {< / span >
2021-02-06 20:00:34 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > SParser::parse_say_term< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > say_node< / span > < span class = "plain-syntax" > );< / span >
2021-04-04 01:10:19 +03:00
< 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 = "identifier-syntax" > InvocationLists::first_reading< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > say_node< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > down< / 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" > inv< / 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" > prev_sn< / 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_say_verb< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > inv< / span > < span class = "plain-syntax" > )) ||< / span >
< span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Node::get_say_adjective< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > inv< / span > < span class = "plain-syntax" > )) ||< / span >
2021-03-29 01:42:22 +03:00
< span class = "plain-syntax" > ((< / span > < span class = "identifier-syntax" > IDTypeData::is_a_say_phrase< / 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 >
< 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 > < span class = "identifier-syntax" > type_data< / span > < span class = "plain-syntax" > .< / span > < span class = "identifier-syntax" > as_say< / span > < span class = "plain-syntax" > .< / span > < span class = "identifier-syntax" > say_phrase_running_on< / span > < span class = "plain-syntax" > )))< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Annotations::write_int< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > prev_sn< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > suppress_newlines_ANNOT< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > );< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > }< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::inv_primitive< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > STORE_BIP< / span > < span class = "plain-syntax" > ); < / span > < span class = "comment-syntax" > warn the paragraph breaker: this will print< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::down< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > ());< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::ref_iname< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > K_number< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > Hierarchy::find< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > SAY__P_HL< / span > < span class = "plain-syntax" > ));< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::val< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > K_number< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > LITERAL_IVAL< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > 1< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::up< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > ());< / span >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > < / span > < a href = "4-cbal.html#SP4" class = "function-link" > < span class = "function-syntax" > CompileBlocksAndLines::verify_say_node_list< / span > < / a > < 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 >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-04 01:10:19 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-cbal.html#SP1_2" > § 1.2< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP1_3" class = "paragraph-anchor" > < / a > < b > § 1.3. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Compile the midriff< / span > < span class = "named-paragraph-number" > 1.3< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
2021-04-04 01:10:19 +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" > to_compile< / span > < span class = "plain-syntax" > ) == < / span > < span class = "identifier-syntax" > INVOCATION_LIST_SAY_NT< / span > < span class = "plain-syntax" > ) < / span > < span class = "named-paragraph-container code-font" > < a href = "4-cbal.html#SP1_3_1" class = "named-paragraph-link" > < span class = "named-paragraph" > Compile a say term midriff< / span > < span class = "named-paragraph-number" > 1.3.1< / span > < / a > < / 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" > csp< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > now_CSP< / span > < span class = "plain-syntax" > ) < / span > < span class = "named-paragraph-container code-font" > < a href = "4-cbal.html#SP1_3_2" class = "named-paragraph-link" > < span class = "named-paragraph" > Compile a now midriff< / span > < span class = "named-paragraph-number" > 1.3.2< / span > < / a > < / 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" > csp< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > if_CSP< / span > < span class = "plain-syntax" > ) < / span > < span class = "named-paragraph-container code-font" > < a href = "4-cbal.html#SP1_3_4" class = "named-paragraph-link" > < span class = "named-paragraph" > Compile an if midriff< / span > < span class = "named-paragraph-number" > 1.3.4< / span > < / a > < / 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" > csp< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > switch_CSP< / span > < span class = "plain-syntax" > ) < / span > < span class = "named-paragraph-container code-font" > < a href = "4-cbal.html#SP1_3_5" class = "named-paragraph-link" > < span class = "named-paragraph" > Compile a switch midriff< / span > < span class = "named-paragraph-number" > 1.3.5< / span > < / a > < / 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" > csp< / span > < span class = "plain-syntax" > != < / span > < span class = "identifier-syntax" > say_CSP< / span > < span class = "plain-syntax" > ) & & (< / span > < span class = "identifier-syntax" > csp< / span > < span class = "plain-syntax" > != < / span > < span class = "identifier-syntax" > instead_CSP< / 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 = "function-syntax" > < named-rulebook-outcome> < / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Node::get_text< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > to_compile< / span > < span class = "plain-syntax" > )))< / span >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "4-cbal.html#SP1_3_3" class = "named-paragraph-link" > < span class = "named-paragraph" > Compile a named rulebook outline midriff< / span > < span class = "named-paragraph-number" > 1.3.3< / span > < / a > < / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "4-cbal.html#SP1_3_6" class = "named-paragraph-link" > < span class = "named-paragraph" > Compile a standard midriff< / span > < span class = "named-paragraph-number" > 1.3.6< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > }< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-04 01:10:19 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-cbal.html#SP1" > § 1< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP1_3_1" class = "paragraph-anchor" > < / a > < b > § 1.3.1. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Compile a say term midriff< / span > < span class = "named-paragraph-number" > 1.3.1< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > < / span > < span class = "constant-syntax" > BEGIN_COMPILATION_MODE< / span > < span class = "plain-syntax" > ;< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Annotations::read_int< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > to_compile< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > suppress_newlines_ANNOT< / span > < span class = "plain-syntax" > ))< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > COMPILATION_MODE_EXIT< / span > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > IMPLY_NEWLINES_IN_SAY_CMODE< / span > < span class = "plain-syntax" > );< / span >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > < / span > < a href = "4-cbal.html#SP2" class = "function-link" > < span class = "function-syntax" > CompileBlocksAndLines::invocation< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > to_compile< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > INTER_VOID_VHMODE< / span > < span class = "plain-syntax" > );< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "constant-syntax" > END_COMPILATION_MODE< / span > < span class = "plain-syntax" > ;< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-04 01:10:19 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-cbal.html#SP1_3" > § 1.3< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP1_3_2" class = "paragraph-anchor" > < / a > < b > § 1.3.2. < / b > In fact, "now" propositions are never empty, but there's nothing in
2019-03-17 14:40:57 +02:00
principle wrong with asserting that the universally true proposition is
henceforth to be true, so we simply compile empty code in that case.
< / p >
2021-04-04 01:10:19 +03:00
< p class = "commentary" > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Compile a now midriff< / span > < span class = "named-paragraph-number" > 1.3.2< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > current_sentence< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > to_compile< / span > < span class = "plain-syntax" > ;< / span >
2020-08-26 12:52:50 +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" > p< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > down< / span > < span class = "plain-syntax" > );< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > parse_node< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > cs< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ;< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / 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 > < span class = "identifier-syntax" > cs< / span > < span class = "plain-syntax" > = < / span > < span class = "function-syntax" > < < rp> > < / span > < span class = "plain-syntax" > ; < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > cs< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Specifications::new_UNKNOWN< / 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 = "identifier-syntax" > LOGIF< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > MATCHING< / span > < span class = "plain-syntax" > , < / span > < span class = "string-syntax" > "Now cond is $T\n"< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > cs< / span > < span class = "plain-syntax" > );< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > rv< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Dash::check_condition< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > cs< / span > < span class = "plain-syntax" > );< / span >
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" > "After Dash, it's $T\n"< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > cs< / span > < span class = "plain-syntax" > );< / span >
2020-08-26 12:52:50 +03:00
< 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" > cs< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > TEST_PROPOSITION_NT< / 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" > rv< / span > < span class = "plain-syntax" > != < / span > < span class = "identifier-syntax" > NEVER_MATCH< / span > < span class = "plain-syntax" > ) {< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > pcalc_prop< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > prop< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Specifications::to_proposition< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > cs< / 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" > prop< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "constant-syntax" > BEGIN_COMPILATION_MODE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > COMPILATION_MODE_ENTER< / span > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > PERMIT_LOCALS_IN_TEXT_CMODE< / span > < span class = "plain-syntax" > );< / span >
2021-03-30 00:53:01 +03:00
< span class = "plain-syntax" > < / span > < a href = "3-dtd.html#SP10" class = "function-link" > < span class = "function-syntax" > Calculus::Deferrals::emit_now_proposition< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > prop< / span > < span class = "plain-syntax" > );< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "constant-syntax" > END_COMPILATION_MODE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > }< / span >
2020-08-27 17:50:24 +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" > Specifications::is_condition< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > cs< / span > < span class = "plain-syntax" > ))< / span >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "4-cbal.html#SP1_3_2_1" class = "named-paragraph-link" > < span class = "named-paragraph" > Issue a problem message for the wrong sort of condition in a "now"< / span > < span class = "named-paragraph-number" > 1.3.2.1< / span > < / a > < / 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" > rv< / span > < span class = "plain-syntax" > != < / span > < span class = "identifier-syntax" > NEVER_MATCH< / span > < span class = "plain-syntax" > ) < / span > < span class = "named-paragraph-container code-font" > < a href = "4-cbal.html#SP1_3_2_2" class = "named-paragraph-link" > < span class = "named-paragraph" > Issue a problem message for an unrecognised condition< / span > < span class = "named-paragraph-number" > 1.3.2.2< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-04 01:10:19 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-cbal.html#SP1_3" > § 1.3< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP1_3_2_1" class = "paragraph-anchor" > < / a > < b > § 1.3.2.1. < / b > A deluxe problem message.
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2021-04-04 01:10:19 +03:00
< p class = "commentary" > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Issue a problem message for the wrong sort of condition in a "now"< / span > < span class = "named-paragraph-number" > 1.3.2.1< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_source< / span > < span class = "plain-syntax" > (1, < / span > < span class = "identifier-syntax" > current_sentence< / span > < span class = "plain-syntax" > );< / span >
2020-05-11 17:21:29 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_wording< / span > < span class = "plain-syntax" > (2, < / span > < span class = "identifier-syntax" > Node::get_text< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > cs< / span > < span class = "plain-syntax" > ));< / span >
2020-08-26 12:52:50 +03:00
< 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" > cs< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > TEST_VALUE_NT< / span > < span class = "plain-syntax" > )) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > StandardProblems::handmade_problem< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Task::syntax_tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > _p_< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PM_BadNow1< / span > < span class = "plain-syntax" > ));< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_segment< / span > < span class = "plain-syntax" > (< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "You wrote %1, but although '%2' is a condition which it is legal "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "to test with 'if', 'when', and so forth, it is not something I "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "can arrange to happen on request. Whether it is true or not "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "depends on current circumstances: so to make it true, you will "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "need to adjust those circumstances."< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_end< / span > < span class = "plain-syntax" > ();< / span >
2020-08-26 12:52:50 +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" > cs< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > LOGICAL_AND_NT< / span > < span class = "plain-syntax" > )) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > StandardProblems::handmade_problem< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Task::syntax_tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > _p_< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PM_BadNow2< / span > < span class = "plain-syntax" > ));< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_segment< / span > < span class = "plain-syntax" > (< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "You wrote %1, but 'now' does not work with the condition '%2' "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "because it can only make one wish come true at a time: so it "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "doesn't like the 'and'. Try rewriting as two 'now's in a row?"< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_end< / span > < span class = "plain-syntax" > ();< / span >
< span class = "plain-syntax" > } < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > {< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > StandardProblems::handmade_problem< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Task::syntax_tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > _p_< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PM_BadNow3< / span > < span class = "plain-syntax" > ));< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_segment< / span > < span class = "plain-syntax" > (< / span >
2021-02-06 20:00:34 +02:00
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "You wrote %1, but '%2' isn't the sort of condition which can be "< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "made to be true, in the way that 'the ball is on the table' can be "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "made true with a straightforward movement of one object (the ball)."< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_end< / span > < span class = "plain-syntax" > ();< / span >
< span class = "plain-syntax" > }< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-04 01:10:19 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-cbal.html#SP1_3_2" > § 1.3.2< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP1_3_2_2" class = "paragraph-anchor" > < / a > < b > § 1.3.2.2. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Issue a problem message for an unrecognised condition< / span > < span class = "named-paragraph-number" > 1.3.2.2< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > LOG< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > "$T\n"< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > current_sentence< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_source< / span > < span class = "plain-syntax" > (1, < / span > < span class = "identifier-syntax" > current_sentence< / span > < span class = "plain-syntax" > );< / span >
2020-05-11 17:21:29 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_wording< / span > < span class = "plain-syntax" > (2, < / span > < span class = "identifier-syntax" > Node::get_text< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > cs< / span > < span class = "plain-syntax" > ));< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > StandardProblems::handmade_problem< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Task::syntax_tree< / 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" > Problems::issue_problem_segment< / span > < span class = "plain-syntax" > (< / span >
2021-02-06 20:00:34 +02:00
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "You wrote %1, but '%2' isn't a condition, so I can't see how to "< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "make it true from here on."< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_end< / span > < span class = "plain-syntax" > ();< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-04 01:10:19 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-cbal.html#SP1_3_2" > § 1.3.2< / a > .< / li > < / ul >
2020-08-18 00:57:45 +03:00
< p class = "commentary firstcommentary" > < a id = "SP_1" class = "paragraph-anchor" > < / a > < b > § .1. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Issue a problem message for an unrecognised action< / span > < span class = "named-paragraph-number" > .1< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_source< / span > < span class = "plain-syntax" > (1, < / span > < span class = "identifier-syntax" > current_sentence< / span > < span class = "plain-syntax" > );< / span >
2020-05-11 17:21:29 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_wording< / span > < span class = "plain-syntax" > (2, < / span > < span class = "identifier-syntax" > Node::get_text< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > cs< / span > < span class = "plain-syntax" > ));< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > StandardProblems::handmade_problem< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Task::syntax_tree< / 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" > Problems::issue_problem_segment< / span > < span class = "plain-syntax" > (< / span >
2021-02-06 20:00:34 +02:00
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "You wrote %1, but '%2' isn't an action, so I can't see how to try it."< / span > < span class = "plain-syntax" > );< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_end< / 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 never used.< / li > < / ul >
2021-04-04 01:10:19 +03:00
< p class = "commentary firstcommentary" > < a id = "SP1_3_3" class = "paragraph-anchor" > < / a > < b > § 1.3.3. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Compile a named rulebook outline midriff< / span > < span class = "named-paragraph-number" > 1.3.3< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > current_sentence< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > to_compile< / span > < span class = "plain-syntax" > ;< / span >
2021-03-30 00:53:01 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > named_rulebook_outcome< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > nrbo< / span > < span class = "plain-syntax" > = < / span > < span class = "function-syntax" > < < rp> > < / span > < span class = "plain-syntax" > ;< / span >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > id_body< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > being_compiled< / span > < span class = "plain-syntax" > = < / span > < a href = "2-fnc.html#SP4" class = "function-link" > < span class = "function-syntax" > Functions::defn_being_compiled< / span > < / a > < 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" > being_compiled< / 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" > ImperativeDefinitionFamilies::goes_in_rulebooks< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > being_compiled< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > head_of_defn< / span > < span class = "plain-syntax" > ) == < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ) {< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_source< / span > < span class = "plain-syntax" > (1, < / span > < span class = "identifier-syntax" > current_sentence< / span > < span class = "plain-syntax" > );< / span >
2020-05-11 17:21:29 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_wording< / span > < span class = "plain-syntax" > (2, < / span > < span class = "identifier-syntax" > Node::get_text< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > to_compile< / span > < span class = "plain-syntax" > ));< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > StandardProblems::handmade_problem< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Task::syntax_tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > _p_< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PM_MisplacedRulebookOutcome2< / span > < span class = "plain-syntax" > ));< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_segment< / span > < span class = "plain-syntax" > (< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "You wrote %1, but this is a rulebook outcome which can only be used "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "within rulebooks which recognise it. You've used it in a definition "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "which isn't for use in rulebooks at all, so it must be wrong here."< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_end< / span > < span class = "plain-syntax" > ();< / span >
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > }< / span >
2021-03-30 00:53:01 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > rulebook< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > rb< / 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 > < span class = "identifier-syntax" > IDCompilation::outcome_restrictions_waived< / span > < span class = "plain-syntax" > () == < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > )< / span >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > rb< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > FocusAndOutcome::rulebook_not_supporting< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nrbo< / span > < span class = "plain-syntax" > , < / span > < a href = "2-fnc.html#SP4" class = "function-link" > < span class = "function-syntax" > Functions::defn_being_compiled< / span > < / a > < 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" > rb< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_source< / span > < span class = "plain-syntax" > (1, < / span > < span class = "identifier-syntax" > current_sentence< / span > < span class = "plain-syntax" > );< / span >
2020-05-11 17:21:29 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_wording< / span > < span class = "plain-syntax" > (2, < / span > < span class = "identifier-syntax" > Node::get_text< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > to_compile< / span > < span class = "plain-syntax" > ));< / span >
2021-03-30 00:53:01 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_wording< / span > < span class = "plain-syntax" > (3, < / span > < span class = "identifier-syntax" > rb< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > primary_name< / span > < span class = "plain-syntax" > );< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > StandardProblems::handmade_problem< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Task::syntax_tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > _p_< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PM_MisplacedRulebookOutcome< / span > < span class = "plain-syntax" > ));< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_segment< / span > < span class = "plain-syntax" > (< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "You wrote %1, but this is a rulebook outcome which can only be used "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "within rulebooks which recognise it. You've used it in a rule which "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "has to be listed in the '%3' rulebook, where '%2' doesn't have a meaning."< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_end< / span > < span class = "plain-syntax" > ();< / span >
< span class = "plain-syntax" > }< / span >
2021-03-23 02:08:57 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > RTRules::compile_outcome< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nrbo< / span > < span class = "plain-syntax" > );< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-04 01:10:19 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-cbal.html#SP1_3" > § 1.3< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP1_3_4" class = "paragraph-anchor" > < / a > < b > § 1.3.4. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Compile an if midriff< / span > < span class = "named-paragraph-number" > 1.3.4< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
2021-04-01 01:28:26 +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" > down< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > next< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > next< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > Produce::inv_primitive< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > IFELSE_BIP< / span > < span class = "plain-syntax" > );< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::inv_primitive< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > IF_BIP< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::down< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > ());< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > current_sentence< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > to_compile< / span > < span class = "plain-syntax" > ;< / span >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > < / span > < a href = "4-cbal.html#SP2" class = "function-link" > < span class = "function-syntax" > CompileBlocksAndLines::invocation< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > to_compile< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > INTER_VAL_VHMODE< / span > < span class = "plain-syntax" > );< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::code< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > ());< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::down< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > ());< / span >
2021-04-03 16:32:59 +03:00
< span class = "plain-syntax" > < / span > < a href = "2-cb.html#SP11" class = "function-link" > < span class = "function-syntax" > CodeBlocks::open_code_block< / span > < / a > < span class = "plain-syntax" > ();< / span >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > statement_count< / span > < span class = "plain-syntax" > = < / span > < a href = "4-cbal.html#SP1" class = "function-link" > < span class = "function-syntax" > CompileBlocksAndLines::code_block< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > statement_count< / 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 > < span class = "identifier-syntax" > next< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > );< / span >
2021-04-01 01:28:26 +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" > down< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > next< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > next< / span > < span class = "plain-syntax" > ) {< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::up< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > ());< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::code< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > ());< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::down< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > ());< / span >
2021-04-03 16:32:59 +03:00
< span class = "plain-syntax" > < / span > < a href = "2-cb.html#SP12" class = "function-link" > < span class = "function-syntax" > CodeBlocks::divide_code_block< / span > < / a > < span class = "plain-syntax" > ();< / span >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > statement_count< / span > < span class = "plain-syntax" > = < / span > < a href = "4-cbal.html#SP1" class = "function-link" > < span class = "function-syntax" > CompileBlocksAndLines::code_block< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > statement_count< / 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 > < span class = "identifier-syntax" > next< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > next< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > );< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > }< / span >
2021-04-03 16:32:59 +03:00
< span class = "plain-syntax" > < / span > < a href = "2-cb.html#SP13" class = "function-link" > < span class = "function-syntax" > CodeBlocks::close_code_block< / span > < / a > < span class = "plain-syntax" > ();< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::up< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > ());< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::up< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > ());< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-04 01:10:19 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-cbal.html#SP1_3" > § 1.3< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP1_3_5" class = "paragraph-anchor" > < / a > < b > § 1.3.5. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Compile a switch midriff< / span > < span class = "named-paragraph-number" > 1.3.5< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > current_sentence< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > to_compile< / span > < span class = "plain-syntax" > ;< / span >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > < / span > < a href = "4-cbal.html#SP2" class = "function-link" > < span class = "function-syntax" > CompileBlocksAndLines::invocation< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > to_compile< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > INTER_VOID_VHMODE< / span > < span class = "plain-syntax" > );< / span >
2020-05-03 03:01:21 +03:00
2021-04-03 16:32:59 +03:00
< span class = "plain-syntax" > < / span > < a href = "2-cb.html#SP11" class = "function-link" > < span class = "function-syntax" > CodeBlocks::open_code_block< / span > < / a > < span class = "plain-syntax" > ();< / span >
2020-05-03 03:01:21 +03:00
2021-04-03 16:32:59 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > parse_node< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > val< / span > < span class = "plain-syntax" > = < / span > < a href = "2-cb.html#SP15" class = "function-link" > < span class = "function-syntax" > CodeBlocks::switch_value< / span > < / a > < 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" > val< / 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" > "no switch value"< / span > < span class = "plain-syntax" > );< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > kind< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > switch_kind< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Specifications::to_kind< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > val< / span > < span class = "plain-syntax" > );< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > pointery< / 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" > inter_symbol< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > sw_v< / 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 > < span class = "identifier-syntax" > Kinds::Behaviour::uses_pointer_values< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > switch_kind< / span > < span class = "plain-syntax" > )) < / span > < span class = "identifier-syntax" > pointery< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
2020-08-09 20:39:31 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > LOG< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > "Switch val is $T for kind %u pointery %d\n"< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > val< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > switch_kind< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > pointery< / span > < span class = "plain-syntax" > );< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > local_variable< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > lvar< / 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" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > downs< / 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" > pointery< / span > < span class = "plain-syntax" > ) {< / span >
2021-04-02 19:33:37 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > lvar< / span > < span class = "plain-syntax" > = < / span > < a href = "2-lv.html#SP11" class = "function-link" > < span class = "function-syntax" > LocalVariables::add_switch_value< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > K_value< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > sw_v< / span > < span class = "plain-syntax" > = < / span > < a href = "2-lv.html#SP1" class = "function-link" > < span class = "function-syntax" > LocalVariables::declare< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > lvar< / span > < span class = "plain-syntax" > );< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::inv_primitive< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > STORE_BIP< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::down< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > ());< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::ref_symbol< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > K_value< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > sw_v< / span > < span class = "plain-syntax" > );< / span >
2021-03-30 00:53:01 +03:00
< span class = "plain-syntax" > < / span > < a href = "3-cfs.html#SP8" class = "function-link" > < span class = "function-syntax" > Specifications::Compiler::emit_as_val< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > switch_kind< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > val< / span > < span class = "plain-syntax" > );< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::up< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > ());< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > } < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > {< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::inv_primitive< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > SWITCH_BIP< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::down< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > ());< / span >
2021-03-30 00:53:01 +03:00
< span class = "plain-syntax" > < / span > < a href = "3-cfs.html#SP8" class = "function-link" > < span class = "function-syntax" > Specifications::Compiler::emit_as_val< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > switch_kind< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > val< / span > < span class = "plain-syntax" > );< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::code< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > ());< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::down< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > ());< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > c< / span > < span class = "plain-syntax" > = < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > ;< / span >
2021-04-01 01:28:26 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > for< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > parse_node< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > ow_node< / 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 > < span class = "identifier-syntax" > next< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > next< / span > < span class = "plain-syntax" > ; < / span > < span class = "identifier-syntax" > ow_node< / span > < span class = "plain-syntax" > ; < / span > < span class = "identifier-syntax" > ow_node< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > ow_node< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > next< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > c< / span > < span class = "plain-syntax" > ++) {< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > current_sentence< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > ow_node< / span > < span class = "plain-syntax" > ;< / span >
2021-04-03 16:32:59 +03:00
< span class = "plain-syntax" > < / span > < a href = "2-cb.html#SP12" class = "function-link" > < span class = "function-syntax" > CodeBlocks::divide_code_block< / span > < / a > < span class = "plain-syntax" > ();< / span >
2020-05-03 03:01:21 +03:00
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_control_structure_used< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > ow_node< / span > < span class = "plain-syntax" > ) == < / span > < span class = "identifier-syntax" > default_case_CSP< / span > < span class = "plain-syntax" > ) {< / span >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > pointery< / span > < span class = "plain-syntax" > ) < / span > < span class = "named-paragraph-container code-font" > < a href = "4-cbal.html#SP1_3_5_4" class = "named-paragraph-link" > < span class = "named-paragraph" > Handle a pointery default< / span > < span class = "named-paragraph-number" > 1.3.5.4< / span > < / a > < / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "4-cbal.html#SP1_3_5_2" class = "named-paragraph-link" > < span class = "named-paragraph" > Handle a non-pointery default< / span > < span class = "named-paragraph-number" > 1.3.5.2< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > } < / span > < span class = "reserved-syntax" > else< / 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 = "function-syntax" > < s-type-expression-or-value> < / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Node::get_text< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > ow_node< / span > < span class = "plain-syntax" > ))) {< / span >
2020-05-09 01:13:45 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > parse_node< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > case_spec< / span > < span class = "plain-syntax" > = < / span > < span class = "function-syntax" > < < rp> > < / span > < span class = "plain-syntax" > ;< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > case_spec< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > NonlocalVariables::substitute_constants< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > case_spec< / 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_evaluation< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > ow_node< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > case_spec< / span > < span class = "plain-syntax" > );< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Dash::check_value< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > case_spec< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ) != < / span > < span class = "identifier-syntax" > NEVER_MATCH< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > kind< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > case_kind< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Specifications::to_kind< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > case_spec< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > instance< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > I< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Rvalues::to_object_instance< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > case_spec< / 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" > case_kind< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Instances::to_kind< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > I< / span > < span class = "plain-syntax" > );< / span >
2020-08-09 20:39:31 +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" > "(h.3) switch kind is %u, case kind is %u\n"< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > switch_kind< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > case_kind< / 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_kind_of_value< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > case_spec< / span > < span class = "plain-syntax" > ) == < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ) & & (< / span > < span class = "identifier-syntax" > I< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > )) {< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_source< / span > < span class = "plain-syntax" > (1, < / span > < span class = "identifier-syntax" > current_sentence< / span > < span class = "plain-syntax" > );< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_kind< / span > < span class = "plain-syntax" > (2, < / span > < span class = "identifier-syntax" > switch_kind< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > StandardProblems::handmade_problem< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Task::syntax_tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > _p_< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PM_CaseValueNonConstant< / span > < span class = "plain-syntax" > ));< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_segment< / span > < span class = "plain-syntax" > (< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "The case %1 is required to be a constant value, rather than "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "something which has different values at different times: "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "specifically, it has to be %2."< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_end< / span > < span class = "plain-syntax" > ();< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > case_spec< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Rvalues::new_nothing_object_constant< / span > < span class = "plain-syntax" > ();< / span >
2020-08-12 01:59: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" > Kinds::compatible< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > case_kind< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > switch_kind< / span > < span class = "plain-syntax" > ) != < / span > < span class = "identifier-syntax" > ALWAYS_MATCH< / span > < span class = "plain-syntax" > ) {< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_source< / span > < span class = "plain-syntax" > (1, < / span > < span class = "identifier-syntax" > current_sentence< / span > < span class = "plain-syntax" > );< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_kind< / span > < span class = "plain-syntax" > (2, < / span > < span class = "identifier-syntax" > case_kind< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_kind< / span > < span class = "plain-syntax" > (3, < / span > < span class = "identifier-syntax" > switch_kind< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > StandardProblems::handmade_problem< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Task::syntax_tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > _p_< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PM_CaseValueMismatch< / span > < span class = "plain-syntax" > ));< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_segment< / span > < span class = "plain-syntax" > (< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "The case %1 has the wrong kind of value for the possibilities "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "being chosen from: %2 instead of %3."< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_end< / span > < span class = "plain-syntax" > ();< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > case_spec< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Rvalues::new_nothing_object_constant< / span > < span class = "plain-syntax" > ();< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > } < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > {< / span >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > pointery< / span > < span class = "plain-syntax" > ) < / span > < span class = "named-paragraph-container code-font" > < a href = "4-cbal.html#SP1_3_5_3" class = "named-paragraph-link" > < span class = "named-paragraph" > Handle a pointery case< / span > < span class = "named-paragraph-number" > 1.3.5.3< / span > < / a > < / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "4-cbal.html#SP1_3_5_1" class = "named-paragraph-link" > < span class = "named-paragraph" > Handle a non-pointery case< / span > < span class = "named-paragraph-number" > 1.3.5.1< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > }< / span >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > } < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "4-cbal.html#SP1_3_5_5" class = "named-paragraph-link" > < span class = "named-paragraph" > Issue problem message for unknown case value< / span > < span class = "named-paragraph-number" > 1.3.5.5< / span > < / a > < / span >
< span class = "plain-syntax" > } < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "4-cbal.html#SP1_3_5_5" class = "named-paragraph-link" > < span class = "named-paragraph" > Issue problem message for unknown case value< / span > < span class = "named-paragraph-number" > 1.3.5.5< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > pointery< / span > < span class = "plain-syntax" > ) {< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > while< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > downs< / span > < span class = "plain-syntax" > -- > < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > Produce::up< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > ());< / span >
2021-04-03 16:32:59 +03:00
< span class = "plain-syntax" > < / span > < a href = "2-cb.html#SP13" class = "function-link" > < span class = "function-syntax" > CodeBlocks::close_code_block< / span > < / a > < span class = "plain-syntax" > ();< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > } < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > {< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::up< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > ());< / span >
2021-04-03 16:32:59 +03:00
< span class = "plain-syntax" > < / span > < a href = "2-cb.html#SP13" class = "function-link" > < span class = "function-syntax" > CodeBlocks::close_code_block< / span > < / a > < span class = "plain-syntax" > ();< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::up< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > ());< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > problem_count< / span > < span class = "plain-syntax" > == < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > )< / span >
2021-04-01 01:28:26 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > for< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > parse_node< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > A< / 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 > < span class = "identifier-syntax" > next< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > next< / span > < span class = "plain-syntax" > ; < / span > < span class = "identifier-syntax" > A< / span > < span class = "plain-syntax" > ; < / span > < span class = "identifier-syntax" > A< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > A< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > next< / span > < span class = "plain-syntax" > ) {< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > dup< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ;< / span >
2021-04-01 01:28:26 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > for< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > parse_node< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > B< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > A< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > next< / span > < span class = "plain-syntax" > ; < / span > < span class = "identifier-syntax" > B< / span > < span class = "plain-syntax" > ; < / span > < span class = "identifier-syntax" > B< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > B< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > next< / span > < span class = "plain-syntax" > )< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Rvalues::compare_CONSTANT< / span > < span class = "plain-syntax" > (< / span >
2020-05-11 17:21:29 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Node::get_evaluation< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > A< / span > < span class = "plain-syntax" > ), < / span > < span class = "identifier-syntax" > Node::get_evaluation< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > B< / span > < span class = "plain-syntax" > )))< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > dup< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > dup< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > current_sentence< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > A< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_source< / span > < span class = "plain-syntax" > (1, < / span > < span class = "identifier-syntax" > A< / span > < span class = "plain-syntax" > );< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_spec< / span > < span class = "plain-syntax" > (2, < / span > < span class = "identifier-syntax" > Node::get_evaluation< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > A< / span > < span class = "plain-syntax" > ));< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > StandardProblems::handmade_problem< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Task::syntax_tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > _p_< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PM_CaseValueDuplicated< / span > < span class = "plain-syntax" > ));< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_segment< / span > < span class = "plain-syntax" > (< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "The case %1 occurs more than once in this 'if' switch."< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_end< / 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 >
2021-04-04 01:10:19 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-cbal.html#SP1_3" > § 1.3< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP1_3_5_1" class = "paragraph-anchor" > < / a > < b > § 1.3.5.1. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Handle a non-pointery case< / span > < span class = "named-paragraph-number" > 1.3.5.1< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::inv_primitive< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > CASE_BIP< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::down< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > ());< / span >
2021-03-30 00:53:01 +03:00
< span class = "plain-syntax" > < / span > < a href = "3-cfs.html#SP8" class = "function-link" > < span class = "function-syntax" > Specifications::Compiler::emit_as_val< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > switch_kind< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > case_spec< / span > < span class = "plain-syntax" > );< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::code< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > ());< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::down< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > ());< / span >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > statement_count< / span > < span class = "plain-syntax" > = < / span > < a href = "4-cbal.html#SP1" class = "function-link" > < span class = "function-syntax" > CompileBlocksAndLines::code_block< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > statement_count< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > ow_node< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > );< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::up< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > ());< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::up< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > ());< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-04 01:10:19 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-cbal.html#SP1_3_5" > § 1.3.5< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP1_3_5_2" class = "paragraph-anchor" > < / a > < b > § 1.3.5.2. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Handle a non-pointery default< / span > < span class = "named-paragraph-number" > 1.3.5.2< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::inv_primitive< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > DEFAULT_BIP< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::down< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > ());< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::code< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > ());< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::down< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > ());< / span >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > statement_count< / span > < span class = "plain-syntax" > = < / span > < a href = "4-cbal.html#SP1" class = "function-link" > < span class = "function-syntax" > CompileBlocksAndLines::code_block< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > statement_count< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > ow_node< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > );< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::up< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > ());< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::up< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > ());< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-04 01:10:19 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-cbal.html#SP1_3_5" > § 1.3.5< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP1_3_5_3" class = "paragraph-anchor" > < / a > < b > § 1.3.5.3. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Handle a pointery case< / span > < span class = "named-paragraph-number" > 1.3.5.3< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > final_flag< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ;< / span >
2021-04-01 01:28:26 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > ow_node< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > next< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > final_flag< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
2020-05-03 03:01:21 +03:00
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > final_flag< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > Produce::inv_primitive< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > IF_BIP< / 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" > Produce::inv_primitive< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > IFELSE_BIP< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::down< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > ());< / span >
2021-04-02 19:33:37 +03:00
< span class = "plain-syntax" > < / span > < a href = "2-lv.html#SP25" class = "function-link" > < span class = "function-syntax" > LocalVariables::set_kind< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > lvar< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > switch_kind< / span > < span class = "plain-syntax" > );< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > parse_node< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > sw_v< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Lvalues::new_LOCAL_VARIABLE< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > EMPTY_WORDING< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > lvar< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > pcalc_prop< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > prop< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Propositions::Abstract::to_set_relation< / span > < span class = "plain-syntax" > (< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > R_equality< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > sw_v< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > case_spec< / span > < span class = "plain-syntax" > );< / span >
2020-08-24 21:30:28 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Propositions::Checker::type_check< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > prop< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > Propositions::Checker::tc_no_problem_reporting< / span > < span class = "plain-syntax" > ());< / span >
2021-03-30 00:53:01 +03:00
< span class = "plain-syntax" > < / span > < a href = "3-dtd.html#SP6" class = "function-link" > < span class = "function-syntax" > Calculus::Deferrals::emit_test_of_proposition< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > prop< / span > < span class = "plain-syntax" > );< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::code< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > ());< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::down< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > ());< / span >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > statement_count< / span > < span class = "plain-syntax" > = < / span > < a href = "4-cbal.html#SP1" class = "function-link" > < span class = "function-syntax" > CompileBlocksAndLines::code_block< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > statement_count< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > ow_node< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > FALSE< / 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" > final_flag< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ) {< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::up< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > ());< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::code< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > ());< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::down< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > ());< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > downs< / span > < span class = "plain-syntax" > += < / span > < span class = "constant-syntax" > 2< / span > < span class = "plain-syntax" > ;< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-04 01:10:19 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-cbal.html#SP1_3_5" > § 1.3.5< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP1_3_5_4" class = "paragraph-anchor" > < / a > < b > § 1.3.5.4. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Handle a pointery default< / span > < span class = "named-paragraph-number" > 1.3.5.4< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > statement_count< / span > < span class = "plain-syntax" > = < / span > < a href = "4-cbal.html#SP1" class = "function-link" > < span class = "function-syntax" > CompileBlocksAndLines::code_block< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > statement_count< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > ow_node< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > );< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-04 01:10:19 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-cbal.html#SP1_3_5" > § 1.3.5< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP1_3_6" class = "paragraph-anchor" > < / a > < b > § 1.3.6. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Compile a standard midriff< / span > < span class = "named-paragraph-number" > 1.3.6< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > current_sentence< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > to_compile< / span > < span class = "plain-syntax" > ;< / span >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > < / span > < a href = "4-cbal.html#SP2" class = "function-link" > < span class = "function-syntax" > CompileBlocksAndLines::invocation< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > to_compile< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > INTER_VOID_VHMODE< / span > < span class = "plain-syntax" > );< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-04 01:10:19 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-cbal.html#SP1_3" > § 1.3< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP1_4" class = "paragraph-anchor" > < / a > < b > § 1.4. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Compile the tail< / span > < span class = "named-paragraph-number" > 1.4< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > csp< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > if_CSP< / span > < span class = "plain-syntax" > ) < / span > < span class = "named-paragraph-container code-font" > < a href = "4-cbal.html#SP1_4_1" class = "named-paragraph-link" > < span class = "named-paragraph" > Compile an if tail< / span > < span class = "named-paragraph-number" > 1.4.1< / span > < / a > < / 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" > csp< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > switch_CSP< / span > < span class = "plain-syntax" > ) < / span > < span class = "named-paragraph-container code-font" > < a href = "4-cbal.html#SP1_4_2" class = "named-paragraph-link" > < span class = "named-paragraph" > Compile a switch tail< / span > < span class = "named-paragraph-number" > 1.4.2< / span > < / a > < / 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" > csp< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > say_CSP< / span > < span class = "plain-syntax" > ) < / span > < span class = "named-paragraph-container code-font" > < a href = "4-cbal.html#SP1_4_3" class = "named-paragraph-link" > < span class = "named-paragraph" > Compile a say tail< / span > < span class = "named-paragraph-number" > 1.4.3< / span > < / a > < / 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" > csp< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > instead_CSP< / span > < span class = "plain-syntax" > ) < / span > < span class = "named-paragraph-container code-font" > < a href = "4-cbal.html#SP1_4_4" class = "named-paragraph-link" > < span class = "named-paragraph" > Compile an instead tail< / span > < span class = "named-paragraph-number" > 1.4.4< / span > < / a > < / 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" > ControlStructures::opens_block< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > csp< / span > < span class = "plain-syntax" > )) < / span > < span class = "named-paragraph-container code-font" > < a href = "4-cbal.html#SP1_4_5" class = "named-paragraph-link" > < span class = "named-paragraph" > Compile a loop tail< / span > < span class = "named-paragraph-number" > 1.4.5< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-04 01:10:19 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-cbal.html#SP1" > § 1< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP1_4_1" class = "paragraph-anchor" > < / a > < b > § 1.4.1. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Compile an if tail< / span > < span class = "named-paragraph-number" > 1.4.1< / span > < / span > < span class = "comment-syntax" > =< / span >
2019-03-17 14:40:57 +02:00
< / p >
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > ;< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-04 01:10:19 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-cbal.html#SP1_4" > § 1.4< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP1_4_2" class = "paragraph-anchor" > < / a > < b > § 1.4.2. < / b > Switch statements in I6 look much like those in C, but are written without
2020-05-03 03:01:21 +03:00
the ceaseless repetition of the keyword "case". Thus, < span class = "extract" > < span class = "extract-syntax" > 15:< / span > < / span > does what
< span class = "extract" > < span class = "extract-syntax" > case 15:< / span > < / span > would do in C. But < span class = "extract" > < span class = "extract-syntax" > default:< / span > < / span > is the same in both.
< / p >
2019-03-17 14:40:57 +02:00
2021-04-04 01:10:19 +03:00
< p class = "commentary" > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Compile a switch tail< / span > < span class = "named-paragraph-number" > 1.4.2< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > ;< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-04 01:10:19 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-cbal.html#SP1_4" > § 1.4< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP1_3_5_5" class = "paragraph-anchor" > < / a > < b > § 1.3.5.5. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Issue problem message for unknown case value< / span > < span class = "named-paragraph-number" > 1.3.5.5< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > StandardProblems::sentence_problem< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Task::syntax_tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > _p_< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PM_CaseValueUnknown< / span > < span class = "plain-syntax" > ),< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "I don't recognise this case value"< / span > < span class = "plain-syntax" > ,< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "that is, the value written after the '--'."< / span > < span class = "plain-syntax" > );< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-04 01:10:19 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-cbal.html#SP1_3_5" > § 1.3.5< / a > (twice).< / li > < / ul >
2020-08-18 00:57:45 +03:00
< p class = "commentary firstcommentary" > < a id = "SP_1" class = "paragraph-anchor" > < / a > < b > § .1. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > If this is a say group, but not a say control structure, notify the paragraphing code< / span > < span class = "named-paragraph-number" > .1< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< ul class = "endnotetexts" > < li > This code is never used.< / li > < / ul >
2021-04-04 01:10:19 +03:00
< p class = "commentary firstcommentary" > < a id = "SP1_4_3" class = "paragraph-anchor" > < / a > < b > § 1.4.3. < / b > As will be seen, two sets of labels and counters are kept here: see the
2019-03-17 14:40:57 +02:00
inline definitions for "say if" and similar.
< / p >
2021-04-04 01:10:19 +03:00
< p class = "commentary" > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Compile a say tail< / span > < span class = "named-paragraph-number" > 1.4.3< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > statement_count< / span > < span class = "plain-syntax" > = < / span > < a href = "4-cbal.html#SP1" class = "function-link" > < span class = "function-syntax" > CompileBlocksAndLines::code_block< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > statement_count< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > p< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > );< / span >
2019-03-17 14:40:57 +02:00
2020-06-28 01:18:54 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > TEMPORARY_TEXT< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > SAYL< / span > < span class = "plain-syntax" > )< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > WRITE_TO< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > SAYL< / span > < span class = "plain-syntax" > , < / span > < span class = "string-syntax" > "."< / span > < span class = "plain-syntax" > );< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > JumpLabels::write< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > SAYL< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > I< / span > < span class = "string-syntax" > "Say"< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::place_label< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > Produce::reserve_label< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > SAYL< / span > < span class = "plain-syntax" > ));< / span >
2020-06-28 01:18:54 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > DISCARD_TEXT< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > SAYL< / span > < span class = "plain-syntax" > )< / span >
2019-03-17 14:40:57 +02:00
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > JumpLabels::read_counter< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > I< / span > < span class = "string-syntax" > "Say"< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > );< / span >
2019-03-17 14:40:57 +02:00
2020-06-28 01:18:54 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > TEMPORARY_TEXT< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > SAYXL< / span > < span class = "plain-syntax" > )< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > WRITE_TO< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > SAYXL< / span > < span class = "plain-syntax" > , < / span > < span class = "string-syntax" > "."< / span > < span class = "plain-syntax" > );< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > JumpLabels::write< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > SAYXL< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > I< / span > < span class = "string-syntax" > "SayX"< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::place_label< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > Produce::reserve_label< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > SAYXL< / span > < span class = "plain-syntax" > ));< / span >
2020-06-28 01:18:54 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > DISCARD_TEXT< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > SAYXL< / span > < span class = "plain-syntax" > )< / span >
2019-03-17 14:40:57 +02:00
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > JumpLabels::read_counter< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > I< / span > < span class = "string-syntax" > "SayX"< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > );< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-04 01:10:19 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-cbal.html#SP1_4" > § 1.4< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP1_4_4" class = "paragraph-anchor" > < / a > < b > § 1.4.4. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Compile an instead tail< / span > < span class = "named-paragraph-number" > 1.4.4< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::rtrue< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > ());< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-04 01:10:19 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-cbal.html#SP1_4" > § 1.4< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP1_4_5" class = "paragraph-anchor" > < / a > < b > § 1.4.5. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Compile a loop tail< / span > < span class = "named-paragraph-number" > 1.4.5< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
2021-04-03 16:32:59 +03:00
< span class = "plain-syntax" > < / span > < a href = "2-cb.html#SP11" class = "function-link" > < span class = "function-syntax" > CodeBlocks::open_code_block< / span > < / a > < span class = "plain-syntax" > ();< / span >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > statement_count< / span > < span class = "plain-syntax" > = < / span > < a href = "4-cbal.html#SP1" class = "function-link" > < span class = "function-syntax" > CompileBlocksAndLines::code_block< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > statement_count< / 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 > < span class = "identifier-syntax" > next< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > );< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > while< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Produce::level< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > ()) > < / span > < span class = "identifier-syntax" > L< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > Produce::up< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > ());< / span >
2021-04-03 16:32:59 +03:00
< span class = "plain-syntax" > < / span > < a href = "2-cb.html#SP13" class = "function-link" > < span class = "function-syntax" > CodeBlocks::close_code_block< / span > < / a > < span class = "plain-syntax" > ();< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-04 01:10:19 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-cbal.html#SP1_4" > § 1.4< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP2" class = "paragraph-anchor" > < / a > < b > § 2. < / b > This routine takes the text of a line from a phrase definition, parses it,
2019-03-17 14:40:57 +02:00
type-checks it, and finally, all being well, compiles it.
< / 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 = "identifier-syntax" > void_phrase_please< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ; < / span > < span class = "comment-syntax" > instructions for the typechecker< / span >
2021-04-04 01:10:19 +03:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > CompileBlocksAndLines::invocation< / 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" > CompileBlocksAndLines::invocation< / span > < / span > :< br / > < a href = "4-cbal.html#SP1_3_1" > § 1.3.1< / a > , < a href = "4-cbal.html#SP1_3_4" > § 1.3.4< / a > , < a href = "4-cbal.html#SP1_3_5" > § 1.3.5< / a > , < a href = "4-cbal.html#SP1_3_6" > § 1.3.6< / a > < / span > < / button > < 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 = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > already_parsed< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > vhm< / span > < span class = "plain-syntax" > ) {< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > initial_problem_count< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > problem_count< / span > < span class = "plain-syntax" > ;< / span >
2020-05-11 17:21:29 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > LOGIF< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > EXPRESSIONS< / span > < span class = "plain-syntax" > , < / span > < span class = "string-syntax" > "\n-- -- Evaluating < %W> -- --\n"< / 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" > LOGIF< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > EXPRESSIONS< / span > < span class = "plain-syntax" > , < / span > < span class = "string-syntax" > "(a) Parsing:\n"< / 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" > already_parsed< / span > < span class = "plain-syntax" > ) {< / span >
2021-04-04 01:10:19 +03:00
< 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 = "identifier-syntax" > InvocationLists::first_reading< / 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-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" > inv< / span > < span class = "plain-syntax" > ) & & < / span >
2020-05-11 17:21:29 +03:00
< 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 >
2021-03-29 01:42:22 +03:00
< span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > IDTypeData::is_a_say_phrase< / 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 >
< 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 > < span class = "identifier-syntax" > type_data< / span > < span class = "plain-syntax" > .< / span > < span class = "identifier-syntax" > as_say< / span > < span class = "plain-syntax" > .< / span > < span class = "identifier-syntax" > say_control_structure< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > NO_SAY_CS< / span > < span class = "plain-syntax" > )) {< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Produce::inv_call_iname< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Emit::tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > Hierarchy::find< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PARACONTENT_HL< / span > < span class = "plain-syntax" > ));< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > } < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > {< / span >
2021-02-06 20:00:34 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > SParser::parse_void_phrase< / 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 = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > initial_problem_count< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > problem_count< / span > < span class = "plain-syntax" > ) {< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > LOGIF< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > EXPRESSIONS< / span > < span class = "plain-syntax" > , < / span > < span class = "string-syntax" > "(b) Type checking:\n$E"< / 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 >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Dash::check_invl< / 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 = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > initial_problem_count< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > problem_count< / span > < span class = "plain-syntax" > ) {< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > LOGIF< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > EXPRESSIONS< / span > < span class = "plain-syntax" > , < / span > < span class = "string-syntax" > "(c) Compilation:\n$E"< / 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-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > value_holster< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > VH< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Holsters::new< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > vhm< / span > < span class = "plain-syntax" > );< / span >
2021-03-30 00:53:01 +03:00
< span class = "plain-syntax" > < / span > < a href = "4-ci.html#SP2" class = "function-link" > < span class = "function-syntax" > Invocations::Compiler::compile_invocation_list< / span > < / a > < span class = "plain-syntax" > (& < / span > < span class = "identifier-syntax" > VH< / span > < span class = "plain-syntax" > ,< / span >
2020-08-26 12:52:50 +03:00
< 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 > < 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 = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > initial_problem_count< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > problem_count< / 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" > EXPRESSIONS< / span > < span class = "plain-syntax" > , < / span > < span class = "string-syntax" > "-- -- Completed -- --\n"< / 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" > LOGIF< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > EXPRESSIONS< / span > < span class = "plain-syntax" > , < / span > < span class = "string-syntax" > "-- -- Failed -- --\n"< / 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 >
2021-04-04 01:10:19 +03:00
< p class = "commentary firstcommentary" > < a id = "SP3" class = "paragraph-anchor" > < / a > < b > § 3. < / b > And this is where we are:
2019-03-17 14:40:57 +02:00
< / p >
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
2021-04-04 01:10:19 +03:00
< span class = "identifier-syntax" > parse_node< / span > < span class = "plain-syntax" > *< / span > < span class = "function-syntax" > CompileBlocksAndLines::line_being_compiled< / span > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < a href = "2-fnc.html#SP4" class = "function-link" > < span class = "function-syntax" > Functions::defn_being_compiled< / span > < / a > < span class = "plain-syntax" > ()) < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > current_sentence< / span > < span class = "plain-syntax" > ;< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-04 01:10:19 +03:00
< p class = "commentary firstcommentary" > < a id = "SP4" class = "paragraph-anchor" > < / a > < b > § 4. Validation of invocations. < / b > Recall that a complex text such as:
2019-03-17 14:40:57 +02:00
< / p >
< blockquote >
< p > "Platinum is shinier than [if a Colony is in the Supply Pile]gold[otherwise]silver."< / p >
< / blockquote >
2020-05-03 03:01:21 +03:00
< p class = "commentary" > is complied into a specification holding a list of invocations; in this case
2019-03-17 14:40:57 +02:00
there are five, invoking the phrases —
< / p >
< ul class = "items" > < li > (1) "say [text]"
< / li > < li > (2) "say if ..."
< / li > < li > (3) "say [text]"
< / li > < li > (4) "say otherwise"
< / li > < li > (5) "say [text]"
< / li > < / ul >
2020-05-03 03:01:21 +03:00
< p class = "commentary" > In the following routine we check this list to see that two sorts of control
2019-03-17 14:40:57 +02:00
structure are correctly used. The first is "say if"; here, for instance, it
would be an error to use "say otherwise" without "say if", or to have them
the wrong way round.
< / p >
2020-05-03 03:01:21 +03:00
< p class = "commentary" > The other is the SSP, the "segmented say phrase". For example:
2019-03-17 14:40:57 +02:00
< / p >
< blockquote >
< p > "The best defence is [one of]Lighthouse[or]Moat[or]having no money[at random]."< / p >
< / blockquote >
2020-05-03 03:01:21 +03:00
< p class = "commentary" > Here there are nine invocations, and the interesting ones have to come in
2019-03-17 14:40:57 +02:00
the sequence "[one of]" (a start), then any number of "[or]" segments (middles),
and lastly "[at random]" (an end). SSPs can even be nested, within limits:
< / p >
2020-05-03 03:01:21 +03:00
< pre class = "definitions code-font" > < span class = "definition-keyword" > define< / span > < span class = "constant-syntax" > MAX_COMPLEX_SAY_DEPTH< / span > < span class = "plain-syntax" > < / span > < span class = "constant-syntax" > 32< / span > < span class = "plain-syntax" > < / span > < span class = "comment-syntax" > and it would be terrible coding style to approach this< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
2021-04-04 01:10:19 +03:00
< span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > CompileBlocksAndLines::verify_say_node_list< / 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" > CompileBlocksAndLines::verify_say_node_list< / span > < / span > :< br / > < a href = "4-cbal.html#SP1_2_1" > § 1.2.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" > say_node_list< / span > < span class = "plain-syntax" > ) {< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > problem_issued< / span > < 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" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > say_invocations_found< / span > < span class = "plain-syntax" > = < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > ;< / span >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "4-cbal.html#SP4_1" class = "named-paragraph-link" > < span class = "named-paragraph" > Check that say control structures have been used in a correct sequence< / span > < span class = "named-paragraph-number" > 4.1< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > say_invocations_found< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-04 01:10:19 +03:00
< p class = "commentary firstcommentary" > < a id = "SP4_1" class = "paragraph-anchor" > < / a > < b > § 4.1. < / b > Given correct code, the following does very little. It checks that structural
2019-03-17 14:40:57 +02:00
say phrases (SSPs), such as the substitutions here:
< / p >
< blockquote >
< p > "Platinum is shinier than [if a Colony is in the Supply Pile]gold[otherwise]silver."< / p >
< / blockquote >
2020-05-03 03:01:21 +03:00
< p class = "commentary" > ...are used correctly; for instance, that there isn't an "[otherwise]" before
2019-03-17 14:40:57 +02:00
the "[if...]".
< / p >
2020-05-03 03:01:21 +03:00
< p class = "commentary" > It doesn't quite do nothing, though, because it also counts the say phrases found.
< / p >
2019-03-17 14:40:57 +02:00
2021-04-04 01:10:19 +03:00
< p class = "commentary" > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Check that say control structures have been used in a correct sequence< / span > < span class = "named-paragraph-number" > 4.1< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
2021-04-03 16:32:59 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > it_was_not_worth_adding< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > TextSubstitutions::is_it_worth_adding< / span > < span class = "plain-syntax" > ();< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > TextSubstitutions::it_is_not_worth_adding< / span > < span class = "plain-syntax" > ();< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > SSP_sp< / 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" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > SSP_stack< / span > < span class = "plain-syntax" > [< / span > < span class = "constant-syntax" > MAX_COMPLEX_SAY_DEPTH< / 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" > SSP_stack_otherwised< / span > < span class = "plain-syntax" > [< / span > < span class = "constant-syntax" > MAX_COMPLEX_SAY_DEPTH< / 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" > SSP_invocations< / span > < span class = "plain-syntax" > [< / span > < span class = "constant-syntax" > MAX_COMPLEX_SAY_DEPTH< / 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" > say_if_nesting< / span > < span class = "plain-syntax" > = < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > ;< / span >
2021-04-01 01:28:26 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > for< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > parse_node< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > say_node< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > say_node_list< / span > < span class = "plain-syntax" > ; < / span > < span class = "identifier-syntax" > say_node< / span > < span class = "plain-syntax" > ; < / span > < span class = "identifier-syntax" > say_node< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > say_node< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > next< / span > < span class = "plain-syntax" > ) {< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > parse_node< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > invl< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > say_node< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > down< / 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" > invl< / 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 >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > LOOP_THROUGH_INVOCATION_LIST< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > inv< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > invl< / span > < span class = "plain-syntax" > ) {< / span >
2021-03-29 01:42:22 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > id_body< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > idb< / 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-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_phrase_invoked< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > inv< / span > < span class = "plain-syntax" > )) & & < / span >
2021-03-29 01:42:22 +03:00
< span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > IDTypeData::is_a_say_phrase< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > idb< / span > < span class = "plain-syntax" > ))) {< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > say_cs< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > ssp_tok< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > ssp_ctok< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > ssp_pos< / span > < span class = "plain-syntax" > ;< / span >
2021-03-29 01:42:22 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > IDTypeData::get_say_data< / span > < span class = "plain-syntax" > (& (< / span > < span class = "identifier-syntax" > idb< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > type_data< / span > < span class = "plain-syntax" > .< / span > < span class = "identifier-syntax" > as_say< / span > < span class = "plain-syntax" > ),< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > & < / span > < span class = "identifier-syntax" > say_cs< / span > < span class = "plain-syntax" > , & < / span > < span class = "identifier-syntax" > ssp_tok< / span > < span class = "plain-syntax" > , & < / span > < span class = "identifier-syntax" > ssp_ctok< / span > < span class = "plain-syntax" > , & < / span > < span class = "identifier-syntax" > ssp_pos< / span > < span class = "plain-syntax" > );< / span >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > ssp_pos< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > SSP_START< / span > < span class = "plain-syntax" > ) < / span > < span class = "named-paragraph-container code-font" > < a href = "4-cbal.html#SP4_1_1" class = "named-paragraph-link" > < span class = "named-paragraph" > This starts a complex SSP< / span > < span class = "named-paragraph-number" > 4.1.1< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > ssp_pos< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > SSP_MIDDLE< / span > < span class = "plain-syntax" > ) < / span > < span class = "named-paragraph-container code-font" > < a href = "4-cbal.html#SP4_1_2" class = "named-paragraph-link" > < span class = "named-paragraph" > This is a middle term in a complex SSP< / span > < span class = "named-paragraph-number" > 4.1.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" > ssp_pos< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > SSP_END< / span > < span class = "plain-syntax" > ) < / span > < span class = "named-paragraph-container code-font" > < a href = "4-cbal.html#SP4_1_3" class = "named-paragraph-link" > < span class = "named-paragraph" > This ends a complex SSP< / span > < span class = "named-paragraph-number" > 4.1.3< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
2020-05-03 03:01:21 +03:00
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > say_cs< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > IF_SAY_CS< / span > < span class = "plain-syntax" > ) < / span > < span class = "named-paragraph-container code-font" > < a href = "4-cbal.html#SP4_1_4" class = "named-paragraph-link" > < span class = "named-paragraph" > This is a say if< / span > < span class = "named-paragraph-number" > 4.1.4< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
2021-03-29 01:42:22 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > ((< / span > < span class = "identifier-syntax" > say_cs< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > OTHERWISE_SAY_CS< / span > < span class = "plain-syntax" > ) || (< / span > < span class = "identifier-syntax" > say_cs< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > OTHERWISE_IF_SAY_CS< / span > < span class = "plain-syntax" > ))< / span >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "4-cbal.html#SP4_1_5" class = "named-paragraph-link" > < span class = "named-paragraph" > This is a say otherwise< / span > < span class = "named-paragraph-number" > 4.1.5< / 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" > say_cs< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > END_IF_SAY_CS< / span > < span class = "plain-syntax" > ) < / span > < span class = "named-paragraph-container code-font" > < a href = "4-cbal.html#SP4_1_6" class = "named-paragraph-link" > < span class = "named-paragraph" > This is a say end if< / span > < span class = "named-paragraph-number" > 4.1.6< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > say_invocations_found< / span > < span class = "plain-syntax" > ++;< / span >
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > SSP_sp< / 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" > SSP_sp< / span > < span class = "plain-syntax" > == < / span > < span class = "constant-syntax" > 1< / span > < span class = "plain-syntax" > ) & & (< / span > < span class = "identifier-syntax" > SSP_stack< / span > < span class = "plain-syntax" > [0] == -1)) {< / span >
< span class = "plain-syntax" > < / span > < span class = "comment-syntax" > an if without an end if, which uniquely is legal< / span >
< span class = "plain-syntax" > } < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > {< / span >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "4-cbal.html#SP4_1_7" class = "named-paragraph-link" > < span class = "named-paragraph" > Issue a problem message for an SSP without end< / span > < span class = "named-paragraph-number" > 4.1.7< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > }< / span >
2021-04-03 16:32:59 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > it_was_not_worth_adding< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > TextSubstitutions::it_is_not_worth_adding< / 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" > TextSubstitutions::it_is_worth_adding< / span > < span class = "plain-syntax" > ();< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-04 01:10:19 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-cbal.html#SP4" > § 4< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP4_1_1" class = "paragraph-anchor" > < / a > < b > § 4.1.1. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > This starts a complex SSP< / span > < span class = "named-paragraph-number" > 4.1.1< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > SSP_sp< / span > < span class = "plain-syntax" > > = < / span > < span class = "constant-syntax" > MAX_COMPLEX_SAY_DEPTH< / span > < span class = "plain-syntax" > ) {< / span >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "4-cbal.html#SP4_1_1_1" class = "named-paragraph-link" > < span class = "named-paragraph" > Issue a problem message for an overcomplex SSP< / span > < span class = "named-paragraph-number" > 4.1.1.1< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > } < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > SSP_invocations< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > SSP_sp< / span > < span class = "plain-syntax" > ] = < / span > < span class = "identifier-syntax" > inv< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > SSP_stack_otherwised< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > SSP_sp< / 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" > SSP_stack< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > SSP_sp< / span > < span class = "plain-syntax" > ++] = < / span > < span class = "identifier-syntax" > ssp_tok< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-04 01:10:19 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-cbal.html#SP4_1" > § 4.1< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP4_1_2" class = "paragraph-anchor" > < / a > < b > § 4.1.2. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > This is a middle term in a complex SSP< / span > < span class = "named-paragraph-number" > 4.1.2< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > ((< / span > < span class = "identifier-syntax" > SSP_sp< / span > < span class = "plain-syntax" > > < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > ) & & (< / span > < span class = "identifier-syntax" > SSP_stack< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > SSP_sp< / span > < span class = "plain-syntax" > -1] != -1) & & < / span >
< span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > compare_words< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > SSP_stack< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > SSP_sp< / span > < span class = "plain-syntax" > -1], < / span > < span class = "identifier-syntax" > ssp_tok< / span > < span class = "plain-syntax" > ))) {< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Annotations::write_int< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > SSP_invocations< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > SSP_sp< / span > < span class = "plain-syntax" > -1], < / span > < span class = "identifier-syntax" > ssp_segment_count_ANNOT< / span > < span class = "plain-syntax" > ,< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Annotations::read_int< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > SSP_invocations< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > SSP_sp< / span > < span class = "plain-syntax" > -1], < / span > < span class = "identifier-syntax" > ssp_segment_count_ANNOT< / span > < span class = "plain-syntax" > )+1);< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Annotations::write_int< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > inv< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > ssp_segment_count_ANNOT< / span > < span class = "plain-syntax" > ,< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Annotations::read_int< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > SSP_invocations< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > SSP_sp< / span > < span class = "plain-syntax" > -1], < / span > < span class = "identifier-syntax" > ssp_segment_count_ANNOT< / span > < span class = "plain-syntax" > ));< / span >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > } < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "4-cbal.html#SP4_1_2_1" class = "named-paragraph-link" > < span class = "named-paragraph" > Issue a problem message for middle without start< / span > < span class = "named-paragraph-number" > 4.1.2.1< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-04 01:10:19 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-cbal.html#SP4_1" > § 4.1< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP4_1_3" class = "paragraph-anchor" > < / a > < b > § 4.1.3. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > This ends a complex SSP< / span > < span class = "named-paragraph-number" > 4.1.3< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > ((< / span > < span class = "identifier-syntax" > SSP_sp< / span > < span class = "plain-syntax" > > < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > ) & & (< / span > < span class = "identifier-syntax" > SSP_stack< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > SSP_sp< / span > < span class = "plain-syntax" > -1] != -1) & & < / span >
< span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > compare_words< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > SSP_stack< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > SSP_sp< / span > < span class = "plain-syntax" > -1], < / span > < span class = "identifier-syntax" > ssp_tok< / span > < span class = "plain-syntax" > ))) {< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Annotations::write_int< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > SSP_invocations< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > SSP_sp< / span > < span class = "plain-syntax" > -1], < / span > < span class = "identifier-syntax" > ssp_segment_count_ANNOT< / span > < span class = "plain-syntax" > ,< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Annotations::read_int< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > SSP_invocations< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > SSP_sp< / span > < span class = "plain-syntax" > -1], < / span > < span class = "identifier-syntax" > ssp_segment_count_ANNOT< / span > < span class = "plain-syntax" > )+1);< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Annotations::write_int< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > SSP_invocations< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > SSP_sp< / span > < span class = "plain-syntax" > -1], < / span > < span class = "identifier-syntax" > ssp_closing_segment_wn_ANNOT< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > ssp_ctok< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Annotations::write_int< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > inv< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > ssp_segment_count_ANNOT< / span > < span class = "plain-syntax" > ,< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Annotations::read_int< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > SSP_invocations< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > SSP_sp< / span > < span class = "plain-syntax" > -1], < / span > < span class = "identifier-syntax" > ssp_segment_count_ANNOT< / span > < span class = "plain-syntax" > ));< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > SSP_sp< / span > < span class = "plain-syntax" > --;< / span >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > } < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "4-cbal.html#SP4_1_3_1" class = "named-paragraph-link" > < span class = "named-paragraph" > Issue a problem message for end without start< / span > < span class = "named-paragraph-number" > 4.1.3.1< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-04 01:10:19 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-cbal.html#SP4_1" > § 4.1< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP4_1_4" class = "paragraph-anchor" > < / a > < b > § 4.1.4. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > This is a say if< / span > < span class = "named-paragraph-number" > 4.1.4< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > say_if_nesting< / 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" > say_if_nesting< / span > < span class = "plain-syntax" > ++;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > SSP_invocations< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > SSP_sp< / span > < span class = "plain-syntax" > ] = < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > SSP_stack_otherwised< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > SSP_sp< / 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" > SSP_stack< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > SSP_sp< / span > < span class = "plain-syntax" > ++] = -1;< / span >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > } < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "4-cbal.html#SP4_1_4_1" class = "named-paragraph-link" > < span class = "named-paragraph" > Issue a problem message for nested say if< / span > < span class = "named-paragraph-number" > 4.1.4.1< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-04 01:10:19 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-cbal.html#SP4_1" > § 4.1< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP4_1_5" class = "paragraph-anchor" > < / a > < b > § 4.1.5. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > This is a say otherwise< / span > < span class = "named-paragraph-number" > 4.1.5< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > say_if_nesting< / span > < span class = "plain-syntax" > == < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > )< / span >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "4-cbal.html#SP4_1_5_1" class = "named-paragraph-link" > < span class = "named-paragraph" > Issue a problem message for say otherwise without say if< / span > < span class = "named-paragraph-number" > 4.1.5.1< / span > < / a > < / 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" > SSP_sp< / 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" > SSP_stack< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > SSP_sp< / span > < span class = "plain-syntax" > -1] != -1)< / span >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "4-cbal.html#SP4_1_5_2" class = "named-paragraph-link" > < span class = "named-paragraph" > Issue a problem message for say otherwise interleaved with another construction< / span > < span class = "named-paragraph-number" > 4.1.5.2< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > SSP_stack_otherwised< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > SSP_sp< / span > < span class = "plain-syntax" > -1])< / span >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "4-cbal.html#SP4_1_5_3" class = "named-paragraph-link" > < span class = "named-paragraph" > Issue a problem message for two say otherwises< / span > < span class = "named-paragraph-number" > 4.1.5.3< / span > < / a > < / span >
2021-03-29 01:42:22 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > say_cs< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > OTHERWISE_SAY_CS< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > SSP_stack_otherwised< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > SSP_sp< / span > < span class = "plain-syntax" > -1] = < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > }< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-04 01:10:19 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-cbal.html#SP4_1" > § 4.1< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP4_1_6" class = "paragraph-anchor" > < / a > < b > § 4.1.6. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > This is a say end if< / span > < span class = "named-paragraph-number" > 4.1.6< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > say_if_nesting< / span > < span class = "plain-syntax" > == < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > ) < / span > < span class = "named-paragraph-container code-font" > < a href = "4-cbal.html#SP4_1_6_1" class = "named-paragraph-link" > < span class = "named-paragraph" > Issue a problem message for say end if without say if< / span > < span class = "named-paragraph-number" > 4.1.6.1< / span > < / a > < / 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" > SSP_sp< / span > < span class = "plain-syntax" > > < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > ) & & (< / span > < span class = "identifier-syntax" > SSP_stack< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > SSP_sp< / span > < span class = "plain-syntax" > -1] != -1))< / span >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "4-cbal.html#SP4_1_6_2" class = "named-paragraph-link" > < span class = "named-paragraph" > Issue a problem message for say end if interleaved with another construction< / span > < span class = "named-paragraph-number" > 4.1.6.2< / span > < / a > < / 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" > say_if_nesting< / span > < span class = "plain-syntax" > --;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > SSP_sp< / span > < span class = "plain-syntax" > --;< / span >
< span class = "plain-syntax" > }< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-04 01:10:19 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-cbal.html#SP4_1" > § 4.1< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP4_1_2_1" class = "paragraph-anchor" > < / a > < b > § 4.1.2.1. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Issue a problem message for middle without start< / span > < span class = "named-paragraph-number" > 4.1.2.1< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > problem_issued< / 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" > Problems::quote_source< / span > < span class = "plain-syntax" > (1, < / span > < span class = "identifier-syntax" > current_sentence< / span > < span class = "plain-syntax" > );< / span >
2020-05-11 17:21:29 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_wording< / span > < span class = "plain-syntax" > (2, < / span > < span class = "identifier-syntax" > Node::get_text< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > inv< / span > < span class = "plain-syntax" > ));< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > StandardProblems::handmade_problem< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Task::syntax_tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > _p_< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PM_ComplicatedSayStructure< / span > < span class = "plain-syntax" > ));< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_segment< / span > < span class = "plain-syntax" > (< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "In the text at %1, the text substitution '[%2]' ought to occur as the "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "middle part of its construction, but it appears to be on its own."< / span > < span class = "plain-syntax" > );< / span >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > < / span > < a href = "4-cbal.html#SP5" class = "function-link" > < span class = "function-syntax" > CompileBlocksAndLines::add_say_construction_to_error< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > ssp_tok< / span > < span class = "plain-syntax" > );< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_end< / span > < span class = "plain-syntax" > ();< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > problem_issued< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-04 01:10:19 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-cbal.html#SP4_1_2" > § 4.1.2< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP4_1_3_1" class = "paragraph-anchor" > < / a > < b > § 4.1.3.1. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Issue a problem message for end without start< / span > < span class = "named-paragraph-number" > 4.1.3.1< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > problem_issued< / 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" > Problems::quote_source< / span > < span class = "plain-syntax" > (1, < / span > < span class = "identifier-syntax" > current_sentence< / span > < span class = "plain-syntax" > );< / span >
2020-05-11 17:21:29 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_wording< / span > < span class = "plain-syntax" > (2, < / span > < span class = "identifier-syntax" > Node::get_text< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > inv< / span > < span class = "plain-syntax" > ));< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > StandardProblems::handmade_problem< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Task::syntax_tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > _p_< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PM_ComplicatedSayStructure2< / span > < span class = "plain-syntax" > ));< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_segment< / span > < span class = "plain-syntax" > (< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "In the text at %1, the text substitution '[%2]' ought to occur as the "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "ending part of its construction, but it appears to be on its own."< / span > < span class = "plain-syntax" > );< / span >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > < / span > < a href = "4-cbal.html#SP5" class = "function-link" > < span class = "function-syntax" > CompileBlocksAndLines::add_say_construction_to_error< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > ssp_tok< / span > < span class = "plain-syntax" > );< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_end< / span > < span class = "plain-syntax" > ();< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > problem_issued< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-04 01:10:19 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-cbal.html#SP4_1_3" > § 4.1.3< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP4_1_4_1" class = "paragraph-anchor" > < / a > < b > § 4.1.4.1. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Issue a problem message for nested say if< / span > < span class = "named-paragraph-number" > 4.1.4.1< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > problem_issued< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ) {< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > StandardProblems::sentence_problem< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Task::syntax_tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > _p_< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PM_SayIfNested< / span > < span class = "plain-syntax" > ),< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "a second '[if ...]' text substitution occurs inside an existing one"< / span > < span class = "plain-syntax" > ,< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "which makes this text too complicated. While a single text can contain "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "more than one '[if ...]', this can only happen if the old if is finished "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "with an '[end if]' or the new one is written '[otherwise if]'. If you "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "need more complicated variety than this allows, the best approach is "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "to define a new text substitution of your own ('To say fiddly details: "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "...') and then use it in this text by including the '[fiddly details]'."< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > problem_issued< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-04 01:10:19 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-cbal.html#SP4_1_4" > § 4.1.4< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP4_1_1_1" class = "paragraph-anchor" > < / a > < b > § 4.1.1.1. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Issue a problem message for an overcomplex SSP< / span > < span class = "named-paragraph-number" > 4.1.1.1< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > problem_issued< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ) {< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > StandardProblems::sentence_problem< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Task::syntax_tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > _p_< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PM_SayOverComplex< / span > < span class = "plain-syntax" > ),< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "this is too complex a text substitution"< / span > < span class = "plain-syntax" > ,< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "and needs to be simplified. You might find it helful to define "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "a new text substitution of your own ('To say fiddly details: "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "...') and then use it in this text by including the '[fiddly details]'."< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > problem_issued< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-04 01:10:19 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-cbal.html#SP4_1_1" > § 4.1.1< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP4_1_5_1" class = "paragraph-anchor" > < / a > < b > § 4.1.5.1. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Issue a problem message for say otherwise without say if< / span > < span class = "named-paragraph-number" > 4.1.5.1< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > problem_issued< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ) {< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > StandardProblems::sentence_problem< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Task::syntax_tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > _p_< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PM_SayOtherwiseWithoutIf< / span > < span class = "plain-syntax" > ),< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "an '[otherwise]' text substitution occurs where there appears to be no "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "[if ...]"< / span > < span class = "plain-syntax" > ,< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "which doesn't make sense - there is nothing for it to be otherwise to."< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > problem_issued< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-04 01:10:19 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-cbal.html#SP4_1_5" > § 4.1.5< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP4_1_5_2" class = "paragraph-anchor" > < / a > < b > § 4.1.5.2. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Issue a problem message for say otherwise interleaved with another construction< / span > < span class = "named-paragraph-number" > 4.1.5.2< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > problem_issued< / 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" > Problems::quote_source< / span > < span class = "plain-syntax" > (1, < / span > < span class = "identifier-syntax" > current_sentence< / span > < span class = "plain-syntax" > );< / span >
2020-05-11 17:21:29 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_wording< / span > < span class = "plain-syntax" > (2, < / span > < span class = "identifier-syntax" > Node::get_text< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > inv< / span > < span class = "plain-syntax" > ));< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > StandardProblems::handmade_problem< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Task::syntax_tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > _p_< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PM_ComplicatedSayStructure5< / span > < span class = "plain-syntax" > ));< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_segment< / span > < span class = "plain-syntax" > (< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "In the text at %1, the '[%2]' ought to occur inside an [if ...], but "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "is cut off because it has been interleaved with a complicated say "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "construction."< / span > < span class = "plain-syntax" > );< / span >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > < / span > < a href = "4-cbal.html#SP5" class = "function-link" > < span class = "function-syntax" > CompileBlocksAndLines::add_say_construction_to_error< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > SSP_stack< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > SSP_sp< / span > < span class = "plain-syntax" > -1]);< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_end< / span > < span class = "plain-syntax" > ();< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > problem_issued< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-04 01:10:19 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-cbal.html#SP4_1_5" > § 4.1.5< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP4_1_5_3" class = "paragraph-anchor" > < / a > < b > § 4.1.5.3. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Issue a problem message for two say otherwises< / span > < span class = "named-paragraph-number" > 4.1.5.3< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > problem_issued< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ) {< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > StandardProblems::sentence_problem< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Task::syntax_tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > _p_< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PM_TwoSayOtherwises< / span > < span class = "plain-syntax" > ),< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "there's already an (unconditional) \"[otherwise]\" or \"[else]\" "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "in this text substitution"< / span > < span class = "plain-syntax" > ,< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "so it doesn't make sense to follow that with a further one."< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > problem_issued< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-04 01:10:19 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-cbal.html#SP4_1_5" > § 4.1.5< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP4_1_6_1" class = "paragraph-anchor" > < / a > < b > § 4.1.6.1. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Issue a problem message for say end if without say if< / span > < span class = "named-paragraph-number" > 4.1.6.1< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > problem_issued< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ) {< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > StandardProblems::sentence_problem< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Task::syntax_tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > _p_< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PM_SayEndIfWithoutSayIf< / span > < span class = "plain-syntax" > ),< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "an '[end if]' text substitution occurs where there appears to be no "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "[if ...]"< / span > < span class = "plain-syntax" > ,< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "which doesn't make sense - there is nothing for it to end."< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > problem_issued< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-04 01:10:19 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-cbal.html#SP4_1_6" > § 4.1.6< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP4_1_6_2" class = "paragraph-anchor" > < / a > < b > § 4.1.6.2. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Issue a problem message for say end if interleaved with another construction< / span > < span class = "named-paragraph-number" > 4.1.6.2< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > problem_issued< / 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" > Problems::quote_source< / span > < span class = "plain-syntax" > (1, < / span > < span class = "identifier-syntax" > current_sentence< / span > < span class = "plain-syntax" > );< / span >
2020-05-11 17:21:29 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_wording< / span > < span class = "plain-syntax" > (2, < / span > < span class = "identifier-syntax" > Node::get_text< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > inv< / span > < span class = "plain-syntax" > ));< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > StandardProblems::handmade_problem< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Task::syntax_tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > _p_< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PM_ComplicatedSayStructure4< / span > < span class = "plain-syntax" > ));< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_segment< / span > < span class = "plain-syntax" > (< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "In the text at %1, the '[%2]' is cut off from its [if ...], because "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "it has been interleaved with a complicated say construction."< / span > < span class = "plain-syntax" > );< / span >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > < / span > < a href = "4-cbal.html#SP5" class = "function-link" > < span class = "function-syntax" > CompileBlocksAndLines::add_say_construction_to_error< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > SSP_stack< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > SSP_sp< / span > < span class = "plain-syntax" > -1]);< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_end< / span > < span class = "plain-syntax" > ();< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > problem_issued< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-04 01:10:19 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-cbal.html#SP4_1_6" > § 4.1.6< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP4_1_7" class = "paragraph-anchor" > < / a > < b > § 4.1.7. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Issue a problem message for an SSP without end< / span > < span class = "named-paragraph-number" > 4.1.7< / span > < / span > < span class = "comment-syntax" > =< / span >
2020-05-03 03:01:21 +03:00
< / p >
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > problem_issued< / 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" > parse_node< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > stinv< / 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" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > ssp_tok< / span > < span class = "plain-syntax" > = -1;< / 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" > SSP_sp< / 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" > SSP_invocations< / 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" > stinv< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > SSP_invocations< / 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" > ssp_tok< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > SSP_stack< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > i< / 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" > stinv< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_source< / span > < span class = "plain-syntax" > (1, < / span > < span class = "identifier-syntax" > current_sentence< / span > < span class = "plain-syntax" > );< / span >
2020-05-11 17:21:29 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_wording< / span > < span class = "plain-syntax" > (2, < / span > < span class = "identifier-syntax" > Node::get_text< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > stinv< / span > < span class = "plain-syntax" > ));< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > StandardProblems::handmade_problem< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Task::syntax_tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > _p_< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PM_ComplicatedSayStructure3< / span > < span class = "plain-syntax" > ));< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_segment< / span > < span class = "plain-syntax" > (< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "In the text at %1, the text substitution '[%2]' seems to start a "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "complicated say construction, but it doesn't have a matching end."< / span > < span class = "plain-syntax" > );< / span >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > ssp_tok< / span > < span class = "plain-syntax" > > = < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > ) < / span > < a href = "4-cbal.html#SP5" class = "function-link" > < span class = "function-syntax" > CompileBlocksAndLines::add_say_construction_to_error< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > ssp_tok< / span > < span class = "plain-syntax" > );< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_end< / span > < span class = "plain-syntax" > ();< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > problem_issued< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > }< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2021-04-04 01:10:19 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "4-cbal.html#SP4_1" > § 4.1< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP5" class = "paragraph-anchor" > < / a > < b > § 5. Problem messages for complex say constructions. < / b > < / p >
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
2021-04-04 01:10:19 +03:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > CompileBlocksAndLines::add_say_construction_to_error< / span > < button class = "popup" onclick = "togglePopup('usagePopup5')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup5" > Usage of < span class = "code-font" > < span class = "function-syntax" > CompileBlocksAndLines::add_say_construction_to_error< / span > < / span > :< br / > < a href = "4-cbal.html#SP4_1_2_1" > § 4.1.2.1< / a > , < a href = "4-cbal.html#SP4_1_3_1" > § 4.1.3.1< / a > , < a href = "4-cbal.html#SP4_1_5_2" > § 4.1.5.2< / a > , < a href = "4-cbal.html#SP4_1_6_2" > § 4.1.6.2< / a > , < a href = "4-cbal.html#SP4_1_7" > § 4.1.7< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > ssp_tok< / span > < span class = "plain-syntax" > ) {< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_segment< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > " %P(The construction I'm thinking of is '"< / span > < span class = "plain-syntax" > );< / span >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > < / span > < a href = "4-cbal.html#SP5" class = "function-link" > < span class = "function-syntax" > CompileBlocksAndLines::add_scte_list< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > ssp_tok< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > SSP_START< / span > < span class = "plain-syntax" > );< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_segment< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > " ... "< / span > < span class = "plain-syntax" > );< / span >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > < / span > < a href = "4-cbal.html#SP5" class = "function-link" > < span class = "function-syntax" > CompileBlocksAndLines::add_scte_list< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > ssp_tok< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > SSP_MIDDLE< / span > < span class = "plain-syntax" > );< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_segment< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > " ... "< / span > < span class = "plain-syntax" > );< / span >
2021-04-04 01:10:19 +03:00
< span class = "plain-syntax" > < / span > < a href = "4-cbal.html#SP5" class = "function-link" > < span class = "function-syntax" > CompileBlocksAndLines::add_scte_list< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > ssp_tok< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > SSP_END< / span > < span class = "plain-syntax" > );< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_segment< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > "'.)"< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > }< / span >
2021-04-04 01:10:19 +03:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > CompileBlocksAndLines::add_scte_list< / span > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > ssp_tok< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > list_pos< / span > < span class = "plain-syntax" > ) {< / span >
2021-03-29 01:42:22 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > id_body< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > idb< / span > < span class = "plain-syntax" > ; < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > ct< / 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_OVER< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > idb< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > id_body< / span > < span class = "plain-syntax" > ) {< / span >
2020-05-03 03:01:21 +03:00
< 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 >
2021-03-29 01:42:22 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > IDTypeData::ssp_matches< / span > < span class = "plain-syntax" > (& (< / span > < span class = "identifier-syntax" > idb< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > type_data< / span > < span class = "plain-syntax" > ), < / span > < span class = "identifier-syntax" > ssp_tok< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > list_pos< / span > < span class = "plain-syntax" > , & < / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > )) {< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_wording< / span > < span class = "plain-syntax" > (3, < / 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" > ct< / span > < span class = "plain-syntax" > ++ == < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > Problems::issue_problem_segment< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > "[%3]"< / 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" > Problems::issue_problem_segment< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > "/[%3]"< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > }< / span >
< / pre >
< nav role = "progress" > < div class = "progresscontainer" >
2021-04-04 01:10:19 +03:00
< ul class = "progressbar" > < li class = "progressprev" > < a href = "3-cdp.html" > ❮ < / a > < / li > < li class = "progresschapter" > < a href = "P-wtmd.html" > P< / a > < / li > < li class = "progresschapter" > < a href = "1-im.html" > 1< / a > < / li > < li class = "progresschapter" > < a href = "2-sf.html" > 2< / a > < / li > < li class = "progresschapter" > < a href = "3-cfs.html" > 3< / a > < / li > < li class = "progresscurrentchapter" > 4< / li > < li class = "progresscurrent" > cbal< / li > < li class = "progresssection" > < a href = "4-ci.html" > ci< / a > < / li > < li class = "progresssection" > < a href = "4-ciac.html" > ciac< / a > < / li > < li class = "progresssection" > < a href = "4-cii.html" > cii< / a > < / li > < li class = "progresssection" > < a href = "4-ca.html" > ca< / a > < / li > < li class = "progresssection" > < a href = "4-cste.html" > cste< / a > < / li > < li class = "progressnext" > < a href = "4-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 >