2020-08-26 00:27:06 +03:00
< html >
< head >
< title > imperative< / 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" >
< / head >
< body class = "commentary-font" >
< nav role = "navigation" >
< h1 > < a href = "../index.html" >
< img src = "../docs-assets/Inform.png" height = 72" >
< / a > < / h1 >
< ul > < li > < a href = "../compiler.html" > compiler tools< / a > < / li >
< li > < a href = "../other.html" > other tools< / a > < / li >
< li > < a href = "../extensions.html" > extensions and kits< / a > < / li >
< li > < a href = "../units.html" > unit test tools< / a > < / li >
< / ul > < h2 > Compiler Webs< / h2 > < ul >
< li > < a href = "../inbuild/index.html" > inbuild< / a > < / li >
< li > < a href = "../inform7/index.html" > inform7< / a > < / li >
< li > < a href = "../inter/index.html" > inter< / a > < / li >
< / ul > < h2 > Inbuild Modules< / h2 > < ul >
< li > < a href = "../supervisor-module/index.html" > supervisor< / a > < / li >
< / ul > < h2 > Inform7 Modules< / h2 > < ul >
< li > < a href = "../core-module/index.html" > core< / a > < / li >
< li > < a href = "../assertions-module/index.html" > assertions< / a > < / li >
< li > < a href = "../values-module/index.html" > values< / a > < / li >
< li > < a href = "../knowledge-module/index.html" > knowledge< / a > < / li >
< li > < span class = "unlink" > imperative< / span > < / li >
< li > < a href = "../runtime-module/index.html" > runtime< / a > < / li >
< li > < a href = "../if-module/index.html" > if< / a > < / li >
< li > < a href = "../multimedia-module/index.html" > multimedia< / a > < / li >
< li > < a href = "../index-module/index.html" > index< / a > < / li >
< / ul > < h2 > Inter Modules< / h2 > < ul >
< li > < a href = "../bytecode-module/index.html" > bytecode< / a > < / li >
< li > < a href = "../building-module/index.html" > building< / a > < / li >
< li > < a href = "../codegen-module/index.html" > codegen< / a > < / li >
< / ul > < h2 > Services< / h2 > < ul >
< li > < a href = "../arch-module/index.html" > arch< / a > < / li >
< li > < a href = "../calculus-module/index.html" > calculus< / a > < / li >
< li > < a href = "../html-module/index.html" > html< / a > < / li >
< li > < a href = "../inflections-module/index.html" > inflections< / a > < / li >
< li > < a href = "../kinds-module/index.html" > kinds< / a > < / li >
< li > < a href = "../linguistics-module/index.html" > linguistics< / a > < / li >
< li > < a href = "../problems-module/index.html" > problems< / a > < / li >
< li > < a href = "../syntax-module/index.html" > syntax< / a > < / li >
< li > < a href = "../words-module/index.html" > words< / a > < / li >
< li > < a href = "../../../inweb/docs/foundation-module/index.html" > foundation< / a > < / li >
< / ul >
< / nav >
< main role = "main" >
2021-02-06 20:00:34 +02:00
< ul class = "crumbs" > < li > < a href = "../index.html" > Home< / a > < / li > < li > < a href = "../compiler.html" > Inform7< / a > < / li > < li > < b > imperative< / b > < / li > < / ul >
2020-08-26 00:27:06 +03:00
< p class = "purpose" > Compiling imperative code inside phrase or rule definitions. This is version 1.< / p >
< hr >
< div class = "contentspage" >
< ul class = "chapterlist" >
< li >
< p class = "chapterentry" > < a name = "P" > < / a >
< span class = "chaptertitle" > Preliminaries< / span > < / p >
< ul class = "sectionlist" >
< li >
< p class = "sectionentry" > < a href = "P-wtmd.html" >
< spon class = "sectiontitle" > What This Module Does< / span > < / a > -
< span class = "sectionpurpose" > An overview of the imperative module's role and abilities.< / span > < / p >
< / li >
< / ul >
< / li >
< li >
< p class = "chapterentry" > < a name = "1" > < / a >
< span class = "chaptertitle" > Chapter 1: Configuration and Control< / span > < / p >
< ul class = "sectionlist" >
< li >
< p class = "sectionentry" > < a href = "1-im.html" >
< spon class = "sectiontitle" > Imperative Module< / span > < / a > -
< span class = "sectionpurpose" > Setting up the use of this module.< / span > < / p >
< / li >
< / ul >
< / li >
2020-08-26 12:52:50 +03:00
< li >
< p class = "chapterentry" > < a name = "2" > < / a >
2021-03-30 00:53:01 +03:00
< span class = "chaptertitle" > Chapter 2: Compilation Context< / span > < / p >
2021-02-07 14:44:02 +02:00
< p class = "chapterpurpose" > Preparing a context at run-time in which code can be executed.< / p >
2020-08-26 12:52:50 +03:00
< ul class = "sectionlist" >
< li >
2021-03-30 00:53:01 +03:00
< p class = "sectionentry" > < a href = "2-lv.html" >
2020-08-26 12:52:50 +03:00
< spon class = "sectiontitle" > Local Variables< / span > < / a > -
< span class = "sectionpurpose" > Local variables are used for call parameters, temporary values, and other ephemeral workspace.< / span > < / p >
< / li >
2021-03-23 14:21:15 +02:00
< li >
2021-03-30 00:53:01 +03:00
< p class = "sectionentry" > < a href = "2-sv.html" >
2021-04-02 02:47:20 +03:00
< spon class = "sectiontitle" > Shared Variables< / span > < / a > -
< span class = "sectionpurpose" > Shared variables are held in common by all rules in a given rulebook.< / span > < / p >
2021-03-23 14:21:15 +02:00
< / li >
2020-08-26 12:52:50 +03:00
< li >
2021-03-30 00:53:01 +03:00
< p class = "sectionentry" > < a href = "2-pb.html" >
2020-08-26 12:52:50 +03:00
< spon class = "sectiontitle" > Phrase Blocks< / span > < / a > -
< span class = "sectionpurpose" > Blocks of code are used to give conditionals and loops greater scope, as in more traditional programming languages.< / span > < / p >
< / li >
< li >
2021-03-30 00:53:01 +03:00
< p class = "sectionentry" > < a href = "2-sf.html" >
2020-08-26 12:52:50 +03:00
< spon class = "sectiontitle" > Stack Frames< / span > < / a > -
2021-04-02 02:47:20 +03:00
< span class = "sectionpurpose" > When Inform compiles imperative code, it does so in the context of a "stack frame".< / span > < / p >
2020-08-26 12:52:50 +03:00
< / li >
< li >
2021-03-30 00:53:01 +03:00
< p class = "sectionentry" > < a href = "2-chr.html" >
2020-08-26 12:52:50 +03:00
< spon class = "sectiontitle" > Chronology< / span > < / a > -
< span class = "sectionpurpose" > To keep track of the state of things so that it will be possible in future to ask questions concerning the past.< / span > < / p >
< / li >
< / ul >
< / li >
< li >
2021-03-30 00:53:01 +03:00
< p class = "chapterentry" > < a name = "3" > < / a >
< span class = "chaptertitle" > Chapter 3: Compiling Propositions< / span > < / p >
2021-02-07 14:44:02 +02:00
< p class = "chapterpurpose" > Generating code to test or assert propositions from predicate calculus.< / p >
< ul class = "sectionlist" >
< li >
2021-03-30 00:53:01 +03:00
< p class = "sectionentry" > < a href = "3-cfs.html" >
2021-02-07 14:44:02 +02:00
< spon class = "sectiontitle" > Compiling from Specifications< / span > < / a > -
< span class = "sectionpurpose" > To compile specifications into Inform 6 values, conditions or void expressions.< / span > < / p >
< / li >
< li >
2021-03-30 00:53:01 +03:00
< p class = "sectionentry" > < a href = "3-efs.html" >
2021-02-07 14:44:02 +02:00
< spon class = "sectiontitle" > Emitting from Schemas< / span > < / a > -
< span class = "sectionpurpose" > Here we emit code from an I6 schema.< / span > < / p >
< / li >
< li >
2021-03-30 00:53:01 +03:00
< p class = "sectionentry" > < a href = "3-ca.html" >
2021-02-07 14:44:02 +02:00
< spon class = "sectiontitle" > Compile Atoms< / span > < / a > -
< span class = "sectionpurpose" > In this section, given an atom of a proposition we compile I6 code as required for any of three possible outcomes: (i) to test whether it is true, (ii) to make it henceforth true, or (iii) to make it henceforth false.< / span > < / p >
< / li >
< li >
2021-03-30 00:53:01 +03:00
< p class = "sectionentry" > < a href = "3-dtd.html" >
2021-02-07 14:44:02 +02:00
< spon class = "sectiontitle" > Deciding to Defer< / span > < / a > -
< span class = "sectionpurpose" > To decide whether a proposition can be compiled immediately, in the body of the current routine, or whether it must be deferred to a routine of its own, which is called from the current routine.< / span > < / p >
< / li >
< li >
2021-03-30 00:53:01 +03:00
< p class = "sectionentry" > < a href = "3-cad.html" >
2021-02-07 14:44:02 +02:00
< spon class = "sectiontitle" > Cinders and Deferrals< / span > < / a > -
< span class = "sectionpurpose" > To compile terms, having carefully preserved any constants which might have been lost in the process of deferring a proposition (such tricky constants being called "cinders").< / span > < / p >
< / li >
< li >
2021-03-30 00:53:01 +03:00
< p class = "sectionentry" > < a href = "3-cdp.html" >
2021-02-07 14:44:02 +02:00
< spon class = "sectiontitle" > Compile Deferred Propositions< / span > < / a > -
< span class = "sectionpurpose" > To compile the I6 routines needed to perform the tests or tasks deferred as being too difficult in their original contexts.< / span > < / p >
< / li >
< / ul >
< / li >
< li >
2021-03-30 00:53:01 +03:00
< p class = "chapterentry" > < a name = "4" > < / a >
< span class = "chaptertitle" > Chapter 4: Compiling Invocations< / span > < / p >
2020-08-26 12:52:50 +03:00
< p class = "chapterpurpose" > Generating code to perform individual phrases.< / p >
< ul class = "sectionlist" >
< li >
2021-03-30 00:53:01 +03:00
< p class = "sectionentry" > < a href = "4-inv.html" >
2020-08-26 12:52:50 +03:00
< spon class = "sectiontitle" > Invocations< / span > < / a > -
< span class = "sectionpurpose" > Specifications which ask to use a phrase (which are "phrasal") indicate which phrase they intend by means of a list of "invocations". This list goes on to record the outcome of type-checking and provides instructions for code generation, as we see here.< / span > < / p >
< / li >
< li >
2021-03-30 00:53:01 +03:00
< p class = "sectionentry" > < a href = "4-pi.html" >
2020-08-26 12:52:50 +03:00
< spon class = "sectiontitle" > Parse Invocations< / span > < / a > -
< span class = "sectionpurpose" > To register phrases with the excerpt parser, and to provide the excerpt parser with help in putting invocations together.< / span > < / p >
< / li >
< li >
2021-03-30 00:53:01 +03:00
< p class = "sectionentry" > < a href = "4-ci.html" >
2020-08-26 12:52:50 +03:00
< spon class = "sectiontitle" > Compile Invocations< / span > < / a > -
< span class = "sectionpurpose" > Here we generate Inform 6 code to execute the phrase(s) called for by an invocation list.< / span > < / p >
< / li >
< li >
2021-03-30 00:53:01 +03:00
< p class = "sectionentry" > < a href = "4-ciac.html" >
2020-08-26 12:52:50 +03:00
< spon class = "sectiontitle" > Compile Invocations As Calls< / span > < / a > -
< span class = "sectionpurpose" > Here we generate Inform 6 code to execute the phrase(s) called for by an invocation list.< / span > < / p >
< / li >
< li >
2021-03-30 00:53:01 +03:00
< p class = "sectionentry" > < a href = "4-cii.html" >
2020-08-26 12:52:50 +03:00
< spon class = "sectiontitle" > Compile Invocations Inline< / span > < / a > -
< span class = "sectionpurpose" > Here we generate Inform 6 code to execute the phrase(s) called for by an invocation list.< / span > < / p >
< / li >
< li >
2021-03-30 00:53:01 +03:00
< p class = "sectionentry" > < a href = "4-cp.html" >
2020-08-26 12:52:50 +03:00
< spon class = "sectiontitle" > Compile Phrases< / span > < / a > -
< span class = "sectionpurpose" > Phrases defined with a list of invocations, rather than inline, have to be compiled to I6 routines, and this is where we organise that.< / span > < / p >
< / li >
< li >
2021-03-30 00:53:01 +03:00
< p class = "sectionentry" > < a href = "4-ca.html" >
2020-08-26 12:52:50 +03:00
< spon class = "sectiontitle" > Compile Arithmetic< / span > < / a > -
< span class = "sectionpurpose" > To compile code performing an arithmetic operation.< / span > < / p >
< / li >
2021-02-07 14:44:02 +02:00
< li >
2021-03-30 00:53:01 +03:00
< p class = "sectionentry" > < a href = "4-cste.html" >
2021-02-07 14:44:02 +02:00
< spon class = "sectiontitle" > Compile Solutions to Equations< / span > < / a > -
< span class = "sectionpurpose" > To compile code to solve an equation involving numerical quantities.< / span > < / p >
< / li >
2020-08-26 12:52:50 +03:00
< / ul >
< / li >
2020-08-26 00:27:06 +03:00
< / ul >
< / div >
< hr >
< p class = "purpose" > Powered by < a href = "https://github.com/ganelson/inweb" > Inweb< / a > .< / p >
< / main >
< / body >
< / html >