Inform - Support - Source

Open Source  

Library  
Compiler  
Technical Manual  

Technical Manual

This plain text file is an organised collection of notes on the main Inform compiler algorithms and data structures.

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 web site has not been fully supported since April 2008. Information may be out of date. This page was originally managed by Graham Nelson (graham@gnelson.demon.co.uk) assisted by C Knight.