2020-03-19 02:11:25 +02:00
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
< html >
< head >
2020-04-14 19:56:54 +03:00
< title > Complete Program< / title >
2020-05-03 03:20:55 +03:00
< link href = "docs-assets/Breadcrumbs.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
2020-03-19 02:11:25 +02:00
< 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" >
2020-05-03 03:20:55 +03:00
< 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" >
< link href = "docs-assets/Colours.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
2020-04-14 19:56:54 +03:00
2020-03-19 02:11:25 +02:00
< / head >
2020-05-03 03:01:21 +03:00
< body class = "commentary-font" >
2020-03-19 02:11:25 +02:00
< nav role = "navigation" >
2020-04-14 19:56:54 +03:00
< h1 > < a href = "index.html" >
2020-05-03 18:34:53 +03:00
< img src = "docs-assets/Inform.png" height = 72" >
2020-04-14 19:56:54 +03:00
< / a > < / h1 >
< ul > < li > < a href = "compiler.html" > compiler tools< / a > < / li >
2020-03-19 02:11:25 +02:00
< li > < a href = "other.html" > other tools< / a > < / li >
2020-04-14 19:56:54 +03:00
< li > < span class = "unlink" > extensions and kits< / span > < / li >
2020-03-19 02:11:25 +02:00
< li > < a href = "units.html" > unit test tools< / a > < / li >
2020-04-14 19:56:54 +03:00
< / ul > < h2 > Extensions< / h2 > < ul >
< li > < a href = "basic_inform/index.html" > basic_inform< / a > < / li >
< li > < a href = "standard_rules/index.html" > standard_rules< / a > < / li >
< / ul > < h2 > Kits< / h2 > < ul >
2020-03-19 02:11:25 +02:00
< li > < a href = "BasicInformKit/index.html" > BasicInformKit< / a > < / li >
< li > < a href = "BasicInformExtrasKit/index.html" > BasicInformExtrasKit< / a > < / li >
< li > < a href = "CommandParserKit/index.html" > CommandParserKit< / a > < / li >
< li > < a href = "EnglishLanguageKit/index.html" > EnglishLanguageKit< / a > < / li >
< li > < a href = "WorldModelKit/index.html" > WorldModelKit< / a > < / li >
2020-04-14 19:56:54 +03:00
< / ul >
2020-03-19 02:11:25 +02:00
< / nav >
< main role = "main" >
2020-05-03 03:01:21 +03:00
<!-- Weave of 'Complete Program' generated by Inweb -->
< div class = "breadcrumbs" >
< ul class = "crumbs" > < li > < a href = "index.html" > Home< / a > < / li > < li > < b > Extensions and Kits< / b > < / li > < / ul > < / div >
< ul class = "toc" > < li > < a href = "S-all.html#SP1" > § 1. Extensions< / a > < / li > < li > < a href = "S-all.html#SP2" > § 2. Kits< / a > < / li > < / ul > < hr class = "tocbar" >
< p class = "commentary firstcommentary" > < a id = "SP1" > < / a > < b > § 1. Extensions. < / b > An "extension" is a supplementary piece of Inform 7 source text. Inform
2020-04-14 19:56:54 +03:00
programs sometimes explicitly ask for these, with sentences like so:
< / p >
< blockquote >
< p > Include Locksmith by Emily Short.< / p >
< / blockquote >
2020-05-03 03:01:21 +03:00
< p class = "commentary" > Their presence can also be implicitly required by the use of certain kits.
2020-04-14 19:56:54 +03:00
For example, if < a href = "BasicInformKit/index.html" class = "internal" > BasicInformKit< / a > is used (and it always is), then the
extension Basic Inform by Graham Nelson (< a href = "basic_inform/index.html" class = "internal" > basic_inform< / a > ) is auto-included.
Similarly, use of either < a href = "WorldModelKit/index.html" class = "internal" > WorldModelKit< / a > or < a href = "CommandParserKit/index.html" class = "internal" > CommandParserKit< / a > mandates
the inclusion of the Standard Rules for interactive fiction (< a href = "standard_rules/index.html" class = "internal" > standard_rules< / a > ).
< / p >
2020-05-03 03:01:21 +03:00
< p class = "commentary" > The Inform GUI apps come with numerous other built-in extensions besides these
2020-04-14 19:56:54 +03:00
two, but all are smaller and easier to read, and they are not provided as webs.
2020-05-03 03:01:21 +03:00
See: < a href = "https://github.com/ganelson/inform" class = "external" > https://github.com/ganelson/inform< / a >
< / p >
2020-04-14 19:56:54 +03:00
2020-05-03 03:01:21 +03:00
< p class = "commentary firstcommentary" > < a id = "SP2" > < / a > < b > § 2. Kits. < / b > The middle phase of the Inform 7 compiler turns source text into a low-level
2020-03-19 02:11:25 +02:00
abstract program in a format called inter. The final phase merges this with
2020-04-14 19:56:54 +03:00
pre-compiled inter libraries called "kits".
2020-03-19 02:11:25 +02:00
< / p >
2020-05-03 03:01:21 +03:00
< p class = "commentary" > Every source text needs a kit called < a href = "BasicInformKit/index.html" class = "internal" > BasicInformKit< / a > , and a kit associated
2020-03-19 02:11:25 +02:00
with the natural language it will eventually read or write, such as
2020-04-14 19:56:54 +03:00
< a href = "EnglishLanguageKit/index.html" class = "internal" > EnglishLanguageKit< / a > ; but then one of two things can happen:
2020-03-19 02:11:25 +02:00
< / p >
< ul class = "items" > < li > (a) If the user explicitly declares other kits to use, those are used;
2020-04-14 19:56:54 +03:00
< / li > < li > (b) Otherwise, < a href = "WorldModelKit/index.html" class = "internal" > WorldModelKit< / a > and < a href = "CommandParserKit/index.html" class = "internal" > CommandParserKit< / a > are used;
< / li > < li > (c) If neither < a href = "WorldModelKit/index.html" class = "internal" > WorldModelKit< / a > nor < a href = "CommandParserKit/index.html" class = "internal" > CommandParserKit< / a > is used, then
< a href = "BasicInformExtrasKit/index.html" class = "internal" > BasicInformExtrasKit< / a > is used.
2020-03-19 02:11:25 +02:00
< / li > < / ul >
2020-05-03 03:01:21 +03:00
< p class = "commentary" > In effect, Inform by default assumes it is making an interactive fiction
2020-03-19 02:11:25 +02:00
of some kind, and must be explicitly told if it's to make a "basic" program
with no world model or command parser.
< / p >
2020-05-03 03:01:21 +03:00
< p class = "commentary firstcommentary" > < a id = "SP3" > < / a > < b > § 3. < / b > Each kit is a web. Inter code is highly verbose, very low-level and not at
2020-03-19 02:11:25 +02:00
all legible, so these webs do not contain textual Inter code: instead, they
2020-04-14 19:56:54 +03:00
are written in Inform 6 syntax. The < a href = "inter/index.html" class = "internal" > inter< / a > tool then converts these to
2020-03-19 02:11:25 +02:00
binary inter code in a process called "assimilation". This means that to
create or edit kits, you need to be able to write Inform 6 code, but it's a
2020-04-14 19:56:54 +03:00
simple C-like language to learn if all you're doing is writing functions.
2020-03-19 02:11:25 +02:00
< / p >
<!-- End of weave -->
2020-05-03 03:01:21 +03:00
2020-03-19 02:11:25 +02:00
< / main >
< / body >
< / html >