1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-07-16 22:14:23 +03:00
inform7/docs/imperative-module/index.html
2021-04-02 00:47:20 +01:00

211 lines
11 KiB
HTML

<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">
<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>
<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>
<li>
<p class="chapterentry"><a name="2"></a>
<span class="chaptertitle">Chapter 2: Compilation Context</span></p>
<p class="chapterpurpose">Preparing a context at run-time in which code can be executed.</p>
<ul class="sectionlist">
<li>
<p class="sectionentry"><a href="2-lv.html">
<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>
<li>
<p class="sectionentry"><a href="2-sv.html">
<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>
</li>
<li>
<p class="sectionentry"><a href="2-pb.html">
<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>
<p class="sectionentry"><a href="2-sf.html">
<spon class="sectiontitle">Stack Frames</span></a> -
<span class="sectionpurpose">When Inform compiles imperative code, it does so in the context of a "stack frame".</span></p>
</li>
<li>
<p class="sectionentry"><a href="2-chr.html">
<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>
<p class="chapterentry"><a name="3"></a>
<span class="chaptertitle">Chapter 3: Compiling Propositions</span></p>
<p class="chapterpurpose">Generating code to test or assert propositions from predicate calculus.</p>
<ul class="sectionlist">
<li>
<p class="sectionentry"><a href="3-cfs.html">
<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>
<p class="sectionentry"><a href="3-efs.html">
<spon class="sectiontitle">Emitting from Schemas</span></a> -
<span class="sectionpurpose">Here we emit code from an I6 schema.</span></p>
</li>
<li>
<p class="sectionentry"><a href="3-ca.html">
<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>
<p class="sectionentry"><a href="3-dtd.html">
<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>
<p class="sectionentry"><a href="3-cad.html">
<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>
<p class="sectionentry"><a href="3-cdp.html">
<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>
<p class="chapterentry"><a name="4"></a>
<span class="chaptertitle">Chapter 4: Compiling Invocations</span></p>
<p class="chapterpurpose">Generating code to perform individual phrases.</p>
<ul class="sectionlist">
<li>
<p class="sectionentry"><a href="4-inv.html">
<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>
<p class="sectionentry"><a href="4-pi.html">
<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>
<p class="sectionentry"><a href="4-ci.html">
<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>
<p class="sectionentry"><a href="4-ciac.html">
<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>
<p class="sectionentry"><a href="4-cii.html">
<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>
<p class="sectionentry"><a href="4-cp.html">
<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>
<p class="sectionentry"><a href="4-ca.html">
<spon class="sectiontitle">Compile Arithmetic</span></a> -
<span class="sectionpurpose">To compile code performing an arithmetic operation.</span></p>
</li>
<li>
<p class="sectionentry"><a href="4-cste.html">
<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>
</ul>
</li>
</ul>
</div>
<hr>
<p class="purpose">Powered by <a href="https://github.com/ganelson/inweb">Inweb</a>.</p>
</main>
</body>
</html>