Compiling imperative code inside phrase or rule definitions. This is version 1.
-
-
What This Module Does - An overview of the imperative module's role and abilities.
-
-
Chapter 1: Configuration and Control
-
Imperative Module - Setting up the use of this module.
-
-
Compiling rvalues, lvalues and conditions.
-
Compile Values - To compile specifications of values into Inter value opcodes or array entries. -
Compile Rvalues - To compile rvalues into Inter value opcodes or array entries. -
Compile Lvalues - To compile storage references into Inter value opcodes. -
Compile Conditions - To compile Inter code to test a condition. -
Matching Action Patterns - Testing whether the current action matches an action pattern means compiling a complicated multi-clause condition, which is what this section does. -
Matching Going Action Patterns - Tweaks to compiling APs for the going action.
-
-
Managing the compilation of Inter functions.
-
Stack Frames - When Inform compiles imperative code, it does so in the context of a "stack frame". -
Local Variable Slates - The collection of Inter locals belonging to a stack frame. -
Local Variables - Local variables are used for call parameters, temporary values, and other ephemeral workspace. -
Temporary Variables - When the runtime code needs to borrow a global variable for a while. -
Local Parking - Like Free Parking in Monopoly, except that it is not free and has an overhead cost. -
Code Blocks - Blocks of code are used to give conditionals and loops greater scope, as in more traditional programming languages. -
Functions - To compile Inter functions. -
Jump Labels - Generating numbered families of identifier names to use as jump labels, and creating any associated array storage needed. -
Phrase Requests - To store and later fill requests to compile To... phrases. -
Closures - To provide the names of phrases as first-class values. -
Compile Imperative Definitions - Compiling an Inter function from the body of an imperative definition.
-
-
Generating code to test or assert propositions from predicate calculus.
-
Compile Schemas - Here we compile fragments of code from paraphrases written in Inform 6 notation, and use that ability to compile general predicate calculus terms. -
Compile Atoms - Given an atom of a proposition we compile Inter code to test it, to make it henceforth true, or to make it henceforth false. -
Compile Propositions - To compile a proposition within the body of the current function. -
Compile Loops - To compile loop headers from a range of values expressed by a proposition. -
Deciding to Defer - To decide whether a proposition can be compiled immediately, in the body of the current function, or whether it must be deferred to a function of its own, which is merely called from the current function. -
Cinders and Deferrals - Cinders are constants in deferred propositions referring to values in the original stack frame. -
Compile Deferred Propositions - To compile the Inter functions needed to perform the tests or tasks deferred as being too difficult in their original contexts.
-
-
Generating code to perform invocations of individual phrases.
-
Compile Blocks and Lines - Compiling a code block of lines from an imperative definition. -
Compile Invocations - Generating code to perform an invocation. -
Compile Invocations As Calls - An invocation defined with Inform 7 source text is made with an Inter function call. -
Compile Invocations Inline - Here we generate Inter code to invoke a phrase from its inline definition. -
Compile Solutions to Equations - To compile code to solve an equation involving numerical quantities. -
Compile Arithmetic - To compile code performing an arithmetic operation.
-
Powered by Inweb.