2021-02-12 15:33:19 +02:00
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
< html >
< head >
< title > Variables< / title >
< link href = "../docs-assets/Breadcrumbs.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
< meta name = "viewport" content = "width=device-width initial-scale=1" >
< meta http-equiv = "Content-Type" content = "text/html; charset=utf-8" >
< meta http-equiv = "Content-Language" content = "en-gb" >
< link href = "../docs-assets/Contents.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
< link href = "../docs-assets/Progress.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
< link href = "../docs-assets/Navigation.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
< link href = "../docs-assets/Fonts.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
< link href = "../docs-assets/Base.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
2021-02-15 14:10:54 +02:00
< script >
function togglePopup(material_id) {
var popup = document.getElementById(material_id);
popup.classList.toggle("show");
}
< / script >
< link href = "../docs-assets/Popups.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
2021-02-12 15:33:19 +02:00
< link href = "../docs-assets/Colours.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
2021-06-06 14:01:16 +03:00
< link href = "../docs-assets/Preform-Colours.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
2021-02-12 15:33:19 +02:00
< / head >
< body class = "commentary-font" >
< nav role = "navigation" >
2022-04-28 19:37:28 +03:00
< h1 > < a href = "../index.html" >
2021-02-12 15:33:19 +02:00
< img src = "../docs-assets/Inform.png" height = 72" >
< / a > < / h1 >
2022-04-28 19:37:28 +03:00
< ul > < li > < a href = "../index.html" > home< / a > < / li >
2022-04-04 20:31:44 +03:00
< / ul > < h2 > Compiler< / h2 > < ul >
< li > < a href = "../structure.html" > structure< / a > < / li >
< li > < a href = "../inbuildn.html" > inbuild< / a > < / li >
< li > < a href = "../inform7n.html" > inform7< / a > < / li >
< li > < a href = "../intern.html" > inter< / a > < / li >
< li > < a href = "../services.html" > services< / a > < / li >
2022-04-18 17:46:46 +03:00
< li > < a href = "../secrets.html" > secrets< / a > < / li >
2022-04-04 20:31:44 +03:00
< / ul > < h2 > Other Tools< / h2 > < ul >
< li > < a href = "../inblorbn.html" > inblorb< / a > < / li >
< li > < a href = "../indocn.html" > indoc< / a > < / li >
< li > < a href = "../inform6.html" > inform6< / a > < / li >
< li > < a href = "../inpolicyn.html" > inpolicy< / a > < / li >
< li > < a href = "../inrtpsn.html" > inrtps< / a > < / li >
2022-04-07 00:04:57 +03:00
< / ul > < h2 > Resources< / h2 > < ul >
< li > < a href = "../extensions.html" > extensions< / a > < / li >
< li > < a href = "../kits.html" > kits< / a > < / li >
2022-04-04 20:31:44 +03:00
< / ul > < h2 > Repository< / h2 > < ul >
< li > < a href = "https://github.com/ganelson/inform" > < img src = "../docs-assets/github.png" height = 18 > github< / a > < / li >
< / ul > < h2 > Related Projects< / h2 > < ul >
2022-04-28 19:20:06 +03:00
< li > < a href = "../../../inweb/index.html" > inweb< / a > < / li >
< li > < a href = "../../../intest/index.html" > intest< / a > < / li >
2021-02-12 15:33:19 +02:00
< / ul >
< / nav >
< main role = "main" >
<!-- Weave of 'Variables' generated by Inweb -->
< div class = "breadcrumbs" >
2022-04-28 19:37:28 +03:00
< ul class = "crumbs" > < li > < a href = "../index.html" > Home< / a > < / li > < li > < a href = "../inform7n.html" > Inform7< / a > < / li > < li > < a href = "index.html" > runtime< / a > < / li > < li > < a href = "index.html#5" > Chapter 5: Provision Submodules< / a > < / li > < li > < b > Variables< / b > < / li > < / ul > < / div >
2021-05-10 11:31:35 +03:00
< p class = "purpose" > To compile the variables submodule for a compilation unit, which contains _variable packages.< / p >
2021-02-12 15:33:19 +02:00
2021-06-06 14:01:16 +03:00
< ul class = "toc" > < li > < a href = "5-vrb.html#SP1" > § 1. NVEs< / a > < / li > < li > < a href = "5-vrb.html#SP9" > § 9. Writing without NVEs< / a > < / li > < li > < a href = "5-vrb.html#SP10" > § 10. Compilation data< / a > < / li > < li > < a href = "5-vrb.html#SP13" > § 13. Compilation< / a > < / li > < li > < a href = "5-vrb.html#SP15" > § 15. Initial values< / a > < / li > < / ul > < hr class = "tocbar" >
2021-02-12 15:33:19 +02:00
2021-05-10 11:31:35 +03:00
< p class = "commentary firstcommentary" > < a id = "SP1" class = "paragraph-anchor" > < / a > < b > § 1. NVEs. < / b > While a nonlocal variable, or NLV, looks like a simple storage location from
the perspective of Inform 7 source text — the author assumes there's some
memory cell somewhere with this name — it can actually be data expressed in
a range of different ways in Inter code. It might indeed be a global variable,
but then again it might be an array entry, or even a temporary location on
a stack; it might even be a constant.
< / p >
2021-02-15 14:10:54 +02:00
2021-05-10 11:31:35 +03:00
< p class = "commentary" > This range of possible expressions is represented by a < a href = "5-vrb.html#SP1" class = "internal" > nonlocal_variable_emission< / a > ,
or NVE. Each variable in principle has two, a left and a right NVE, though in
practice they are often the same. The left NVE tells Inform how to compile
assignments to the variable (i.e., when using it as an lvalue); the right NVE
how to compile lookups of its value (i.e., as an rvalue).
< / p >
2021-02-15 14:10:54 +02:00
2021-05-10 11:31:35 +03:00
< p class = "commentary" > The NVE structure looks messy, but it's basically a union of four possibilities,
of which the last is the default:
< / p >
2021-02-15 14:10:54 +02:00
2021-05-10 11:31:35 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
2021-02-15 14:10:54 +02:00
< span class = "reserved-syntax" > typedef< / span > < span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > struct< / span > < span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > nonlocal_variable_emission< / span > < span class = "plain-syntax" > {< / span >
2021-05-10 11:31:35 +03:00
< span class = "plain-syntax" > < / span > < span class = "comment-syntax" > access as this Inter constant or global variable< / span >
2021-02-15 14:10:54 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > struct< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > inter_name< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > iname_form< / span > < span class = "plain-syntax" > ;< / span >
2021-05-10 11:31:35 +03:00
< span class = "plain-syntax" > < / span > < span class = "comment-syntax" > access as the Inter < / span > < span class = "extract" > < span class = "extract-syntax" > nothing< / span > < / span > < span class = "comment-syntax" > constant< / span >
2021-02-15 14:10:54 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > nothing_form< / span > < span class = "plain-syntax" > ;< / span >
2021-05-10 11:31:35 +03:00
< span class = "plain-syntax" > < / span > < span class = "comment-syntax" > access as this shared variable on the M-stack< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > struct< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > inter_name< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > shv_set_ID< / span > < span class = "plain-syntax" > ;< / span >
2021-04-27 16:01:34 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > shv_index< / span > < span class = "plain-syntax" > ;< / span >
2021-05-10 11:31:35 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > allow_access_even_if_does_not_exist< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "comment-syntax" > access as the iname belonging to the NLV itself< / span >
2021-02-15 14:10:54 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > use_own_iname< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > } < / span > < span class = "reserved-syntax" > nonlocal_variable_emission< / span > < span class = "plain-syntax" > ;< / span >
2021-05-10 11:31:35 +03:00
< / pre >
< ul class = "endnotetexts" > < li > The structure nonlocal_variable_emission is private to this section.< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP2" class = "paragraph-anchor" > < / a > < b > § 2. < / b > The following is the default:
< / p >
2021-02-15 14:10:54 +02:00
2021-05-10 11:31:35 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "reserved-syntax" > nonlocal_variable_emission< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > RTVariables::default_nve< / 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" > RTVariables::default_nve< / span > < / span > :< br / > < a href = "5-vrb.html#SP3" > § 3< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > ) {< / span >
2021-02-15 14:10:54 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > nonlocal_variable_emission< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > nve< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > nve< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > iname_form< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ;< / span >
2021-05-10 11:31:35 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > nve< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > nothing_form< / 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" > nve< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > shv_set_ID< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ;< / span >
2021-04-27 16:01:34 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > nve< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > shv_index< / span > < span class = "plain-syntax" > = -1;< / span >
2021-05-10 11:31:35 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > nve< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > allow_access_even_if_does_not_exist< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ;< / span >
2021-02-15 14:10:54 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > nve< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > use_own_iname< / 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" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > nve< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2021-05-10 11:31:35 +03:00
< / pre >
< p class = "commentary firstcommentary" > < a id = "SP3" class = "paragraph-anchor" > < / a > < b > § 3. < / b > So where do these NVEs come from?
< / p >
2021-02-15 14:10:54 +02:00
2021-05-10 11:31:35 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "reserved-syntax" > nonlocal_variable_emission< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > RTVariables::nve_from_nothing< / 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" > RTVariables::nve_from_nothing< / span > < / span > :< br / > < a href = "5-vrb.html#SP6" > § 6< / a > < / span > < / button > < 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" > nonlocal_variable_emission< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > nve< / span > < span class = "plain-syntax" > = < / span > < a href = "5-vrb.html#SP2" class = "function-link" > < span class = "function-syntax" > RTVariables::default_nve< / span > < / a > < span class = "plain-syntax" > ();< / span >
2021-02-15 14:10:54 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > nve< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > nothing_form< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > nve< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2021-05-10 11:31:35 +03:00
< span class = "reserved-syntax" > nonlocal_variable_emission< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > RTVariables::nve_from_iname< / 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" > RTVariables::nve_from_iname< / span > < / span > :< br / > < a href = "5-vrb.html#SP5" > § 5< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > inter_name< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > nonlocal_variable_emission< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > nve< / span > < span class = "plain-syntax" > = < / span > < a href = "5-vrb.html#SP2" class = "function-link" > < span class = "function-syntax" > RTVariables::default_nve< / span > < / a > < span class = "plain-syntax" > ();< / span >
2021-02-15 14:10:54 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > nve< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > iname_form< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > nve< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2021-05-25 14:14:32 +03:00
< span class = "reserved-syntax" > nonlocal_variable_emission< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > RTVariables::nve_from_mstack< / 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" > RTVariables::nve_from_mstack< / span > < / span > :< br / > < a href = "5-vrb.html#SP7" > § 7< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > inter_name< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > ,< / span >
2021-05-10 11:31:35 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > index< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > allow_access_even_if_does_not_exist< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > nonlocal_variable_emission< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > nve< / span > < span class = "plain-syntax" > = < / span > < a href = "5-vrb.html#SP2" class = "function-link" > < span class = "function-syntax" > RTVariables::default_nve< / span > < / a > < span class = "plain-syntax" > ();< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > nve< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > shv_set_ID< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > ;< / span >
2021-04-27 16:01:34 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > nve< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > shv_index< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > index< / span > < span class = "plain-syntax" > ;< / span >
2021-05-10 11:31:35 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > nve< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > allow_access_even_if_does_not_exist< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > allow_access_even_if_does_not_exist< / span > < span class = "plain-syntax" > ;< / span >
2021-02-15 14:10:54 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > nve< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2021-05-10 11:31:35 +03:00
< span class = "reserved-syntax" > nonlocal_variable_emission< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > RTVariables::nve_from_own_iname< / 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" > RTVariables::nve_from_own_iname< / span > < / span > :< br / > < a href = "5-vrb.html#SP10" > § 10< / a > < / span > < / button > < 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" > nonlocal_variable_emission< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > nve< / span > < span class = "plain-syntax" > = < / span > < a href = "5-vrb.html#SP2" class = "function-link" > < span class = "function-syntax" > RTVariables::default_nve< / span > < / a > < span class = "plain-syntax" > ();< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > nve< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > use_own_iname< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
2021-04-27 16:01:34 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > nve< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2021-05-10 11:31:35 +03:00
< / pre >
< p class = "commentary firstcommentary" > < a id = "SP4" class = "paragraph-anchor" > < / a > < b > § 4. < / b > As noted above, the left and right NVEs are usually the same:
< / p >
2021-04-27 16:01:34 +03:00
2021-05-10 11:31:35 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > RTVariables::set_NVE< / span > < button class = "popup" onclick = "togglePopup('usagePopup6')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup6" > Usage of < span class = "code-font" > < span class = "function-syntax" > RTVariables::set_NVE< / span > < / span > :< br / > < a href = "5-vrb.html#SP5" > § 5< / a > , < a href = "5-vrb.html#SP6" > § 6< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nonlocal_variable< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > nonlocal_variable_emission< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > nve< / 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" > nlv< / 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" > "null nlv"< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > lvalue_nve< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > nve< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > rvalue_nve< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > nve< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
< / pre >
< p class = "commentary firstcommentary" > < a id = "SP5" class = "paragraph-anchor" > < / a > < b > § 5. < / b > This is a particularly useful case, where < span class = "extract" > < span class = "extract-syntax" > iname< / span > < / span > can be the iname of a
constant or a global variable in Inter:
< / p >
< pre class = "displayed-code all-displayed-code code-font" >
2021-05-23 00:40:05 +03:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > RTVariables::store_in_this_iname< / span > < button class = "popup" onclick = "togglePopup('usagePopup7')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup7" > Usage of < span class = "code-font" > < span class = "function-syntax" > RTVariables::store_in_this_iname< / span > < / span > :< br / > < a href = "5-vrb.html#SP6" > § 6< / a > , < a href = "5-vrb.html#SP7" > § 7< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nonlocal_variable< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > inter_name< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > ) {< / span >
2021-05-10 11:31:35 +03:00
< span class = "plain-syntax" > < / span > < a href = "5-vrb.html#SP4" class = "function-link" > < span class = "function-syntax" > RTVariables::set_NVE< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > , < / span > < a href = "5-vrb.html#SP3" class = "function-link" > < span class = "function-syntax" > RTVariables::nve_from_iname< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > ));< / span >
2021-02-15 14:10:54 +02:00
< span class = "plain-syntax" > }< / span >
2021-05-23 00:40:05 +03:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > RTVariables::understood_variable< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nonlocal_variable< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < a href = "5-vrb.html#SP5" class = "function-link" > < span class = "function-syntax" > RTVariables::store_in_this_iname< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > , < / span > < a href = "2-hrr.html#SP11" class = "function-link" > < span class = "function-syntax" > Hierarchy::find< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PARSED_NUMBER_HL< / span > < span class = "plain-syntax" > ));< / span >
< span class = "plain-syntax" > }< / span >
2021-05-10 11:31:35 +03:00
< / pre >
< p class = "commentary firstcommentary" > < a id = "SP6" class = "paragraph-anchor" > < / a > < b > § 6. < / b > And in particular that's how we handle sentences like "Maximum score translates
into Inter as "MAX_SCORE".":
< / p >
2021-02-15 14:10:54 +02:00
2021-05-10 11:31:35 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
2021-02-15 14:10:54 +02:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > RTVariables::identifier_translates< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nonlocal_variable< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > name< / 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" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > nlv_name_translated< / span > < span class = "plain-syntax" > ) {< / span >
< 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 = "plain-syntax" > < / span > < span class = "identifier-syntax" > _p_< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PM_QuantityTranslatedAlready< / span > < span class = "plain-syntax" > ),< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "this variable has already been translated"< / span > < span class = "plain-syntax" > ,< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "so there must be some duplication somewhere."< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > nlv_name_translated< / 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" > Str::eq< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > name< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > I< / span > < span class = "string-syntax" > "nothing"< / span > < span class = "plain-syntax" > )) {< / span >
2021-05-10 11:31:35 +03:00
< span class = "plain-syntax" > < / span > < a href = "5-vrb.html#SP4" class = "function-link" > < span class = "function-syntax" > RTVariables::set_NVE< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > , < / span > < a href = "5-vrb.html#SP3" class = "function-link" > < span class = "function-syntax" > RTVariables::nve_from_nothing< / span > < / a > < span class = "plain-syntax" > ());< / span >
2021-02-15 14:10:54 +02:00
< span class = "plain-syntax" > } < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > {< / span >
2022-01-22 18:44:52 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > inter_name< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > as_iname< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > HierarchyLocations::find_by_name< / span > < span class = "plain-syntax" > (< / span > < a href = "2-emt.html#SP1" class = "function-link" > < span class = "function-syntax" > Emit::tree< / span > < / a > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > name< / span > < span class = "plain-syntax" > );< / span >
2021-05-10 11:31:35 +03:00
< span class = "plain-syntax" > < / span > < a href = "5-vrb.html#SP5" class = "function-link" > < span class = "function-syntax" > RTVariables::store_in_this_iname< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > as_iname< / span > < span class = "plain-syntax" > );< / span >
2021-02-15 14:10:54 +02:00
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > }< / span >
2021-05-10 11:31:35 +03:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > RTVariables::set_NVE_from_existing< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nonlocal_variable< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > nonlocal_variable< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > other< / 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" > nlv< / 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" > "null nlv"< / 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" > other< / 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" > "null other"< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < a href = "5-vrb.html#SP4" class = "function-link" > < span class = "function-syntax" > RTVariables::set_NVE< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > other< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > rvalue_nve< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > }< / span >
2021-02-15 14:10:54 +02:00
< / pre >
2021-05-10 11:31:35 +03:00
< p class = "commentary firstcommentary" > < a id = "SP7" class = "paragraph-anchor" > < / a > < b > § 7. < / b > Left and right NVEs may differ in the case where an NLV is tied to a shared
variable which lives fleetingly on the M-stack at runtime. The difference is
essentially that a read of a shared variable (the right NVE) will forgive
the situation in which that variable does not exist; a write to it (the
left NVE) will not. See < a href = "../BasicInformKit/S-mst.html" class = "internal" > MStack (in BasicInformKit)< / a > for more.
2021-02-15 14:10:54 +02:00
< / p >
< pre class = "displayed-code all-displayed-code code-font" >
2021-05-10 11:31:35 +03:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > RTVariables::tie_NLV_to_shared_variable< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nonlocal_variable< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > shared_variable< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > shv< / span > < span class = "plain-syntax" > ) {< / span >
2021-02-15 14:10:54 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nlv< / 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" > "null nlv"< / span > < span class = "plain-syntax" > );< / span >
2021-05-17 01:58:16 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > SharedVariables::is_actor< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > shv< / span > < span class = "plain-syntax" > )) {< / span >
2021-05-10 11:31:35 +03:00
< span class = "plain-syntax" > < / span > < a href = "5-vrb.html#SP5" class = "function-link" > < span class = "function-syntax" > RTVariables::store_in_this_iname< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > , < / span > < a href = "2-hrr.html#SP11" class = "function-link" > < span class = "function-syntax" > Hierarchy::find< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > ACTOR_HL< / 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" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > lvalue_nve< / span > < span class = "plain-syntax" > =< / span >
< span class = "plain-syntax" > < / span > < a href = "5-vrb.html#SP3" class = "function-link" > < span class = "function-syntax" > RTVariables::nve_from_mstack< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > SharedVariables::get_owner_iname< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > shv< / span > < span class = "plain-syntax" > ),< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > SharedVariables::get_index< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > shv< / 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" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > rvalue_nve< / span > < span class = "plain-syntax" > =< / span >
< span class = "plain-syntax" > < / span > < a href = "5-vrb.html#SP3" class = "function-link" > < span class = "function-syntax" > RTVariables::nve_from_mstack< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > SharedVariables::get_owner_iname< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > shv< / span > < span class = "plain-syntax" > ),< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > SharedVariables::get_index< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > shv< / span > < span class = "plain-syntax" > ), < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > }< / span >
2021-02-15 14:10:54 +02:00
< span class = "plain-syntax" > }< / span >
< / pre >
2021-05-10 11:31:35 +03:00
< p class = "commentary firstcommentary" > < a id = "SP8" class = "paragraph-anchor" > < / a > < b > § 8. < / b > And the following code results from a reference to the NVE.
2021-02-15 14:10:54 +02:00
< / p >
< pre class = "displayed-code all-displayed-code code-font" >
2021-05-10 11:31:35 +03:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > RTVariables::compile_NVE_as_val< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nonlocal_variable< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > nonlocal_variable_emission< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > nve< / 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" > nve< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > iname_form< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < a href = "2-ec.html#SP7" class = "function-link" > < span class = "function-syntax" > EmitCode::val_iname< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > K_value< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > nve< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > iname_form< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > } < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nve< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > shv_set_ID< / span > < span class = "plain-syntax" > ) {< / span >
2021-05-24 01:12:40 +03:00
< span class = "plain-syntax" > < / span > < a href = "2-ec.html#SP13" class = "function-link" > < span class = "function-syntax" > EmitCode::inv< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > LOOKUP_BIP< / span > < span class = "plain-syntax" > );< / span >
2021-05-10 11:31:35 +03:00
< span class = "plain-syntax" > < / span > < a href = "2-ec.html#SP3" class = "function-link" > < span class = "function-syntax" > EmitCode::down< / span > < / a > < span class = "plain-syntax" > ();< / span >
< span class = "plain-syntax" > < / span > < a href = "2-ec.html#SP7" class = "function-link" > < span class = "function-syntax" > EmitCode::val_iname< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > K_value< / span > < span class = "plain-syntax" > , < / span > < a href = "2-hrr.html#SP11" class = "function-link" > < span class = "function-syntax" > Hierarchy::find< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > MSTACK_HL< / 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" > ex< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > MSTVO_HL< / 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" > nve< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > allow_access_even_if_does_not_exist< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > ex< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > MSTVON_HL< / span > < span class = "plain-syntax" > ;< / span >
2021-05-24 01:12:40 +03:00
< span class = "plain-syntax" > < / span > < a href = "2-ec.html#SP13" class = "function-link" > < span class = "function-syntax" > EmitCode::call< / span > < / a > < span class = "plain-syntax" > (< / span > < a href = "2-hrr.html#SP11" class = "function-link" > < span class = "function-syntax" > Hierarchy::find< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > ex< / span > < span class = "plain-syntax" > ));< / span >
2021-05-10 11:31:35 +03:00
< span class = "plain-syntax" > < / span > < a href = "2-ec.html#SP3" class = "function-link" > < span class = "function-syntax" > EmitCode::down< / span > < / a > < span class = "plain-syntax" > ();< / span >
< span class = "plain-syntax" > < / span > < a href = "2-ec.html#SP7" class = "function-link" > < span class = "function-syntax" > EmitCode::val_iname< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > K_value< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > nve< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > shv_set_ID< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < a href = "2-ec.html#SP7" class = "function-link" > < span class = "function-syntax" > EmitCode::val_number< / span > < / a > < span class = "plain-syntax" > ((< / span > < span class = "identifier-syntax" > inter_ti< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > nve< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > shv_index< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < a href = "2-ec.html#SP3" class = "function-link" > < span class = "function-syntax" > EmitCode::up< / span > < / a > < span class = "plain-syntax" > ();< / span >
< span class = "plain-syntax" > < / span > < a href = "2-ec.html#SP3" class = "function-link" > < span class = "function-syntax" > EmitCode::up< / span > < / a > < span class = "plain-syntax" > ();< / span >
< span class = "plain-syntax" > } < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nve< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > use_own_iname< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < a href = "2-ec.html#SP7" class = "function-link" > < span class = "function-syntax" > EmitCode::val_iname< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > K_value< / span > < span class = "plain-syntax" > , < / span > < a href = "5-vrb.html#SP11" class = "function-link" > < span class = "function-syntax" > RTVariables::iname< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > ));< / span >
< span class = "plain-syntax" > } < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nve< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > nothing_form< / span > < span class = "plain-syntax" > ) {< / span >
2021-09-01 19:53:58 +03:00
< span class = "plain-syntax" > < / span > < a href = "2-ec.html#SP7" class = "function-link" > < span class = "function-syntax" > EmitCode::val_iname< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > K_value< / span > < span class = "plain-syntax" > , < / span > < a href = "2-hrr.html#SP11" class = "function-link" > < span class = "function-syntax" > Hierarchy::find< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > NOTHING_HL< / span > < span class = "plain-syntax" > ));< / span >
2021-05-10 11:31:35 +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" > internal_error< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > "improperly formed nve"< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > }< / span >
2021-02-15 14:10:54 +02:00
< span class = "plain-syntax" > }< / span >
< / pre >
2021-05-10 11:31:35 +03:00
< p class = "commentary firstcommentary" > < a id = "SP9" class = "paragraph-anchor" > < / a > < b > § 9. Writing without NVEs. < / b > NVEs are a very flexible way to describe a storage location, but they do assume
that a write can be performed by a < span class = "extract" > < span class = "extract-syntax" > STORE_BIP< / span > < / span > instruction applied to a reference
to that location — in other words, by some form of assignment like so:
2021-02-15 14:10:54 +02:00
< / p >
< pre class = "displayed-code all-displayed-code code-font" >
2021-05-10 11:31:35 +03:00
< span class = "plain-syntax" > Something = value;< / span >
< span class = "plain-syntax" > (Somewhere--> 20) = value;< / span >
2021-02-15 14:10:54 +02:00
< / pre >
2021-05-10 11:31:35 +03:00
< p class = "commentary" > And here the term on the left is compiled by wrapping the code produced by
< a href = "5-vrb.html#SP8" class = "internal" > RTVariables::compile_NVE_as_val< / a > in a < span class = "extract" > < span class = "extract-syntax" > REF_IST< / span > < / span > to make a reference.
This is all well and good. But suppose the assignment has to be made by
some function instead?
2021-02-15 14:10:54 +02:00
< / p >
< pre class = "displayed-code all-displayed-code code-font" >
2021-05-10 11:31:35 +03:00
< span class = "plain-syntax" > ChangePlayer(value);< / span >
< span class = "plain-syntax" > ...< / span >
< span class = "plain-syntax" > ChangePlayer (val) {< / span >
< span class = "plain-syntax" > ...< / span >
< span class = "plain-syntax" > player = val;< / span >
< span class = "plain-syntax" > ...< / span >
< span class = "plain-syntax" > }< / span >
2021-04-02 19:33:37 +03:00
< / pre >
2021-05-10 11:31:35 +03:00
< p class = "commentary" > An NVE cannot express the need to compile an assignment entirely differently.
So for such cases we provide the ability to set an explicit I6 scheme for
writing. In such a schema, < span class = "extract" > < span class = "extract-syntax" > *1< / span > < / span > means the variable, < span class = "extract" > < span class = "extract-syntax" > *2< / span > < / span > the value; so, for
example, < span class = "extract" > < span class = "extract-syntax" > ChangePlayer(*2)< / span > < / span > could be used in the above example.
2021-04-02 19:33:37 +03:00
< / p >
< pre class = "displayed-code all-displayed-code code-font" >
2021-05-19 00:20:35 +03:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > RTVariables::set_write_schema< / span > < button class = "popup" onclick = "togglePopup('usagePopup8')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup8" > Usage of < span class = "code-font" > < span class = "function-syntax" > RTVariables::set_write_schema< / span > < / span > :< br / > The Player - < a href = "6-tp.html#SP2" > § 2< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nonlocal_variable< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > sch< / span > < span class = "plain-syntax" > ) {< / span >
2021-05-10 11:31:35 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > nlv_write_schema< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Str::duplicate< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > sch< / span > < span class = "plain-syntax" > );< / span >
2021-02-15 14:10:54 +02:00
< span class = "plain-syntax" > }< / span >
2021-05-10 11:31:35 +03:00
< span class = "identifier-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "function-syntax" > RTVariables::get_write_schema< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nonlocal_variable< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > nlv< / 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" > nlv< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ) < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "identifier-syntax" > nlv_write_schema< / span > < span class = "plain-syntax" > ;< / span >
2021-04-02 02:47:20 +03:00
< span class = "plain-syntax" > }< / span >
< / pre >
2021-05-10 11:31:35 +03:00
< p class = "commentary firstcommentary" > < a id = "SP10" class = "paragraph-anchor" > < / a > < b > § 10. Compilation data. < / b > Each < span class = "extract" > < span class = "extract-syntax" > nonlocal_variable< / span > < / span > object contains this data.
2021-04-02 02:47:20 +03:00
< / p >
< pre class = "displayed-code all-displayed-code code-font" >
2021-05-10 11:31:35 +03:00
< span class = "reserved-syntax" > typedef< / span > < span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > struct< / span > < span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > variable_compilation_data< / span > < span class = "plain-syntax" > {< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > struct< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > package_request< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > nlv_package< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > struct< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > inter_name< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > nlv_iname< / 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" > hierarchy_location_id< / 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" > nlv_name_translated< / span > < span class = "plain-syntax" > ; < / span > < span class = "comment-syntax" > has this been given storage as an I6 variable?< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > struct< / span > < span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > nonlocal_variable_emission< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > rvalue_nve< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > struct< / span > < span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > nonlocal_variable_emission< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > lvalue_nve< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > struct< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > nlv_write_schema< / span > < span class = "plain-syntax" > ; < / span > < span class = "comment-syntax" > < / span > < span class = "extract" > < span class = "extract-syntax" > NULL< / span > < / span > < span class = "comment-syntax" > for almost all variables< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > var_is_initialisable_anyway< / span > < span class = "plain-syntax" > ; < / span > < span class = "comment-syntax" > meaningful only if not stored in own iname< / span >
< span class = "plain-syntax" > } < / span > < span class = "reserved-syntax" > variable_compilation_data< / span > < span class = "plain-syntax" > ;< / span >
2021-04-02 02:47:20 +03:00
2021-05-10 11:31:35 +03:00
< span class = "reserved-syntax" > variable_compilation_data< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > RTVariables::new_compilation_data< / 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" > variable_compilation_data< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > data< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > nlv_package< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > hierarchy_location_id< / span > < span class = "plain-syntax" > = -1;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > nlv_iname< / 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" > data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > nlv_name_translated< / 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" > data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > rvalue_nve< / span > < span class = "plain-syntax" > = < / span > < a href = "5-vrb.html#SP3" class = "function-link" > < span class = "function-syntax" > RTVariables::nve_from_own_iname< / span > < / a > < span class = "plain-syntax" > ();< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > lvalue_nve< / span > < span class = "plain-syntax" > = < / span > < a href = "5-vrb.html#SP3" class = "function-link" > < span class = "function-syntax" > RTVariables::nve_from_own_iname< / span > < / a > < span class = "plain-syntax" > ();< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > nlv_write_schema< / 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" > data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > var_is_initialisable_anyway< / 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" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > data< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2021-04-02 02:47:20 +03:00
< / pre >
2021-05-10 11:31:35 +03:00
< ul class = "endnotetexts" > < li > The structure variable_compilation_data is private to this section.< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP11" class = "paragraph-anchor" > < / a > < b > § 11. < / b > This function should be used immediately after a variable is created, or
2021-04-02 02:47:20 +03:00
< / p >
2021-05-10 11:31:35 +03:00
< ul class = "items" > < li > (preferably) not at all.
< / li > < / ul >
2021-04-02 02:47:20 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
2021-05-10 11:31:35 +03:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > RTVariables::set_hierarchy_location< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nonlocal_variable< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > hl< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > hierarchy_location_id< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > hl< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2021-04-02 02:47:20 +03:00
2021-06-06 14:01:16 +03:00
< span class = "identifier-syntax" > package_request< / span > < span class = "plain-syntax" > *< / span > < span class = "function-syntax" > RTVariables::package< / span > < button class = "popup" onclick = "togglePopup('usagePopup9')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup9" > Usage of < span class = "code-font" > < span class = "function-syntax" > RTVariables::package< / span > < / span > :< br / > < a href = "5-vrb.html#SP14" > § 14< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nonlocal_variable< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > ) {< / span >
2021-05-10 11:31:35 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > nlv_package< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > )< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > nlv_package< / span > < span class = "plain-syntax" > =< / span >
< span class = "plain-syntax" > < / span > < a href = "2-hrr.html#SP19" class = "function-link" > < span class = "function-syntax" > Hierarchy::local_package_to< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > VARIABLES_HAP< / span > < span class = "plain-syntax" > ,< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > nlv_created_at< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "identifier-syntax" > nlv_package< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2021-06-06 14:01:16 +03:00
< span class = "identifier-syntax" > inter_name< / span > < span class = "plain-syntax" > *< / span > < span class = "function-syntax" > RTVariables::iname< / span > < button class = "popup" onclick = "togglePopup('usagePopup10')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup10" > Usage of < span class = "code-font" > < span class = "function-syntax" > RTVariables::iname< / span > < / span > :< br / > < a href = "5-vrb.html#SP8" > § 8< / a > , < a href = "5-vrb.html#SP14" > § 14< / a > , < a href = "5-vrb.html#SP14_1" > § 14.1< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nonlocal_variable< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > ) {< / span >
2021-02-15 14:10:54 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > nlv_iname< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ) {< / span >
2021-05-10 11:31:35 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > hierarchy_location_id< / 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" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > nlv_iname< / span > < span class = "plain-syntax" > =< / span >
< span class = "plain-syntax" > < / span > < a href = "2-hrr.html#SP11" class = "function-link" > < span class = "function-syntax" > Hierarchy::find< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > hierarchy_location_id< / 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" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > nlv_iname< / span > < span class = "plain-syntax" > =< / span >
< span class = "plain-syntax" > < / span > < a href = "2-hrr.html#SP13" class = "function-link" > < span class = "function-syntax" > Hierarchy::make_iname_with_memo< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > VARIABLE_HL< / span > < span class = "plain-syntax" > ,< / span >
2021-06-23 02:23:35 +03:00
< span class = "plain-syntax" > < / span > < a href = "5-vrb.html#SP11" class = "function-link" > < span class = "function-syntax" > RTVariables::package< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > ), < / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > name< / span > < span class = "plain-syntax" > );< / span >
2021-02-15 14:10:54 +02: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" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "identifier-syntax" > nlv_iname< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
< / pre >
2021-05-10 11:31:35 +03:00
< p class = "commentary firstcommentary" > < a id = "SP12" class = "paragraph-anchor" > < / a > < b > § 12. < / b > Most variables are stored in the default way, and then they are certainly
initialisable. Those stored in some non-standard way are by default not,
unless a call to the following has been made:
2021-02-15 14:10:54 +02:00
< / p >
< pre class = "displayed-code all-displayed-code code-font" >
2021-05-10 11:31:35 +03:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > RTVariables::make_initialisable< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nonlocal_variable< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > var_is_initialisable_anyway< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
2021-02-15 14:10:54 +02:00
< span class = "plain-syntax" > }< / span >
2021-06-06 14:01:16 +03:00
< span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > RTVariables::stored_in_own_iname< / span > < button class = "popup" onclick = "togglePopup('usagePopup11')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup11" > Usage of < span class = "code-font" > < span class = "function-syntax" > RTVariables::stored_in_own_iname< / span > < / span > :< br / > < a href = "5-vrb.html#SP14" > § 14< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nonlocal_variable< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > ) {< / span >
2021-05-10 11:31:35 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > lvalue_nve< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > use_own_iname< / span > < span class = "plain-syntax" > ) < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ;< / span >
2021-02-15 14:10:54 +02:00
< span class = "plain-syntax" > }< / span >
2021-05-10 11:31:35 +03:00
< span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > RTVariables::is_initialisable< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nonlocal_variable< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < a href = "5-vrb.html#SP12" class = "function-link" > < span class = "function-syntax" > RTVariables::stored_in_own_iname< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > )) < / span > < span class = "reserved-syntax" > return< / 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" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > var_is_initialisable_anyway< / span > < span class = "plain-syntax" > ) < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ;< / span >
2021-02-15 14:10:54 +02:00
< span class = "plain-syntax" > }< / span >
2021-05-10 11:31:35 +03:00
< / pre >
2021-06-06 14:01:16 +03:00
< p class = "commentary firstcommentary" > < a id = "SP13" class = "paragraph-anchor" > < / a > < b > § 13. Compilation. < / b > For the sake of the index, we recognise variables with "K understood" names
and mark them with metadata; this doesn't make them behave any differently in
compiled code, of course.
< / p >
< pre class = "Preform-displayed-code all-displayed-code code-font" >
< span class = "Preform-function-syntax" > < value-understood-variable-name> < / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > ::=< / span >
< span class = "Preform-plain-syntax" > < / span > < span class = "Preform-function-syntax" > < k-kind> < / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > understood< / span >
< / pre >
< ul class = "endnotetexts" > < li > This is < a href = "../words-module/4-ap.html" class = "internal" > Preform grammar< / a > , not regular C code.< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP14" class = "paragraph-anchor" > < / a > < b > § 14. < / b > < / p >
2021-02-15 14:10:54 +02:00
2021-05-10 11:31:35 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > RTVariables::compile< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > inference_subject_family< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > f< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > ignored< / span > < span class = "plain-syntax" > ) {< / span >
2021-02-12 15:33:19 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > nonlocal_variable< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > ;< / span >
2021-05-10 11:31:35 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > LOOP_OVER< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > nonlocal_variable< / span > < span class = "plain-syntax" > ) {< / span >
2021-06-06 14:01:16 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > package_request< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > pack< / span > < span class = "plain-syntax" > = < / span > < a href = "5-vrb.html#SP11" class = "function-link" > < span class = "function-syntax" > RTVariables::package< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > );< / span >
2021-06-23 02:23:35 +03:00
< span class = "plain-syntax" > < / span > < a href = "2-hrr.html#SP23" class = "function-link" > < span class = "function-syntax" > Hierarchy::apply_metadata_from_wording< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > pack< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > VARIABLE_NAME_MD_HL< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > name< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > ((< / span > < span class = "identifier-syntax" > Wordings::first_wn< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > name< / span > < span class = "plain-syntax" > ) > = < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > ) & & (< / span > < span class = "identifier-syntax" > NonlocalVariables::is_global< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > ))) {< / span >
2021-06-06 14:01:16 +03:00
< span class = "plain-syntax" > < / span > < a href = "2-hrr.html#SP23" class = "function-link" > < span class = "function-syntax" > Hierarchy::apply_metadata_from_number< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > pack< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > VARIABLE_AT_MD_HL< / span > < span class = "plain-syntax" > ,< / span >
2021-06-23 02:23:35 +03:00
< span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > inter_ti< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > Wordings::first_wn< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > name< / span > < span class = "plain-syntax" > ));< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > heading< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > h< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Headings::of_wording< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > name< / span > < span class = "plain-syntax" > );< / span >
2021-06-10 00:20:23 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < a href = "3-cm.html#SP1_10" class = "function-link" > < span class = "function-syntax" > CompletionModule::has_heading_id< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > h< / span > < span class = "plain-syntax" > ))< / span >
2021-06-07 00:18:08 +03:00
< span class = "plain-syntax" > < / span > < a href = "2-hrr.html#SP23" class = "function-link" > < span class = "function-syntax" > Hierarchy::apply_metadata_from_heading< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > pack< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > VARIABLE_HEADING_MD_HL< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > h< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < a href = "2-hrr.html#SP23" class = "function-link" > < span class = "function-syntax" > Hierarchy::apply_metadata_from_number< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > pack< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > VARIABLE_INDEXABLE_MD_HL< / span > < span class = "plain-syntax" > ,< / span >
< span class = "plain-syntax" > ((< / span > < span class = "identifier-syntax" > h< / span > < span class = "plain-syntax" > ) & & (< / span > < span class = "identifier-syntax" > h< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > index_definitions_made_under_this< / span > < span class = "plain-syntax" > ))?1:0);< / span >
2021-06-23 02:23:35 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "function-syntax" > < value-understood-variable-name> (nlv-> < / span > < span class = "identifier-syntax" > name< / span > < span class = "plain-syntax" > ))< / span >
2021-06-06 14:01:16 +03:00
< span class = "plain-syntax" > < / span > < a href = "2-hrr.html#SP23" class = "function-link" > < span class = "function-syntax" > Hierarchy::apply_metadata_from_number< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > pack< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > VARIABLE_UNDERSTOOD_MD_HL< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > 1< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Wordings::nonempty< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > var_documentation_symbol< / span > < span class = "plain-syntax" > ))< / span >
< span class = "plain-syntax" > < / span > < a href = "2-hrr.html#SP23" class = "function-link" > < span class = "function-syntax" > Hierarchy::apply_metadata_from_raw_wording< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > pack< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > VARIABLE_DOCUMENTATION_MD_HL< / span > < span class = "plain-syntax" > ,< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Wordings::one_word< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Wordings::first_wn< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > var_documentation_symbol< / span > < span class = "plain-syntax" > )));< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > TEMPORARY_TEXT< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > contents< / span > < span class = "plain-syntax" > )< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Kinds::Textual::write< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > contents< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > nlv_kind< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < a href = "2-hrr.html#SP23" class = "function-link" > < span class = "function-syntax" > Hierarchy::apply_metadata< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > pack< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > VARIABLE_CONTENTS_MD_HL< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > contents< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > DISCARD_TEXT< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > contents< / span > < span class = "plain-syntax" > )< / span >
< span class = "plain-syntax" > }< / span >
2021-05-10 11:31:35 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > ((< / span > < a href = "5-vrb.html#SP12" class = "function-link" > < span class = "function-syntax" > RTVariables::stored_in_own_iname< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > )) ||< / span >
< span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > constant_at_run_time< / 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_name< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > = < / span > < a href = "5-vrb.html#SP11" class = "function-link" > < span class = "function-syntax" > RTVariables::iname< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > );< / span >
2021-09-19 14:47:18 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > nlv_name_translated< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ) {< / span >
2022-02-25 01:53:40 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > inter_pair< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > val< / span > < span class = "plain-syntax" > = < / span > < a href = "5-vrb.html#SP15" class = "function-link" > < span class = "function-syntax" > RTVariables::initial_value_as_pair< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > );< / span >
2022-03-14 00:39:41 +02:00
< span class = "plain-syntax" > < / span > < a href = "2-emt.html#SP13" class = "function-link" > < span class = "function-syntax" > Emit::variable< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > nlv_kind< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > val< / span > < span class = "plain-syntax" > );< / span >
2021-09-19 14:47:18 +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 = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > lvalue_nve< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > iname_form< / 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" > S< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > InterNames::to_symbol< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > iname< / 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" > H< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > InterNames::to_symbol< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > lvalue_nve< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > iname_form< / span > < span class = "plain-syntax" > );< / span >
2022-01-04 01:40:23 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Wiring::wire_to< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > S< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > H< / span > < span class = "plain-syntax" > );< / span >
2021-09-19 21:32:02 +03:00
< span class = "plain-syntax" > < / span > < a href = "2-hrr.html#SP23" class = "function-link" > < span class = "function-syntax" > Hierarchy::apply_metadata_from_iname< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > pack< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > VARIABLE_COUNTERPART_MD_HL< / span > < span class = "plain-syntax" > ,< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > lvalue_nve< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > iname_form< / span > < span class = "plain-syntax" > );< / span >
2021-09-19 14:47:18 +03:00
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > }< / span >
2021-06-06 14:01:16 +03:00
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "5-vrb.html#SP14_1" class = "named-paragraph-link" > < span class = "named-paragraph" > Add any anomalous extras< / span > < span class = "named-paragraph-number" > 14.1< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
2021-02-12 15:33:19 +02:00
< span class = "plain-syntax" > }< / span >
2021-05-17 11:18:28 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > max_score_VAR< / span > < span class = "plain-syntax" > ) {< / span >
2021-06-06 14:01:16 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > inter_name< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > = < / span > < a href = "2-hrr.html#SP12" class = "function-link" > < span class = "function-syntax" > Hierarchy::make_iname_in< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > INITIAL_MAX_SCORE_HL< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > pack< / span > < span class = "plain-syntax" > );< / span >
2021-05-17 11:18:28 +03:00
< span class = "plain-syntax" > < / span > < a href = "2-hrr.html#SP17" class = "function-link" > < span class = "function-syntax" > Hierarchy::make_available< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > iname< / 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" > VariableSubjects::has_initial_value_set< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > max_score_VAR< / span > < span class = "plain-syntax" > )) {< / span >
2022-03-14 00:39:41 +02:00
< span class = "plain-syntax" > < / span > < a href = "2-emt.html#SP10" class = "function-link" > < span class = "function-syntax" > Emit::initial_value_as_constant< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > max_score_VAR< / span > < span class = "plain-syntax" > );< / span >
2021-05-17 11:18:28 +03:00
< span class = "plain-syntax" > } < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > {< / span >
2022-03-14 00:39:41 +02:00
< span class = "plain-syntax" > < / span > < a href = "2-emt.html#SP6" class = "function-link" > < span class = "function-syntax" > Emit::numeric_constant< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > );< / span >
2021-05-17 11:18:28 +03:00
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > }< / span >
2021-05-10 11:31:35 +03:00
< span class = "plain-syntax" > }< / span >
2021-02-12 15:33:19 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
< / pre >
2021-06-06 14:01:16 +03:00
< p class = "commentary firstcommentary" > < a id = "SP14_1" class = "paragraph-anchor" > < / a > < b > § 14.1. < / b > Here, an Inter function is compiled which returns the current value of the
2021-02-12 15:33:19 +02:00
command prompt variable; see < a href = "../CommandParserKit/S-prs.html" class = "internal" > Parser (in CommandParserKit)< / a > .
< / p >
2021-06-06 14:01:16 +03:00
< p class = "commentary" > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Add any anomalous extras< / span > < span class = "named-paragraph-number" > 14.1< / span > < / span > < span class = "comment-syntax" > =< / span >
2021-02-12 15:33:19 +02:00
< / p >
< pre class = "displayed-code all-displayed-code code-font" >
2021-05-10 11:31:35 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > NonlocalVariables::command_prompt_variable< / span > < span class = "plain-syntax" > ()) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > inter_name< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > = < / span > < a href = "5-vrb.html#SP11" class = "function-link" > < span class = "function-syntax" > RTVariables::iname< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > inter_name< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > cpt_iname< / span > < span class = "plain-syntax" > =< / span >
< span class = "plain-syntax" > < / span > < a href = "2-hrr.html#SP12" class = "function-link" > < span class = "function-syntax" > Hierarchy::make_iname_in< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > COMMANDPROMPTTEXT_HL< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > InterNames::location< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > ));< / span >
2021-04-02 21:28:39 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > packaging_state< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > save< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Functions::begin< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > cpt_iname< / span > < span class = "plain-syntax" > );< / span >
2021-05-24 01:12:40 +03:00
< span class = "plain-syntax" > < / span > < a href = "2-ec.html#SP13" class = "function-link" > < span class = "function-syntax" > EmitCode::inv< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > RETURN_BIP< / span > < span class = "plain-syntax" > );< / span >
2021-04-17 17:28:28 +03:00
< span class = "plain-syntax" > < / span > < a href = "2-ec.html#SP3" class = "function-link" > < span class = "function-syntax" > EmitCode::down< / span > < / a > < span class = "plain-syntax" > ();< / span >
< span class = "plain-syntax" > < / span > < a href = "2-ec.html#SP7" class = "function-link" > < span class = "function-syntax" > EmitCode::val_iname< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > K_text< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < a href = "2-ec.html#SP3" class = "function-link" > < span class = "function-syntax" > EmitCode::up< / span > < / a > < span class = "plain-syntax" > ();< / span >
2021-04-02 21:28:39 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Functions::end< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > save< / span > < span class = "plain-syntax" > );< / span >
2021-04-21 14:02:18 +03:00
< span class = "plain-syntax" > < / span > < a href = "2-hrr.html#SP17" class = "function-link" > < span class = "function-syntax" > Hierarchy::make_available< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > cpt_iname< / span > < span class = "plain-syntax" > );< / span >
2021-02-12 15:33:19 +02:00
< span class = "plain-syntax" > }< / span >
< / pre >
2021-06-06 14:01:16 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "5-vrb.html#SP14" > § 14< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP15" class = "paragraph-anchor" > < / a > < b > § 15. Initial values. < / b > Three functions which all compile the initial value of a variable, in different
2021-05-10 11:31:35 +03:00
ways:
2021-02-15 14:10:54 +02:00
< / p >
< pre class = "displayed-code all-displayed-code code-font" >
2021-05-19 00:20:35 +03:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > RTVariables::initial_value_as_array_entry< / span > < button class = "popup" onclick = "togglePopup('usagePopup12')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup12" > Usage of < span class = "code-font" > < span class = "function-syntax" > RTVariables::initial_value_as_array_entry< / span > < / span > :< br / > The Player - < a href = "6-tp.html#SP1" > § 1< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nonlocal_variable< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > ) {< / span >
2021-02-15 14:10:54 +02: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" > INTER_DATA_VHMODE< / span > < span class = "plain-syntax" > );< / span >
2021-06-06 14:01:16 +03:00
< span class = "plain-syntax" > < / span > < a href = "5-vrb.html#SP16" class = "function-link" > < span class = "function-syntax" > RTVariables::holster_initial_value< / span > < / a > < span class = "plain-syntax" > (& < / span > < span class = "identifier-syntax" > VH< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > );< / span >
2022-02-25 01:53:40 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > inter_pair< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > val< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Holsters::unholster_to_pair< / span > < span class = "plain-syntax" > (& < / span > < span class = "identifier-syntax" > VH< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < a href = "2-ea.html#SP4" class = "function-link" > < span class = "function-syntax" > EmitArrays::generic_entry< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > val< / span > < span class = "plain-syntax" > );< / span >
2021-02-15 14:10:54 +02:00
< span class = "plain-syntax" > }< / span >
2021-05-10 11:31:35 +03:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > RTVariables::initial_value_as_val< / span > < button class = "popup" onclick = "togglePopup('usagePopup13')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup13" > Usage of < span class = "code-font" > < span class = "function-syntax" > RTVariables::initial_value_as_val< / span > < / span > :< br / > Shared Variables - < a href = "2-sv.html#SP1_1" > § 1.1< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nonlocal_variable< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > ) {< / span >
2021-02-15 14:10:54 +02: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" > INTER_VAL_VHMODE< / span > < span class = "plain-syntax" > );< / span >
2021-06-06 14:01:16 +03:00
< span class = "plain-syntax" > < / span > < a href = "5-vrb.html#SP16" class = "function-link" > < span class = "function-syntax" > RTVariables::holster_initial_value< / span > < / a > < span class = "plain-syntax" > (& < / span > < span class = "identifier-syntax" > VH< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > );< / span >
2021-04-15 00:57:48 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Holsters::unholster_to_code_val< / span > < span class = "plain-syntax" > (< / span > < a href = "2-emt.html#SP1" class = "function-link" > < span class = "function-syntax" > Emit::tree< / span > < / a > < span class = "plain-syntax" > (), & < / span > < span class = "identifier-syntax" > VH< / span > < span class = "plain-syntax" > );< / span >
2021-02-15 14:10:54 +02:00
< span class = "plain-syntax" > }< / span >
2022-03-14 00:39:41 +02:00
< span class = "identifier-syntax" > inter_pair< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > RTVariables::initial_value_as_pair< / span > < button class = "popup" onclick = "togglePopup('usagePopup14')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup14" > Usage of < span class = "code-font" > < span class = "function-syntax" > RTVariables::initial_value_as_pair< / span > < / span > :< br / > < a href = "5-vrb.html#SP14" > § 14< / a > < br / > Emit - < a href = "2-emt.html#SP10" > § 10< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > inter_name< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > nonlocal_variable< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > ) {< / span >
2021-04-17 17:28:28 +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" > INTER_DATA_VHMODE< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > packaging_state< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > save< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Packaging::enter_home_of< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > );< / span >
2021-06-06 14:01:16 +03:00
< span class = "plain-syntax" > < / span > < a href = "5-vrb.html#SP16" class = "function-link" > < span class = "function-syntax" > RTVariables::holster_initial_value< / span > < / a > < span class = "plain-syntax" > (& < / span > < span class = "identifier-syntax" > VH< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > );< / span >
2022-02-25 01:53:40 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > inter_pair< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > val< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Holsters::unholster_to_pair< / span > < span class = "plain-syntax" > (& < / span > < span class = "identifier-syntax" > VH< / span > < span class = "plain-syntax" > );< / span >
2021-04-17 17:28:28 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Packaging::exit< / span > < span class = "plain-syntax" > (< / span > < a href = "2-emt.html#SP1" class = "function-link" > < span class = "function-syntax" > Emit::tree< / span > < / a > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > save< / span > < span class = "plain-syntax" > );< / span >
2022-02-25 01:53:40 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > val< / span > < span class = "plain-syntax" > ;< / span >
2021-02-15 14:10:54 +02:00
< span class = "plain-syntax" > }< / span >
2021-05-10 11:31:35 +03:00
< / pre >
2021-06-06 14:01:16 +03:00
< p class = "commentary firstcommentary" > < a id = "SP16" class = "paragraph-anchor" > < / a > < b > § 16. < / b > Which are all powered by the following function.
2021-05-10 11:31:35 +03:00
< / p >
< p class = "commentary" > If the variable has no known initial value, it is given the initial
value for its kind where possible: but note that this may not be possible
if the source text says something like
< / p >
< blockquote >
< p > Thickness is a kind of value. The carpet nap is a thickness that varies.< / p >
< / blockquote >
2021-02-15 14:10:54 +02:00
2021-05-10 11:31:35 +03:00
< p class = "commentary" > without specifying any thicknesses. If that's so, the set of legal thickness
values is empty, so the "carpet nap" variable cannot be created in a way
which makes its kind safe.
< / p >
< pre class = "displayed-code all-displayed-code code-font" >
2021-06-06 14:01:16 +03:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > RTVariables::holster_initial_value< / span > < button class = "popup" onclick = "togglePopup('usagePopup15')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup15" > Usage of < span class = "code-font" > < span class = "function-syntax" > RTVariables::holster_initial_value< / span > < / span > :< br / > < a href = "5-vrb.html#SP15" > § 15< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > value_holster< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > VH< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > nonlocal_variable< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > ) {< / span >
2021-02-15 14:10:54 +02: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 >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > NonlocalVariables::substitute_constants< / span > < span class = "plain-syntax" > (< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > VariableSubjects::get_initial_value< / span > < span class = "plain-syntax" > (< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > nlv< / 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" > Node::is< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > val< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > UNKNOWN_NT< / span > < span class = "plain-syntax" > )) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > current_sentence< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > nlv_created_at< / span > < span class = "plain-syntax" > ;< / span >
2021-06-06 14:01:16 +03:00
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "5-vrb.html#SP16_1" class = "named-paragraph-link" > < span class = "named-paragraph" > Initialise with the default value of its kind< / span > < span class = "named-paragraph-number" > 16.1< / span > < / a > < / span >
2021-02-15 14:10:54 +02: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" > current_sentence< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > VariableSubjects::origin_of_initial_value< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nlv< / 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" > Lvalues::get_storage_form< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > val< / span > < span class = "plain-syntax" > ) == < / span > < span class = "identifier-syntax" > NONLOCAL_VARIABLE_NT< / span > < span class = "plain-syntax" > )< / span >
2021-06-06 14:01:16 +03:00
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "5-vrb.html#SP16_2" class = "named-paragraph-link" > < span class = "named-paragraph" > Issue a problem for one variable set equal to another< / span > < span class = "named-paragraph-number" > 16.2< / span > < / a > < / span >
2021-04-08 17:06:01 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > CompileValues::constant_to_holster< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > VH< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > val< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > nlv_kind< / span > < span class = "plain-syntax" > );< / span >
2021-02-15 14:10:54 +02:00
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > }< / span >
< / pre >
2021-06-06 14:01:16 +03:00
< p class = "commentary firstcommentary" > < a id = "SP16_1" class = "paragraph-anchor" > < / a > < b > § 16.1. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Initialise with the default value of its kind< / span > < span class = "named-paragraph-number" > 16.1< / span > < / span > < span class = "comment-syntax" > =< / span >
2021-02-15 14:10:54 +02:00
< / p >
< pre class = "displayed-code all-displayed-code code-font" >
2022-05-18 02:45:14 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < a href = "2-dv.html#SP1" class = "function-link" > < span class = "function-syntax" > DefaultValues::to_holster< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > VH< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > nlv_kind< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > name< / span > < span class = "plain-syntax" > , < / span > < span class = "string-syntax" > "variable"< / 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" > FALSE< / span > < span class = "plain-syntax" > ) {< / span >
2021-02-15 14:10:54 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > var_is_allowed_to_be_zero< / span > < span class = "plain-syntax" > ) {< / span >
2022-02-25 01:53:40 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Holsters::holster_pair< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > VH< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > InterValuePairs::number< / span > < span class = "plain-syntax" > (0));< / span >
2021-02-15 14:10:54 +02: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" > wording< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Kinds::Behaviour::get_name< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > nlv_kind< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > );< / span >
2021-06-23 02:23:35 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_wording< / span > < span class = "plain-syntax" > (1, < / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > name< / span > < span class = "plain-syntax" > );< / span >
2021-02-15 14:10:54 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_wording< / span > < span class = "plain-syntax" > (2, < / span > < span class = "identifier-syntax" > W< / 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_EmptyDataType< / span > < span class = "plain-syntax" > ));< / span >
< 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" > "I am unable to put any value into the variable '%1', because "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "%2 is a kind of value with no actual values."< / 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 >
< / pre >
2021-06-06 14:01:16 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "5-vrb.html#SP16" > § 16< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP16_2" class = "paragraph-anchor" > < / a > < b > § 16.2. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Issue a problem for one variable set equal to another< / span > < span class = "named-paragraph-number" > 16.2< / span > < / span > < span class = "comment-syntax" > =< / span >
2021-02-15 14:10:54 +02:00
< / p >
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > nonlocal_variable< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > the_other< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Node::get_constant_nonlocal_variable< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > val< / 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" > the_other< / 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 = "plain-syntax" > < / span > < span class = "string-syntax" > "Tried to compile initial value of variable as null variable"< / 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" > the_other< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > nlv< / 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 >
2021-06-23 02:23:35 +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" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > name< / span > < span class = "plain-syntax" > );< / span >
2021-02-15 14:10:54 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_kind< / span > < span class = "plain-syntax" > (3, < / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > nlv_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_InitialiseQ2< / span > < span class = "plain-syntax" > ));< / span >
< 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 sentence %1 tells me that '%2', which should be %3 "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "that varies, is to have an initial value equal to itself - "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "this is such an odd thing to say that I think I must have "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "misunderstood."< / 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 >
< 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 >
2021-06-23 02:23:35 +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" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > name< / span > < span class = "plain-syntax" > );< / span >
2021-02-15 14:10:54 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_kind< / span > < span class = "plain-syntax" > (3, < / span > < span class = "identifier-syntax" > nlv< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > nlv_kind< / span > < span class = "plain-syntax" > );< / span >
2021-06-23 02:23:35 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_wording< / span > < span class = "plain-syntax" > (4, < / span > < span class = "identifier-syntax" > the_other< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > name< / span > < span class = "plain-syntax" > );< / span >
2021-02-15 14:10:54 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_kind< / span > < span class = "plain-syntax" > (5, < / span > < span class = "identifier-syntax" > the_other< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > nlv_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_InitialiseQ1< / span > < span class = "plain-syntax" > ));< / span >
< 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 sentence %1 tells me that '%2', which should be %3 "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "that varies, is to have an initial value equal to '%4', "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "which in turn is %5 that varies. At the start of play, "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "variable values have to be set equal to definite constants, "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "so this is not allowed."< / 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 >
< / pre >
2021-06-06 14:01:16 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "5-vrb.html#SP16" > § 16< / a > .< / li > < / ul >
2021-02-12 15:33:19 +02:00
< nav role = "progress" > < div class = "progresscontainer" >
2022-09-22 01:39:34 +03:00
< ul class = "progressbar" > < li class = "progressprev" > < a href = "5-rlb.html" > ❮ < / a > < / li > < li class = "progresschapter" > < a href = "P-wtmd.html" > P< / a > < / li > < li class = "progresschapter" > < a href = "1-rm.html" > 1< / a > < / li > < li class = "progresschapter" > < a href = "2-hrr.html" > 2< / a > < / li > < li class = "progresschapter" > < a href = "3-gm.html" > 3< / a > < / li > < li class = "progresschapter" > < a href = "4-enc.html" > 4< / a > < / li > < li class = "progresscurrentchapter" > 5< / li > < li class = "progresssection" > < a href = "5-act.html" > act< / a > < / li > < li class = "progresssection" > < a href = "5-adj.html" > adj< / a > < / li > < li class = "progresssection" > < a href = "5-chr.html" > chr< / a > < / li > < li class = "progresssection" > < a href = "5-cnj.html" > cnj< / a > < / li > < li class = "progresssection" > < a href = "5-eqt.html" > eqt< / a > < / li > < li class = "progresssection" > < a href = "5-ins.html" > ins< / a > < / li > < li class = "progresssection" > < a href = "5-bi.html" > bi< / a > < / li > < li class = "progresssection" > < a href = "5-di.html" > di< / a > < / li > < li class = "progresssection" > < a href = "5-ri.html" > ri< / a > < / li > < li class = "progresssection" > < a href = "5-si.html" > si< / a > < / li > < li class = "progresssection" > < a href = "5-mlt.html" > mlt< / a > < / li > < li class = "progresssection" > < a href = "5-tbl.html" > tbl< / a > < / li > < li class = "progresssection" > < a href = "5-tc.html" > tc< / a > < / li > < li class = "progresssection" > < a href = "5-dbi.html" > dbi< / a > < / li > < li class = "progresssection" > < a href = "5-dli.html" > dli< / a > < / li > < li class = "progresssection" > < a href = "5-dci.html" > dci< / a > < / li > < li class = "progresssection" > < a href = "5-rls.html" > rls< / a > < / li > < li class = "progresssection" > < a href = "5-rlb.html" > rlb< / a > < / li > < li class = "progresscurrent" > vrb< / li > < li class = "progresssection" > < a href = "5-prp.html" > prp< / a > < / li > < li class = "progresssection" > < a href = "5-rlt.html" > rlt< / a > < / li > < li class = "progresssection" > < a href = "5-lp.html" > lp< / a > < / li > < li class = "progresssection" > < a href = "5-kc.html" > kc< / a > < / li > < li class = "progresssection" > < a href = "5-ki.html" > ki< / a > < / li > < li class = "progresssection" > < a href = "5-act2.html" > act2< / a > < / li > < li class = "progresssection" > < a href = "5-nap.html" > nap< / a > < / li > < li class = "progresssection" > < a href = "5-ts.html" > ts< / a > < / li > < li class = "progresschapter" > < a href = "6-bd.html" > 6< / a > < / li > < li class = "progresschapter" > < a href = "7-cg.html" > 7< / a > < / li > < li class = "progressnext" > < a href = "5-prp.html" > ❯ < / a > < / li > < / ul > < / div >
2021-02-12 15:33:19 +02:00
< / nav > <!-- End of weave -->
< / main >
< / body >
< / html >