This plain text file is an organised collection of notes on the main Inform compiler algorithms and data structures.
Open Source
Technical Manual
Inform Technical Manual (6.30)
Download
This is the complete text of the Inform Technical Manual, in plain text format.
Chapter 1 - The source code (6.30)
Download
1.1 - Inventory; 1.2 - Map; 1.3 - Naming conventions; 1.4 - Typedef-named types
Chapter 2 - Porting Inform to a new environment (6.30)
Download
2.1 - Dependence on the OS; 2.2 - Portability issues: the types int32 and uchar; 2.3 - The character set and the format of text files; 2.4 - The OS definitions block in "header.h"; 2.5 - Running Inform in a multi-tasking OS
Chapter 3 - Front end (6.30)
Download
3.1 - The ICL interpreter; 3.2 - Fundamental method
Chapter 4 - Lexical analysis (6.30)
Download
4.1 - Aim and structure of the lexer; 4.2 - Level 1: lexical blocks and buffered input; 4.3 - Level 2: breaking text into lexemes; 4.4 - Representation of tokens; 4.5 - Level 3: identifying identifiers; 4.6 - Hash-coding and comparing names; 4.7 - The symbols table; 4.8 - Token lookahead: the circle; 4.9 - Summary of the token output
Chapter 5 - Syntax analysis 1: the top-down structural parser (6.30)
Download
5.1 - Aim and structure of the syntax analyser; 5.2 - Predictive parsing; 5.3 - The context-free grammar; 5.4 - Assigning values to symbols; 5.5 - Outputs other than assembly language; 5.6 - Assembly operands; 5.7 - Translation to assembly language; 5.8 - Summary of assembly language instructions output
Chapter 6 - Syntax analysis 2: the bottom-up expression parser (6.30)
Download
6.1 - Map and structure; 6.2 - The operator precedence grammar; 6.3 - Lexical level 4: tokens to etokens; 6.4 - Resolution of ambiguous tokens; 6.5 - Constant folding; 6.6 - Checking lvalues and simplifying the parse tree; 6.7 - Summary of parse tree output
Chapter 7 - Code generation from parse trees (6.30)
Download
7.1 - Aim and structure of the code generator; 7.2 - Annotation for conditions; 7.3 - Main traversal; 7.4 - Void context; 7.5 - Results of subexpressions; 7.6 - Conditional and logical operators; 7.7 - System functions; 7.8 - Strict mode assertions
Chapter 8 - Assembly of code, text and data structures (6.30)
Download
8.1 - Assembly of initial code; 8.2 - Branch offset backpatching and optimisation; 8.3 - Text translation: ISO and Unicode resolution; 8.4 - Dictionary management; 8.5 - Format of tables unspecified by the Z-machine; 8.6 - Grammar version numbers GV1 and GV2; 8.7 - Value backpatching; 8.8 - Packed address decoding
Chapter 9 - Run-time veneer (6.30)
Download
9.1 - Services provided by the veneer; 9.2 - Specification of the veneer routines; 9.3 - Properties 2 and 3, "ofclass" and "metaclass"; 9.4 - Class numbering and class objects; 9.5 - Individual property identifiers; 9.6 - Individual property tables; 9.7 - Availability of symbol names at run-time
Chapter 10 - Module compilation and linking (6.30)
Download
10.1 - Model; 10.2 - Linking a module; 10.3 - Imports and exports; 10.4 - Backpatch backpatching; 10.5 - How modules differ from story files; 10.6 - Restrictions on what modules may contain
Chapter 11 - Service levels (6.30)
Download
11.1 - Variables and arrays; 11.2 - Memory allocation and deallocation; 11.3 - Error messages; 11.4 - File input/output
Chapter 12 - Low-level language features (6.30)
Download
12.1 - Using the "Trace" directive; 12.2 - System constants and other secret syntaxes; 12.3 - The "Zcharacter" directive; 12.4 - Sequence points; 12.5 - Format of debugging information files; 12.6 - How to syntax-colour Inform code
Chapter 13 - What little I remember (6.30)
Download
13.1 - Publication history; 13.2 - Design history; 13.3 - Implementation history; 13.4 - Modification history
Last updated 27 February 2004.
This site is no longer supported; information may be out of date.
Maintained as a historical archive by the Interactive Fiction Technology Foundation.
Copyright 1993-2018 IFTF, CC-BY-SA unless otherwise noted.
This page was originally managed by Graham Nelson (graham@gnelson.demon.co.uk) assisted by C Knight.