Improvements to top-level navigation of source
|
@ -1,6 +1,6 @@
|
|||
# Inform 7
|
||||
|
||||
v10.1.0-alpha.1+6U71 'Krypton' (31 March 2022)
|
||||
v10.1.0-alpha.1+6U72 'Krypton' (3 April 2022)
|
||||
|
||||
## About Inform 7
|
||||
|
||||
|
@ -178,7 +178,7 @@ be accepted. (Note that these are not git submodules.)
|
|||
|
||||
* inform7/Internal/Templates - Template websites for Inform 7's 'release as a website' feature
|
||||
* inform7/Internal/Templates/Parchment - Z-machine in Javascript - __Parchment for Inform 7 (2015-09-25)__ - from [https://github.com/curiousdannii/parchment], maintained by [Dannii Willis](https://github.com/curiousdannii)
|
||||
* inform7/Internal/Templates/Quixe - Glulx in Javascript - __Quixe for Inform 7 (v. 2.1.2)__ - from [https://github.com/erkyrath/quixe], maintained by [Andrew Plotkin](https://github.com/erkyrath)
|
||||
* inform7/Internal/Templates/Quixe - Glulx in Javascript - __Quixe for Inform 7 (v. 2.2.0)__ - from [https://github.com/erkyrath/quixe], maintained by [Andrew Plotkin](https://github.com/erkyrath)
|
||||
* inform7/Internal/Templates/Vorple - Multimedia in Javascript - __Vorple__ - from [https://github.com/vorple/inform7], maintained by [Juhana Leinonen](https://github.com/vorple)
|
||||
|
||||
### Binary resources (such as image files)
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
Prerelease: alpha.1
|
||||
Build Date: 31 March 2022
|
||||
Build Number: 6U71
|
||||
Build Date: 3 April 2022
|
||||
Build Number: 6U72
|
||||
|
|
|
@ -1,13 +1,16 @@
|
|||
assets: docs/docs-assets
|
||||
navigation: docs-src/nav.html
|
||||
pattern: GitHubPages
|
||||
pattern: W3Enhanced
|
||||
|
||||
breadcrumbs: none
|
||||
web: "overview" at "docs-src/index.inweb" in "docs"
|
||||
|
||||
pattern: GitHubPages
|
||||
navigation: docs-src/navc.html
|
||||
breadcrumbs: "Home: //overview//"
|
||||
web: "compiler" at "docs-src/compiler.inweb" in "docs"
|
||||
web: "services" at "docs-src/services.inweb" in "docs"
|
||||
web: "inform6" at "docs-src/inform6.inweb" in "docs"
|
||||
breadcrumbs: "Home: //overview//" > "Compiler Tools: //compiler//"
|
||||
home: docs
|
||||
|
||||
|
@ -31,7 +34,7 @@ module: "building" at "inter/building-module" in "docs/building-module"
|
|||
module: "pipeline" at "inter/pipeline-module" in "docs/pipeline-module"
|
||||
module: "final" at "inter/final-module" in "docs/final-module"
|
||||
module: "index" at "inter/index-module" in "docs/index-module"
|
||||
breadcrumbs: "Home: //overview//" > "Services: //compiler//"
|
||||
breadcrumbs: "Home: //overview//" > "Services: //services//"
|
||||
module: "arch" at "services/arch-module" in "docs/arch-module"
|
||||
module: "syntax" at "services/syntax-module" in "docs/syntax-module"
|
||||
module: "words" at "services/words-module" in "docs/words-module"
|
||||
|
@ -68,7 +71,7 @@ web: "inpolicy" at "inpolicy" in "docs/inpolicy"
|
|||
navigation: docs-src/navu.html
|
||||
breadcrumbs: "Home: //overview//"
|
||||
web: "units" at "docs-src/units.inweb" in "docs"
|
||||
breadcrumbs: "Home: //overview//" > "Unit Test Tools: //units//"
|
||||
breadcrumbs: "Home: //overview//" > "Services: //services//"
|
||||
web: "arch-test" at "services/arch-test" in "docs/arch-test"
|
||||
web: "building-test" at "inter/building-test" in "docs/building-test"
|
||||
web: "inflections-test" at "services/inflections-test" in "docs/inflections-test"
|
||||
|
|
BIN
docs-src/Patterns/W3Enhanced/GitHub/github.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
3
docs-src/Patterns/W3Enhanced/W3/W3.html
Normal file
|
@ -0,0 +1,3 @@
|
|||
<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
|
||||
<link rel="stylesheet" href="https://www.w3schools.com/lib/w3-theme-black.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.3.0/css/font-awesome.min.css">
|
6
docs-src/Patterns/W3Enhanced/pattern.txt
Normal file
|
@ -0,0 +1,6 @@
|
|||
name: W3Enhanced based on GitHubPages
|
||||
format: HTML
|
||||
default range: sections
|
||||
plugin: GitHub
|
||||
plugin: W3
|
||||
plugin: Breadcrumbs
|
15
docs-src/Patterns/W3Enhanced/template-body.html
Normal file
|
@ -0,0 +1,15 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>[[Booklet Title]]</title>
|
||||
[[Plugins]]
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
<nav role="navigation">
|
||||
[[Navigation]]
|
||||
</nav>
|
||||
<main role="main">
|
||||
[[Weave Content]]
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
71
docs-src/Patterns/W3Enhanced/template-index.html
Normal file
|
@ -0,0 +1,71 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>[[Title]]</title>
|
||||
[[Plugins]]
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
<nav role="navigation">
|
||||
[[Navigation]]
|
||||
</nav>
|
||||
<main role="main">
|
||||
<ul class="crumbs">[[Breadcrumbs]]<li><b>[[Title]]</b></li></ul>
|
||||
<p class="purpose">[[Purpose]] This is version [[Version Number]].</p>
|
||||
<hr>
|
||||
<div class="contentspage">
|
||||
[[If Chapters]]
|
||||
<ul class="chapterlist">
|
||||
[[Repeat Chapter]]
|
||||
<li>
|
||||
<p class="chapterentry"><a name="[[Chapter Code]]"></a>
|
||||
<span class="chaptertitle">[[Chapter Title]]</span></p>
|
||||
[[If Chapter Purpose]]
|
||||
<p class="chapterpurpose">[[Chapter Purpose]]</p>
|
||||
[[End If]]
|
||||
<ul class="sectionlist">
|
||||
[[Repeat Section]]
|
||||
<li>
|
||||
<p class="sectionentry"><a href="[[Section Page]]">
|
||||
<spon class="sectiontitle">[[Section Title]]</span></a> -
|
||||
<span class="sectionpurpose">[[Section Purpose]]</span></p>
|
||||
</li>
|
||||
[[End Repeat]]
|
||||
</ul>
|
||||
</li>
|
||||
[[End Repeat]]
|
||||
</ul>
|
||||
[[Else]]
|
||||
[[Repeat Chapter]]
|
||||
<ul class="chapterlist">
|
||||
[[Repeat Section]]
|
||||
<li>
|
||||
<p class="chapterentry"><a href="[[Section Page]]">
|
||||
<spon class="sectiontitle">[[Section Title]]</span></a> -
|
||||
<span class="sectionpurpose">[[Section Purpose]]</span></p>
|
||||
</li>
|
||||
[[End Repeat]]
|
||||
</ul>
|
||||
[[End Repeat]]
|
||||
[[End If]]
|
||||
[[If Modules]]
|
||||
<hr>
|
||||
<p class="purpose">This program also incorporates the following web(s) as module(s):</p>
|
||||
<ul class="chapterlist">
|
||||
[[Repeat Module]]
|
||||
<li>
|
||||
<p class="moduleentry">
|
||||
[[If Module Page]]
|
||||
<a href="[[Module Page]]"><spon class="sectiontitle">[[Module Title]]</span></a>
|
||||
[[Else]]
|
||||
<spon class="sectiontitle">[[Module Title]]</span>
|
||||
[[End If]]
|
||||
- <span class="sectionpurpose">[[Module Purpose]]</span></p>
|
||||
</li>
|
||||
[[End Repeat]]
|
||||
</ul>
|
||||
[[End If]]
|
||||
</div>
|
||||
<hr>
|
||||
<p class="purpose">Powered by <a href="https://github.com/ganelson/inweb">Inweb</a>.</p>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
BIN
docs-src/assets/ext.jpg
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
docs-src/assets/foundation.jpg
Normal file
After Width: | Height: | Size: 108 KiB |
BIN
docs-src/assets/ifext.jpg
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
docs-src/assets/ifkit.jpg
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
docs-src/assets/inblorb.jpg
Normal file
After Width: | Height: | Size: 33 KiB |
BIN
docs-src/assets/inbuild.jpg
Normal file
After Width: | Height: | Size: 149 KiB |
BIN
docs-src/assets/indoc.jpg
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
docs-src/assets/inform6.jpg
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
docs-src/assets/inform7.jpg
Normal file
After Width: | Height: | Size: 193 KiB |
BIN
docs-src/assets/inpolicy.jpg
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
docs-src/assets/inrtps.jpg
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
docs-src/assets/inter.jpg
Normal file
After Width: | Height: | Size: 183 KiB |
BIN
docs-src/assets/intest.jpg
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
docs-src/assets/inweb.jpg
Normal file
After Width: | Height: | Size: 34 KiB |
BIN
docs-src/assets/kit.jpg
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
docs-src/assets/services.jpg
Normal file
After Width: | Height: | Size: 93 KiB |
BIN
docs-src/assets/web.jpg
Normal file
After Width: | Height: | Size: 11 KiB |
|
@ -1,33 +1,57 @@
|
|||
Title: The Inform 7 compiler
|
||||
Title: Structure of the Inform 7 compiler
|
||||
Author: Graham Nelson
|
||||
|
||||
@ The task of Inform to take natural-language source text, merged from the
|
||||
author's main source and some "extensions"; to compile that to an intermediate
|
||||
format called Inter; merge once again with pre-compiled libraries of Inter
|
||||
called "kits"; and then translate the result to a program which a
|
||||
more orthodox compiler can take the rest of the way. Because Inform 7 generates
|
||||
code for another compiler, rather than directly making an executable itself,
|
||||
it is properly speaking a "transpiler".
|
||||
@ The core Inform compiler, the tool called //inform7//, combines natural-language
|
||||
source text, including natural-language extensions, with kits of so-called Inter
|
||||
code to make the instructions for making a playable story. Further tools are
|
||||
needed to turn such instructions into that story -- perhaps as
|
||||
|
||||
For two decades that second compiler was always the roughly C-like Inform 6, a
|
||||
sturdy 1990s tool for generating interactive fiction "story files" which, after
|
||||
processing with the //inblorb// tool, can then be played in a web browser or
|
||||
with an "interpreter". In 2021, limited support was added for transpiling a
|
||||
general, non-IF-specific form of the language called Basic Inform to ANSI C.
|
||||
This can be compiled into more general executable programs using Clang, gcc,
|
||||
or other standard C compilers.
|
||||
(*) a page in a web browser, where the story runs as JavaScript, using //inform6//
|
||||
and then //inblorb//, other tools in the Inform toolchain;
|
||||
|
||||
(*) a "story file" which an app called an "interpreter" plays through, using
|
||||
//inform6// alone; or
|
||||
|
||||
(*) an executable program which can be run on the command line, using a standard
|
||||
C compiler such as |clang| or |gcc|.
|
||||
|
||||
@ The compiler runs in Stages, numbered 1 to 7, and each contains many sub-tasks.
|
||||
But like most compilers, it can be summarised as turning its input first into
|
||||
an AST or "abstract syntax tree"[1] and then into an "intermediate representation",
|
||||
which in our case is called Inter. Kits have been compiled in advance by a different
|
||||
flow path, directly into Inter. A weak form[2] of linker inside the Inform compiler
|
||||
loads and combines those pre-compiled Inter files with the main body, and so
|
||||
completes an intermediate representation for the story. This can then be optimised and
|
||||
turned into various choices of output.
|
||||
|
||||
Inform 7 presents as three command-line tools, not one: //inbuild//, //inform7//
|
||||
and //inter//. Really, though, they are three points of access to the same code
|
||||
base. //inbuild// contains Stage 1 as a stand-alone tool, //inter// contains Stages
|
||||
5 to 7 as a stand-alone tool, and //inform7// is the entire compiler (Stages 1 to 7)
|
||||
in one. Each tool has its own CLI (or "command-line interface"): see
|
||||
//inbuild: Manual//, //inform7: Manual//, //inter: Manual// and
|
||||
//inbuild: Reference Card//, //inform7: Reference Card//, //inter: Reference Card//.
|
||||
|
||||
[1] Though in this source we usually call it an "annotated syntax tree" or simply
|
||||
"syntax tree" to avoid the issue of whether it is concrete or abstract.
|
||||
|
||||
[2] Weak in that the //inter// tool can link any number of kits to a source text,
|
||||
but not a source text to a source text.
|
||||
|
||||
@ The flow of data looks like so, with time running downwards on the page. Dotted
|
||||
arrows are where work is done by tools other than //inform7//:
|
||||
= (hyperlinked text as BoxArt)
|
||||
main source text extension source texts
|
||||
\ /
|
||||
\ / INFORM7 Stage 1 or INBUILD
|
||||
\ /
|
||||
\|/ \|/
|
||||
syntax tree
|
||||
kit sources |
|
||||
(in Inform 6 code) | INFORM7 Stages 2 to 5
|
||||
INTER | |
|
||||
\|/ \|/
|
||||
precompiled Inter trees Inter tree
|
||||
kit sources main source text extension source texts
|
||||
(in Inform 6 code) \ /
|
||||
| \ / INFORM7 Stage 1 or INBUILD
|
||||
| INTER \ /
|
||||
\|/ \|/ \|/
|
||||
precompiled syntax tree
|
||||
Inter trees |
|
||||
. | INFORM7 Stages 2 to 5
|
||||
. |
|
||||
. . . . . . . precompiled \|/
|
||||
Inter trees Inter tree
|
||||
\ /
|
||||
\ / INFORM7 Stage 6 or INTER
|
||||
\|/ \|/
|
||||
|
@ -36,19 +60,19 @@ or other standard C compilers.
|
|||
/ | \ INFORM7 Stage 7 or INTER
|
||||
\|/ \|/ \|/
|
||||
Inform 6 code C code index mini-website
|
||||
| |
|
||||
INFORM6 | | CLANG or GCC
|
||||
\|/ \|/
|
||||
: :
|
||||
INFORM6 : : CLANG or GCC
|
||||
\:/ \:/
|
||||
story file executable
|
||||
|
|
||||
INBLORB |
|
||||
\|/
|
||||
:
|
||||
INBLORB :
|
||||
\:/
|
||||
playable website
|
||||
=
|
||||
|
||||
@ The Inform 7 transpiler, then, occupies the top two-thirds of the above diagram.
|
||||
Broadly speaking, it runs in seven stages, and the code for each stage is made
|
||||
up of one or more "modules", as follows:
|
||||
@ The source code is divided up into "modules", each of which is a literate
|
||||
program or web in its own right. Most modules are used mostly in particular
|
||||
stages of the compilation, which are as follows:
|
||||
(*) Stage 1. A build manager called //supervisor// gathers what must be compiled.
|
||||
(*) Stage 2. //core// organises compilation of a single Inform project,
|
||||
doing little except to co-ordinate the other modules.
|
||||
|
@ -65,15 +89,8 @@ more of a layer than a stage, providing services to Stages 4, 6 and 7.
|
|||
(*) Stage 7. //final// generates final code and //index// generates human-readable
|
||||
Index pages, which forn a small website about the project.
|
||||
|
||||
Inform 7 presents as three command-line tools, not one: //inbuild//, //inform7//
|
||||
and //inter//. Really, though, they are three points of access to the same code
|
||||
base. //inbuild// contains Stage 1 as a stand-alone tool, //inter// contains Stages
|
||||
5 to 7 as a stand-alone tool, and //inform7// is the entire compiler (Stages 1 to 7)
|
||||
in one. Each tool has its own CLI (or "command-line interface"): see
|
||||
//inbuild: Manual//, //inform7: Manual//, //inter: Manual// and
|
||||
//inbuild: Reference Card//, //inform7: Reference Card//, //inter: Reference Card//.
|
||||
|
||||
The full breakdown of these three tools into modules is as follows:
|
||||
The full breakdown of the three tools //inbuild//, //inform7// and //inter//
|
||||
into modules is as follows:
|
||||
= (hyperlinked text as BoxArt)
|
||||
INBUILD INFORM7 INTER
|
||||
+-------------+ +-------------+ +-------------+
|
||||
|
@ -123,17 +140,6 @@ The full breakdown of these three tools into modules is as follows:
|
|||
| (standard C library) |
|
||||
+-----------------------------------------------------------------------+
|
||||
=
|
||||
Note that all three tools use a "services" library, made up of a variety of modules
|
||||
providing services useful for natural language-based programs. At one time this
|
||||
was going to be called "Second Foundation" or possibly "Foundation and Empire",
|
||||
because there is also //foundation// underneath, a library of utility functions
|
||||
provided by //inweb//.
|
||||
|
||||
@ That's a lot: for code-spelunkers, this is quite the limestone hillside of
|
||||
potential points of entry. Where to begin? Here are some suggested entrances:
|
||||
(a) See //supervisor: What This Module Does// for an overview of the
|
||||
build-management process.
|
||||
(b) Or take that on trust, and see //core: What This Module Does// for
|
||||
an overview of how Inform 7 basically works.
|
||||
(c) If you're more interested in the low-level representation of Inter code,
|
||||
and how to generate from it, see //bytecode: What This Module Does//.
|
||||
Note that all three tools use a //services// library, made up of a variety of modules
|
||||
providing services useful for natural language-based programs, and also the
|
||||
//foundation// library of utility functions provided by //inweb//.
|
||||
|
|
122
docs-src/html/panels.html
Normal file
|
@ -0,0 +1,122 @@
|
|||
<div class="w3-row-padding w3-padding-16 w3-center" id="food">
|
||||
<div class="w3-quarter">
|
||||
<a href="compiler.html"><img src="docs-assets/inbuild.jpg" alt="Inbuild" style="width:100%"></a>
|
||||
<h3><a href="compiler.html">inbuild</a></h3>
|
||||
<p>A stand-alone build manager which is also Stage I of the Inform compiler.</p>
|
||||
</div>
|
||||
<div class="w3-quarter">
|
||||
<a href="compiler.html"><img src="docs-assets/inform7.jpg" alt="Inform 7" style="width:100%"></a>
|
||||
<h3><a href="compiler.html">inform7</a></h3>
|
||||
<p>The core Inform compiler.</p>
|
||||
</div>
|
||||
<div class="w3-quarter">
|
||||
<a href="compiler.html"><img src="docs-assets/inter.jpg" alt="Inter" style="width:100%"></a>
|
||||
<h3><a href="compiler.html">inter</a></h3>
|
||||
<p>A stand-alone tool for intermediate-level code, which is
|
||||
also Stages VI and VII of the Inform compiler.</p>
|
||||
</div>
|
||||
<div class="w3-quarter">
|
||||
<a href="services.html"><img src="docs-assets/services.jpg" alt="Services" style="width:100%"></a>
|
||||
<h3><a href="services.html">services</a></h3>
|
||||
<p>Support for predicate calculus, linguistics, abstract syntax trees and
|
||||
other facilities needed by the compiler tools.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="w3-row-padding w3-padding-16 w3-center">
|
||||
<div class="w3-quarter">
|
||||
<img src="docs-assets/inblorb.jpg" alt="Inblorb" style="width:100%">
|
||||
<h3>inblorb</h3>
|
||||
<p>A packaging tool for wrapping interactive fiction story files,
|
||||
included with the Inform apps but not as a part of the inform7 executable.</p>
|
||||
</div>
|
||||
<div class="w3-quarter">
|
||||
<a href="compiler.html"><img src="docs-assets/inform6.jpg" alt="Inform 6" style="width:100%"></a>
|
||||
<h3><a href="compiler.html">inform6</a></h3>
|
||||
<p>A compiler for a low-level programming language,
|
||||
included with the Inform apps but not as a part of the inform7 executable.</p>
|
||||
</div>
|
||||
<div class="w3-quarter">
|
||||
<img src="docs-assets/ext.jpg" alt="Basic Inform" style="width:100%">
|
||||
<h3>Basic Inform</h3>
|
||||
<p>The Inform 7 extension read automatically into every project,
|
||||
defining much of the language.</p>
|
||||
</div>
|
||||
<div class="w3-quarter">
|
||||
<img src="docs-assets/ifext.jpg" alt="Standard Rules" style="width:100%">
|
||||
<h3>Standard Rules</h3>
|
||||
<p>The Inform 7 extension read automatically into every interactive
|
||||
fiction project, defining much of the world model.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="w3-row-padding w3-padding-16 w3-center">
|
||||
<div class="w3-quarter">
|
||||
<img src="docs-assets/kit.jpg" alt="BasicInformKit" style="width:100%">
|
||||
<h3>BasicInformKit</h3>
|
||||
<p>A kit of Inter code providing runtime support for all programs written
|
||||
with Inform. Included with the apps in precompiled form.</p>
|
||||
</div>
|
||||
<div class="w3-quarter">
|
||||
<img src="docs-assets/kit.jpg" alt="BasicInformExtrasKit" style="width:100%">
|
||||
<h3>BasicInformExtrasKit</h3>
|
||||
<p>A kit of Inter code providing runtime support for all programs not using
|
||||
WorldModelKit. Included with the apps in precompiled form.</p>
|
||||
</div>
|
||||
<div class="w3-quarter">
|
||||
<img src="docs-assets/ifkit.jpg" alt="WorldModelKit" style="width:100%">
|
||||
<h3>WorldModelKit</h3>
|
||||
<p>A kit of Inter code providing runtime support for interactive fiction
|
||||
projects with a simulated world. Included with the apps in precompiled form.</p>
|
||||
</div>
|
||||
<div class="w3-quarter">
|
||||
<img src="docs-assets/ifkit.jpg" alt="CommandParserKit" style="width:100%">
|
||||
<h3>CommandParserKit</h3>
|
||||
<p>A kit of Inter code providing runtime support for interactive fiction
|
||||
projects with a command parser interface. Included with the apps in precompiled form.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="w3-row-padding w3-padding-16 w3-center">
|
||||
<div class="w3-quarter">
|
||||
<img src="docs-assets/indoc.jpg" alt="Indoc" style="width:100%">
|
||||
<h3>indoc</h3>
|
||||
<p>A tool for typesetting the two books about Inform, and their hundreds
|
||||
of examples, so that these are readable in the apps. Needed by Inform
|
||||
(and Inform website) maintainers, but not end users.</p>
|
||||
</div>
|
||||
<div class="w3-quarter">
|
||||
<img src="docs-assets/inpolicy.jpg" alt="Inpolicy" style="width:100%">
|
||||
<h3>inpolicy</h3>
|
||||
<p>A small tool for checking that the Inform source base complies
|
||||
with some self-imposed social norms. Needed by Inform maintainers, but not end users.</p>
|
||||
</div>
|
||||
<div class="w3-quarter">
|
||||
<img src="docs-assets/inrtps.jpg" alt="Inrtps" style="width:100%">
|
||||
<h3>inrtps</h3>
|
||||
<p>A small tool for formatting the run-time problem displays included
|
||||
with the Inform apps. Needed by Inform maintainers, but not end users.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="w3-row-padding w3-padding-16 w3-center">
|
||||
<div class="w3-quarter">
|
||||
<img src="docs-assets/inweb.jpg" alt="Inweb" style="width:100%">
|
||||
<h3>inweb</h3>
|
||||
<p>A literate-programming tool needed to build the other Inform tools.
|
||||
Needed by Inform maintainers, but not end users.</p>
|
||||
</div>
|
||||
<div class="w3-quarter">
|
||||
<img src="docs-assets/intest.jpg" alt="Intest" style="width:100%">
|
||||
<h3>intest</h3>
|
||||
<p>A tool for running complex suites of end-to-end tests to verify the
|
||||
correctness of other tools. Needed by Inform maintainers, but not end users.</p>
|
||||
</div>
|
||||
<div class="w3-quarter">
|
||||
<img src="docs-assets/services.jpg" alt="Foundation" style="width:100%">
|
||||
<h3>foundation</h3>
|
||||
<p>A module of basic computing services used across all of the Inform
|
||||
tool-chain: file-handling, generating HTML, semantic version-numbering,
|
||||
string-handling, memory management.</p>
|
||||
</div>
|
||||
</div>
|
|
@ -1,33 +1,26 @@
|
|||
Title: Overview
|
||||
Title: Inform: The Program
|
||||
Author: Graham Nelson
|
||||
Paragraph Numbers Visibility: Off
|
||||
|
||||
@ This is the home page for the source code for the Inform 7 programming
|
||||
language. For the language itself, its documentation, and downloads of the
|
||||
apps for different platforms, see: http://www.inform7.com
|
||||
@ Inform is a programming language used for interactive fiction and other creative
|
||||
purposes. Most users engage with it as an app on their devices: there are apps
|
||||
for MacOS, Windows, Linux and Android, but in the centre of each is the same
|
||||
core compiler and software.
|
||||
|
||||
Almost everything here is a "web", or "literate program", powered by //inweb//.
|
||||
Those new to literate programming may want first to try the modest examples
|
||||
there (say, //goldbach//), and skim the //inweb// manual.
|
||||
(*) For user documentation, and downloads of the apps, go to the Inform home page
|
||||
at: http://www.inform7.com
|
||||
|
||||
These pages host "woven", human-readable, forms of the source and are intended
|
||||
for browsing. To obtain and build the software, or to see resources which
|
||||
are not webs and thus not here, see: https://github.com/ganelson/inform
|
||||
(*) To download the source for the core compiler, build it, and run it at the command
|
||||
line rather than through the apps, go to the main GitHub repository
|
||||
at: https://github.com/ganelson/inform
|
||||
|
||||
@ The Inform 7 compiler comes with a large penumbra of supporting resources,
|
||||
so there are around 50 webs in this repository:
|
||||
(a) The compiler is built from around 20 modules, plus three front-end command
|
||||
line tools controlling them. See //compiler// for a map.
|
||||
(b) See //other// for command-line tools useful for building or working with
|
||||
Inform, but not involving compilation: //inblorb//, a packager; //indoc//, to
|
||||
format documentation; //inpolicy//, a lint-like tool for checking Inform's
|
||||
source code; and //inrtps//, to format run-time problem messages.
|
||||
(c) The extensions "Basic Inform" (//basic_inform//) and "Standard Rules"
|
||||
(//standard_rules//), together with a number of "kits" of precompiled Inter
|
||||
code: see //extensions//.
|
||||
(d) Small unit-test tools to exercise the modules mentioned in (a): see //units//.
|
||||
(*) Inform is a set of "literate programs", written as "webs" of
|
||||
source code designed to be read by humans (in "woven" form), as well as
|
||||
executed by computers (in "tangled" form). For more on literate programming,
|
||||
go to the tool used by the Inform project: //inweb//
|
||||
|
||||
@ Three webs are conspicuously missing, but only because they are on similar
|
||||
mini-websites on other Github repositories:
|
||||
(a) //inweb// itself, and its function library, //foundation//, which all of
|
||||
the Inform tools use;
|
||||
(b) the testing utility //intest//, which has a repository of its own.
|
||||
@ Inform is not a single program. There are around 50 webs in all, together
|
||||
with some images, PDF files, sets of test cases, documentation, and so on.
|
||||
This page is intended as a jumping-off point to navigate these.
|
||||
|
||||
= (html panels.html)
|
||||
|
|
41
docs-src/inform6.inweb
Executable file
|
@ -0,0 +1,41 @@
|
|||
Title: A note about Inform 6
|
||||
Author: Graham Nelson
|
||||
|
||||
@ The Inform system of today sometimes uses the Inform system of yesteryear,
|
||||
|inform6|, as a final stage of compilation, a stage largely invisible to end
|
||||
users of the Inform apps. See //compiler// for a diagram of how the tools
|
||||
are combined in use.
|
||||
|
||||
Inform 6 is a C-like language designed to be compiled to the specialist Z-machine
|
||||
or Glulx virtual machines, which in turn were designed for interactive fiction.
|
||||
The Inform 7 repository at Github contains a copy of the most recent stable
|
||||
release of the Inform 6 compiler, but this is only a copy.
|
||||
|
||||
The Inform 6 compiler repository is here:
|
||||
|
||||
(*) https://github.com/DavidKinder/Inform6
|
||||
|
||||
Note that this is a straight-up C program, and not a literate program needing
|
||||
//inweb// to compile.
|
||||
|
||||
@ The I7 repository does not contain the Inform 6 "Designer's Manual 4th Edition",
|
||||
the "DM4", or the Inform 6 Technical Manual, for which see:
|
||||
|
||||
(*) https://www.inform-fiction.org/manual/html/contents.html
|
||||
|
||||
(*) https://www.inform-fiction.org/source/tm/index.html
|
||||
|
||||
The I7 repository also does not contain the Inform 6 library, which is not used
|
||||
by Inform 7: but see --
|
||||
|
||||
(*) https://gitlab.com/DavidGriffith/inform6lib
|
||||
|
||||
@ However, the I7 repository does contain a version of Andrew Plotkin's test suite
|
||||
for the I6 compiler:
|
||||
|
||||
(*) https://github.com/erkyrath/Inform6-Testing
|
||||
|
||||
ported to use //intest// rather than the Python script originally supplied. So
|
||||
if you've already built the Inform 7 tool chain, and are already using intest
|
||||
to test //inform7// and the others, then you can run this suite against the
|
||||
included copy of the I6 compiler as well.
|
|
@ -1,10 +1,11 @@
|
|||
<h1>[[Link "overview"]]
|
||||
<img src="[[Docs]]docs-assets/Inform.png" height=72">
|
||||
</a></h1>
|
||||
[[Item "compiler tools" -> //compiler//]]
|
||||
[[Item "home" -> //overview//]]
|
||||
[[Item "structure" -> //compiler//]]
|
||||
[[Item "services" -> //services//]]
|
||||
[[Item "other tools" -> //other//]]
|
||||
[[Item "extensions and kits" -> //extensions//]]
|
||||
[[Item "unit test tools" -> //units//]]
|
||||
[[Menu "Repository"]]
|
||||
[[Item "<github.png> github" -> https://github.com/ganelson/inform]]
|
||||
[[Menu "Related Projects"]]
|
||||
|
|
170
docs-src/services.inweb
Executable file
|
@ -0,0 +1,170 @@
|
|||
Title: Services and their unit tests
|
||||
Author: Graham Nelson
|
||||
|
||||
@ The programs in the Inform toolchain need a variety of services beyond those
|
||||
provided by our standard library //foundation//. The latter offers basics such
|
||||
as memory allocation, linked lists, string manipulation and so on, but the
|
||||
Inform tools need much more than that.
|
||||
|
||||
The services layer of Inform[1] is structured as a set of modules. They can be
|
||||
(and are) used by other tools besides the main //inform7// compiler, and in
|
||||
particular most of the services come with unit-testing tools: small stand-alone
|
||||
executables which enable the workings of the service in question to be tested
|
||||
in isolation from the rest of the Inform toolchain.
|
||||
|
||||
To some extent a tool can include just those modules it needs, but there are
|
||||
dependencies between them: for example, //linguistics// requires //syntax//,
|
||||
which in turn requires //words//. Each service has a section of documentation
|
||||
called "How To Include This Module", explaining its needs.
|
||||
|
||||
[1] At one time this was going to be called Second Foundation, or perhaps
|
||||
Foundation and Empire.
|
||||
|
||||
@ The //words// module provides for natural-language text to be read in,
|
||||
and then broken up into words and punctuation marks. Usefully efficient ways
|
||||
to refer to fragments of this text, such as |wording| and |word_assemblage|,
|
||||
are also provided. Much of this is simple book-keeping, but the words module
|
||||
also provides the "Preform" system for parsing text against simple grammars.
|
||||
Preform powers the lexical/syntax analysis phases of Inform.
|
||||
|
||||
(*) Contents page of web: //words//.
|
||||
|
||||
(*) Detailed overview: //words: What This Module Does//.
|
||||
|
||||
(*) Usage instructions: //words: How To Include This Module//.
|
||||
|
||||
(*) Unit test tool here: //words-test//.
|
||||
|
||||
(*) A manual for writing Preform grammars: //words: About Preform//.
|
||||
|
||||
@ The //lexicon// module provides a way to store and look up meanings of
|
||||
multi-word phrases such as "brass plaque" or "red silk jacket". This is the
|
||||
equivalent, in a natural-language context, of a symbols table in a more
|
||||
conventional compiler. Speed is critical and some novel algorithms are used.
|
||||
|
||||
(*) Contents page of web: //lexicon//.
|
||||
|
||||
(*) Detailed overview: //lexicon: What This Module Does//.
|
||||
|
||||
(*) Usage instructions: //lexicon: How To Include This Module//.
|
||||
|
||||
@ The //calculus// module allows logical propositions to be stored and
|
||||
simplified. The word "calculus" is used here in the sense of predicate
|
||||
calculus with equality, a standard system for mathematical logic, and is
|
||||
nothing to do with derivatives or integrals.
|
||||
|
||||
(*) Contents page of web: //calculus//.
|
||||
|
||||
(*) Detailed overview: //calculus: What This Module Does//.
|
||||
|
||||
(*) Usage instructions: //calculus: How To Include This Module//.
|
||||
|
||||
(*) Unit test tool here: //calculus-test//.
|
||||
|
||||
@ //syntax// is a relatively small module, which manages annotated syntax trees.
|
||||
It provides only basic facilities for making and annotating ASTs, but also
|
||||
contains the sentence-breaking algorithm, turning a stream of words into a
|
||||
rudimentary AST.
|
||||
|
||||
This is really part one of a two-part story, the second being //linguistics//.
|
||||
Together these define the AST for the Inform 7 language.
|
||||
|
||||
(*) Contents page of web: //syntax//.
|
||||
|
||||
(*) Detailed overview: //syntax: What This Module Does//.
|
||||
|
||||
(*) Usage instructions: //syntax: How To Include This Module//.
|
||||
|
||||
(*) Unit test tool here: //syntax-test//.
|
||||
|
||||
@ The //linguistics// module manages grammatical categories such as verbs,
|
||||
adjectives, determiners and so on, and uses the annotated syntax trees of
|
||||
the //syntax// module to diagram sentences.
|
||||
|
||||
This is really part two of a two-part story, the first being //syntax//.
|
||||
Together these define the AST for the Inform 7 language.
|
||||
|
||||
(*) Contents page of web: //linguistics//.
|
||||
|
||||
(*) Detailed overview: //linguistics: What This Module Does//.
|
||||
|
||||
(*) Usage instructions: //linguistics: How To Include This Module//.
|
||||
|
||||
(*) Unit test tool here: //linguistics-test//.
|
||||
|
||||
(*) A description of the result: //linguistics: About Sentence Diagrams//.
|
||||
|
||||
@ The //inflections// module provides ways to recognise or generate inflected
|
||||
forms of words: for example, "fig" becoming "figs", "ox" becoming "oxen",
|
||||
"box" becoming "boxes", and "sheep" becoming "sheep" are all inflections to
|
||||
make the plural of an English noun.[1] And similarly for inflected verb forms
|
||||
such as "starting", "starts" and "start"; or adjectival inflections such as
|
||||
those used to generate comparatives and superlatives -- "large" to "larger"
|
||||
or "largest".
|
||||
|
||||
(*) Contents page of web: //inflections//.
|
||||
|
||||
(*) Detailed overview: //inflections: What This Module Does//.
|
||||
|
||||
(*) Usage instructions: //inflections: How To Include This Module//.
|
||||
|
||||
(*) Unit test tool here: //inflections-test//.
|
||||
|
||||
[1] A full implementation of Conway's pluralisation algorithm can be found in
|
||||
this module, and is one of Inform's more picturesque corners.
|
||||
|
||||
@ The //kinds// module provides a basic type system for an Inform-like language.[1]
|
||||
Note that this does not contain the Inform typechecker, which can be found in
|
||||
the main compiler (at //values: Dash//); but it does contain code to test
|
||||
whether or not values of one kind conform to another kind, which is a key part
|
||||
of the typechecking process.
|
||||
|
||||
(*) Contents page of web: //kinds//.
|
||||
|
||||
(*) Detailed overview: //kinds: What This Module Does//.
|
||||
|
||||
(*) Usage instructions: //kinds: How To Include This Module//.
|
||||
|
||||
(*) Unit test tool here: //kinds-test//.
|
||||
|
||||
(*) A manual for "Neptune", the mini-language used by kits to create fundamental
|
||||
kinds and kind constructors: //kinds: A Brief Guide to Neptune//.
|
||||
|
||||
[1] Following traditional Inform practice, the term "kind" is used instead of the
|
||||
more conventional computer-science word "type".
|
||||
|
||||
@ The //arch// module is a way to represent the possible code-generation
|
||||
"architectures" supported in the Inform toolchain. For example, "32-bit words
|
||||
with debugging enabled" is an architecture.
|
||||
|
||||
(*) Contents page of web: //arch//.
|
||||
|
||||
(*) Detailed overview: //arch: What This Module Does//.
|
||||
|
||||
(*) Usage instructions: //arch: How To Include This Module//.
|
||||
|
||||
(*) Unit test tool here: //arch-test//.
|
||||
|
||||
@ The //problems// module is a simple system for producing HTML-page-style
|
||||
error messages, such as the Problems issued by the Inform compiler.[1]
|
||||
|
||||
(*) Contents page of web: //problems//.
|
||||
|
||||
(*) Detailed overview: //problems: What This Module Does//.
|
||||
|
||||
(*) Usage instructions: //problems: How To Include This Module//.
|
||||
|
||||
(*) Unit test tool here: //problems-test//.
|
||||
|
||||
[1] Arguably it's not really of any wider application and shouldn't have been
|
||||
made a module at all, but never mind.
|
||||
|
||||
@ The //html// module contains tools for generating non-standard features of HTML
|
||||
needed by the files made by Inform, such as clickable links to the source text.
|
||||
|
||||
(*) Contents page of web: //html//.
|
||||
|
||||
(*) Detailed overview: //html: What This Module Does//. This section includes a
|
||||
description of the custom Inform-app-only URL schemas |inform:| and |source:|.
|
||||
|
||||
(*) Usage instructions: //html: How To Include This Module//.
|
|
@ -1,7 +1,7 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>The Inform 7 compiler</title>
|
||||
<title>Structure of the Inform 7 compiler</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">
|
||||
|
@ -12,6 +12,11 @@
|
|||
<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">
|
||||
<script src="http://code.jquery.com/jquery-1.12.4.min.js"
|
||||
integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>
|
||||
|
||||
<script src="docs-assets/Bigfoot.js"></script>
|
||||
<link href="docs-assets/Bigfoot.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
|
@ -60,39 +65,62 @@
|
|||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<!--Weave of 'The Inform 7 compiler' generated by Inweb-->
|
||||
<!--Weave of 'Structure of the Inform 7 compiler' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="index.html">Home</a></li><li><b>The Inform 7 compiler</b></li></ul></div>
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>The task of Inform to take natural-language source text, merged from the
|
||||
author's main source and some "extensions"; to compile that to an intermediate
|
||||
format called Inter; merge once again with pre-compiled libraries of Inter
|
||||
called "kits"; and then translate the result to a program which a
|
||||
more orthodox compiler can take the rest of the way. Because Inform 7 generates
|
||||
code for another compiler, rather than directly making an executable itself,
|
||||
it is properly speaking a "transpiler".
|
||||
<ul class="crumbs"><li><a href="index.html">Home</a></li><li><b>Structure of the Inform 7 compiler</b></li></ul></div>
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>The core Inform compiler, the tool called <a href="inform7/index.html" class="internal">inform7</a>, combines natural-language
|
||||
source text, including natural-language extensions, with kits of so-called Inter
|
||||
code to make the instructions for making a playable story. Further tools are
|
||||
needed to turn such instructions into that story — perhaps as
|
||||
</p>
|
||||
|
||||
<p class="commentary">For two decades that second compiler was always the roughly C-like Inform 6, a
|
||||
sturdy 1990s tool for generating interactive fiction "story files" which, after
|
||||
processing with the <a href="inblorb/index.html" class="internal">inblorb</a> tool, can then be played in a web browser or
|
||||
with an "interpreter". In 2021, limited support was added for transpiling a
|
||||
general, non-IF-specific form of the language called Basic Inform to ANSI C.
|
||||
This can be compiled into more general executable programs using Clang, gcc,
|
||||
or other standard C compilers.
|
||||
<ul class="items"><li>● a page in a web browser, where the story runs as JavaScript, using <a href="inform6.html" class="internal">inform6</a>
|
||||
and then <a href="inblorb/index.html" class="internal">inblorb</a>, other tools in the Inform toolchain;
|
||||
</li><li>● a "story file" which an app called an "interpreter" plays through, using
|
||||
<a href="inform6.html" class="internal">inform6</a> alone; or
|
||||
</li><li>● an executable program which can be run on the command line, using a standard
|
||||
C compiler such as <span class="extract"><span class="extract-syntax">clang</span></span> or <span class="extract"><span class="extract-syntax">gcc</span></span>.
|
||||
</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>The compiler runs in Stages, numbered 1 to 7, and each contains many sub-tasks.
|
||||
But like most compilers, it can be summarised as turning its input first into
|
||||
an AST or "abstract syntax tree"<sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup> and then into an "intermediate representation",
|
||||
which in our case is called Inter. Kits have been compiled in advance by a different
|
||||
flow path, directly into Inter. A weak form<sup id="fnref:2"><a href="#fn:2" rel="footnote">2</a></sup> of linker inside the Inform compiler
|
||||
loads and combines those pre-compiled Inter files with the main body, and so
|
||||
completes an intermediate representation for the story. This can then be optimised and
|
||||
turned into various choices of output.
|
||||
</p>
|
||||
|
||||
<p class="commentary">Inform 7 presents as three command-line tools, not one: <a href="inbuild/index.html" class="internal">inbuild</a>, <a href="inform7/index.html" class="internal">inform7</a>
|
||||
and <a href="inter/index.html" class="internal">inter</a>. Really, though, they are three points of access to the same code
|
||||
base. <a href="inbuild/index.html" class="internal">inbuild</a> contains Stage 1 as a stand-alone tool, <a href="inter/index.html" class="internal">inter</a> contains Stages
|
||||
5 to 7 as a stand-alone tool, and <a href="inform7/index.html" class="internal">inform7</a> is the entire compiler (Stages 1 to 7)
|
||||
in one. Each tool has its own CLI (or "command-line interface"): see
|
||||
<a href="inbuild/M-ui.html" class="internal">Manual (in inbuild)</a>, <a href="inform7/M-cu.html" class="internal">Manual (in inform7)</a>, <a href="inter/M-ui.html" class="internal">Manual (in inter)</a> and
|
||||
<a href="inbuild/M-rc.html" class="internal">Reference Card (in inbuild)</a>, <a href="inform7/M-rc.html" class="internal">Reference Card (in inform7)</a>, <a href="inter/M-rc.html" class="internal">Reference Card (in inter)</a>.
|
||||
</p>
|
||||
|
||||
<ul class="footnotetexts"><li class="footnote" id="fn:1"><p class="inwebfootnote"><sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup> Though in this source we usually call it an "annotated syntax tree" or simply
|
||||
"syntax tree" to avoid the issue of whether it is concrete or abstract.
|
||||
<a href="#fnref:1" title="return to text"> ↩</a></p></li><li class="footnote" id="fn:2"><p class="inwebfootnote"><sup id="fnref:2"><a href="#fn:2" rel="footnote">2</a></sup> Weak in that the <a href="inter/index.html" class="internal">inter</a> tool can link any number of kits to a source text,
|
||||
but not a source text to a source text.
|
||||
<a href="#fnref:2" title="return to text"> ↩</a></p></li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>The flow of data looks like so, with time running downwards on the page. Dotted
|
||||
arrows are where work is done by tools other than <a href="inform7/index.html" class="internal">inform7</a>:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">main</span><span class="plain-syntax"> </span><span class="element-syntax">source</span><span class="plain-syntax"> </span><span class="element-syntax">text</span><span class="plain-syntax"> </span><span class="element-syntax">extension</span><span class="plain-syntax"> </span><span class="element-syntax">source</span><span class="plain-syntax"> </span><span class="element-syntax">texts</span>
|
||||
<span class="plain-syntax"> \ /</span>
|
||||
<span class="plain-syntax"> \ / </span><span class="function-syntax">INFORM7</span><span class="plain-syntax"> </span><span class="element-syntax">Stage</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax"> </span><span class="element-syntax">or</span><span class="plain-syntax"> </span><span class="function-syntax">INBUILD</span>
|
||||
<span class="plain-syntax"> \ /</span>
|
||||
<span class="plain-syntax"> \|/ \|/</span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">syntax</span><span class="plain-syntax"> </span><span class="element-syntax">tree</span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">kit</span><span class="plain-syntax"> </span><span class="element-syntax">sources</span><span class="plain-syntax"> |</span>
|
||||
<span class="plain-syntax"> (</span><span class="element-syntax">in</span><span class="plain-syntax"> </span><span class="element-syntax">Inform</span><span class="plain-syntax"> </span><span class="constant-syntax">6</span><span class="plain-syntax"> </span><span class="element-syntax">code</span><span class="plain-syntax">) | </span><span class="function-syntax">INFORM7</span><span class="plain-syntax"> </span><span class="element-syntax">Stages</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span><span class="plain-syntax"> </span><span class="element-syntax">to</span><span class="plain-syntax"> </span><span class="constant-syntax">5</span>
|
||||
<span class="plain-syntax"> </span><span class="function-syntax">INTER</span><span class="plain-syntax"> | |</span>
|
||||
<span class="plain-syntax"> \|/ \|/</span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">precompiled</span><span class="plain-syntax"> </span><span class="element-syntax">Inter</span><span class="plain-syntax"> </span><span class="element-syntax">trees</span><span class="plain-syntax"> </span><span class="element-syntax">Inter</span><span class="plain-syntax"> </span><span class="element-syntax">tree</span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">kit</span><span class="plain-syntax"> </span><span class="element-syntax">sources</span><span class="plain-syntax"> </span><span class="element-syntax">main</span><span class="plain-syntax"> </span><span class="element-syntax">source</span><span class="plain-syntax"> </span><span class="element-syntax">text</span><span class="plain-syntax"> </span><span class="element-syntax">extension</span><span class="plain-syntax"> </span><span class="element-syntax">source</span><span class="plain-syntax"> </span><span class="element-syntax">texts</span>
|
||||
<span class="plain-syntax"> (</span><span class="element-syntax">in</span><span class="plain-syntax"> </span><span class="element-syntax">Inform</span><span class="plain-syntax"> </span><span class="constant-syntax">6</span><span class="plain-syntax"> </span><span class="element-syntax">code</span><span class="plain-syntax">) \ /</span>
|
||||
<span class="plain-syntax"> | \ / </span><span class="function-syntax">INFORM7</span><span class="plain-syntax"> </span><span class="element-syntax">Stage</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax"> </span><span class="element-syntax">or</span><span class="plain-syntax"> </span><span class="function-syntax">INBUILD</span>
|
||||
<span class="plain-syntax"> | </span><span class="function-syntax">INTER</span><span class="plain-syntax"> \ /</span>
|
||||
<span class="plain-syntax"> \|/ \|/ \|/</span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">precompiled</span><span class="plain-syntax"> </span><span class="element-syntax">syntax</span><span class="plain-syntax"> </span><span class="element-syntax">tree</span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">Inter</span><span class="plain-syntax"> </span><span class="element-syntax">trees</span><span class="plain-syntax"> |</span>
|
||||
<span class="plain-syntax"> . | </span><span class="function-syntax">INFORM7</span><span class="plain-syntax"> </span><span class="element-syntax">Stages</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span><span class="plain-syntax"> </span><span class="element-syntax">to</span><span class="plain-syntax"> </span><span class="constant-syntax">5</span>
|
||||
<span class="plain-syntax"> . |</span>
|
||||
<span class="plain-syntax"> . . . . . . . </span><span class="element-syntax">precompiled</span><span class="plain-syntax"> \|/</span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">Inter</span><span class="plain-syntax"> </span><span class="element-syntax">trees</span><span class="plain-syntax"> </span><span class="element-syntax">Inter</span><span class="plain-syntax"> </span><span class="element-syntax">tree</span>
|
||||
<span class="plain-syntax"> \ /</span>
|
||||
<span class="plain-syntax"> \ / </span><span class="function-syntax">INFORM7</span><span class="plain-syntax"> </span><span class="element-syntax">Stage</span><span class="plain-syntax"> </span><span class="constant-syntax">6</span><span class="plain-syntax"> </span><span class="element-syntax">or</span><span class="plain-syntax"> </span><span class="function-syntax">INTER</span>
|
||||
<span class="plain-syntax"> \|/ \|/</span>
|
||||
|
@ -101,18 +129,18 @@ or other standard C compilers.
|
|||
<span class="plain-syntax"> / | \ </span><span class="function-syntax">INFORM7</span><span class="plain-syntax"> </span><span class="element-syntax">Stage</span><span class="plain-syntax"> </span><span class="constant-syntax">7</span><span class="plain-syntax"> </span><span class="element-syntax">or</span><span class="plain-syntax"> </span><span class="function-syntax">INTER</span>
|
||||
<span class="plain-syntax"> \|/ \|/ \|/</span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">Inform</span><span class="plain-syntax"> </span><span class="constant-syntax">6</span><span class="plain-syntax"> </span><span class="element-syntax">code</span><span class="plain-syntax"> </span><span class="element-syntax">C</span><span class="plain-syntax"> </span><span class="element-syntax">code</span><span class="plain-syntax"> </span><span class="element-syntax">index</span><span class="plain-syntax"> </span><span class="element-syntax">mini</span><span class="plain-syntax">-</span><span class="element-syntax">website</span>
|
||||
<span class="plain-syntax"> | |</span>
|
||||
<span class="plain-syntax"> </span><span class="function-syntax">INFORM6</span><span class="plain-syntax"> | | </span><span class="function-syntax">CLANG</span><span class="plain-syntax"> </span><span class="element-syntax">or</span><span class="plain-syntax"> </span><span class="function-syntax">GCC</span>
|
||||
<span class="plain-syntax"> \|/ \|/</span>
|
||||
<span class="plain-syntax"> : :</span>
|
||||
<span class="plain-syntax"> </span><span class="function-syntax">INFORM6</span><span class="plain-syntax"> : : </span><span class="function-syntax">CLANG</span><span class="plain-syntax"> </span><span class="element-syntax">or</span><span class="plain-syntax"> </span><span class="function-syntax">GCC</span>
|
||||
<span class="plain-syntax"> \:/ \:/</span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">story</span><span class="plain-syntax"> </span><span class="element-syntax">file</span><span class="plain-syntax"> </span><span class="element-syntax">executable</span>
|
||||
<span class="plain-syntax"> |</span>
|
||||
<span class="plain-syntax"> </span><span class="function-syntax">INBLORB</span><span class="plain-syntax"> |</span>
|
||||
<span class="plain-syntax"> \|/</span>
|
||||
<span class="plain-syntax"> :</span>
|
||||
<span class="plain-syntax"> </span><span class="function-syntax">INBLORB</span><span class="plain-syntax"> :</span>
|
||||
<span class="plain-syntax"> \:/</span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">playable</span><span class="plain-syntax"> </span><span class="element-syntax">website</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>The Inform 7 transpiler, then, occupies the top two-thirds of the above diagram.
|
||||
Broadly speaking, it runs in seven stages, and the code for each stage is made
|
||||
up of one or more "modules", as follows:
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b>The source code is divided up into "modules", each of which is a literate
|
||||
program or web in its own right. Most modules are used mostly in particular
|
||||
stages of the compilation, which are as follows:
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>● Stage 1. A build manager called <a href="supervisor-module/index.html" class="internal">supervisor</a> gathers what must be compiled.
|
||||
|
@ -131,16 +159,8 @@ more of a layer than a stage, providing services to Stages 4, 6 and 7.
|
|||
</li><li>● Stage 7. <a href="final-module/index.html" class="internal">final</a> generates final code and <a href="index-module/index.html" class="internal">index</a> generates human-readable
|
||||
Index pages, which forn a small website about the project.
|
||||
</li></ul>
|
||||
<p class="commentary">Inform 7 presents as three command-line tools, not one: <a href="inbuild/index.html" class="internal">inbuild</a>, <a href="inform7/index.html" class="internal">inform7</a>
|
||||
and <a href="inter/index.html" class="internal">inter</a>. Really, though, they are three points of access to the same code
|
||||
base. <a href="inbuild/index.html" class="internal">inbuild</a> contains Stage 1 as a stand-alone tool, <a href="inter/index.html" class="internal">inter</a> contains Stages
|
||||
5 to 7 as a stand-alone tool, and <a href="inform7/index.html" class="internal">inform7</a> is the entire compiler (Stages 1 to 7)
|
||||
in one. Each tool has its own CLI (or "command-line interface"): see
|
||||
<a href="inbuild/M-ui.html" class="internal">Manual (in inbuild)</a>, <a href="inform7/M-cu.html" class="internal">Manual (in inform7)</a>, <a href="inter/M-ui.html" class="internal">Manual (in inter)</a> and
|
||||
<a href="inbuild/M-rc.html" class="internal">Reference Card (in inbuild)</a>, <a href="inform7/M-rc.html" class="internal">Reference Card (in inform7)</a>, <a href="inter/M-rc.html" class="internal">Reference Card (in inter)</a>.
|
||||
</p>
|
||||
|
||||
<p class="commentary">The full breakdown of these three tools into modules is as follows:
|
||||
<p class="commentary">The full breakdown of the three tools <a href="inbuild/index.html" class="internal">inbuild</a>, <a href="inform7/index.html" class="internal">inform7</a> and <a href="inter/index.html" class="internal">inter</a>
|
||||
into modules is as follows:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -192,24 +212,11 @@ in one. Each tool has its own CLI (or "command-line interface"): see
|
|||
<span class="plain-syntax">| (</span><span class="element-syntax">standard</span><span class="plain-syntax"> </span><span class="element-syntax">C</span><span class="plain-syntax"> </span><span class="element-syntax">library</span><span class="plain-syntax">) |</span>
|
||||
<span class="plain-syntax">+-----------------------------------------------------------------------+</span>
|
||||
</pre>
|
||||
<p class="commentary">Note that all three tools use a "services" library, made up of a variety of modules
|
||||
providing services useful for natural language-based programs. At one time this
|
||||
was going to be called "Second Foundation" or possibly "Foundation and Empire",
|
||||
because there is also <a href="../../inweb/docs/foundation-module/index.html" class="internal">foundation</a> underneath, a library of utility functions
|
||||
provided by <a href="../../inweb/docs/index.html" class="internal">inweb</a>.
|
||||
<p class="commentary">Note that all three tools use a <a href="services.html" class="internal">services</a> library, made up of a variety of modules
|
||||
providing services useful for natural language-based programs, and also the
|
||||
<a href="../../inweb/docs/foundation-module/index.html" class="internal">foundation</a> library of utility functions provided by <a href="../../inweb/docs/index.html" class="internal">inweb</a>.
|
||||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>That's a lot: for code-spelunkers, this is quite the limestone hillside of
|
||||
potential points of entry. Where to begin? Here are some suggested entrances:
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>(a) See <a href="supervisor-module/P-wtmd.html" class="internal">What This Module Does (in supervisor)</a> for an overview of the
|
||||
build-management process.
|
||||
</li><li>(b) Or take that on trust, and see <a href="core-module/P-wtmd.html" class="internal">What This Module Does (in core)</a> for
|
||||
an overview of how Inform 7 basically works.
|
||||
</li><li>(c) If you're more interested in the low-level representation of Inter code,
|
||||
and how to generate from it, see <a href="bytecode-module/P-wtmd.html" class="internal">What This Module Does (in bytecode)</a>.
|
||||
</li></ul>
|
||||
<!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
nav[role="navigation"] {
|
||||
width: 180px;
|
||||
position: fixed;
|
||||
overflow: scroll;
|
||||
left: 0;
|
||||
|
|
BIN
docs/docs-assets/ext.jpg
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
docs/docs-assets/foundation.jpg
Normal file
After Width: | Height: | Size: 108 KiB |
BIN
docs/docs-assets/ifext.jpg
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
docs/docs-assets/ifkit.jpg
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
docs/docs-assets/inblorb.jpg
Normal file
After Width: | Height: | Size: 33 KiB |
BIN
docs/docs-assets/inbuild.jpg
Normal file
After Width: | Height: | Size: 149 KiB |
BIN
docs/docs-assets/indoc.jpg
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
docs/docs-assets/inform6.jpg
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
docs/docs-assets/inform7.jpg
Normal file
After Width: | Height: | Size: 193 KiB |
BIN
docs/docs-assets/inpolicy.jpg
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
docs/docs-assets/inrtps.jpg
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
docs/docs-assets/inter.jpg
Normal file
After Width: | Height: | Size: 183 KiB |
BIN
docs/docs-assets/intest.jpg
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
docs/docs-assets/inweb.jpg
Normal file
After Width: | Height: | Size: 34 KiB |
BIN
docs/docs-assets/kit.jpg
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
docs/docs-assets/services.jpg
Normal file
After Width: | Height: | Size: 93 KiB |
BIN
docs/docs-assets/web.jpg
Normal file
After Width: | Height: | Size: 11 KiB |
189
docs/index.html
|
@ -1,7 +1,11 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Overview</title>
|
||||
<title>Inform: The Program</title>
|
||||
<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
|
||||
<link rel="stylesheet" href="https://www.w3schools.com/lib/w3-theme-black.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.3.0/css/font-awesome.min.css">
|
||||
|
||||
<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">
|
||||
|
@ -20,10 +24,11 @@
|
|||
<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>
|
||||
<ul><li><span class="unlink">home</span></li>
|
||||
<li><a href="compiler.html">structure</a></li>
|
||||
<li><a href="services.html">services</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>Repository</h2><ul>
|
||||
<li><a href="https://github.com/ganelson/inform"><img src="docs-assets/github.png" height=18> github</a></li>
|
||||
</ul><h2>Related Projects</h2><ul>
|
||||
|
@ -33,47 +38,155 @@
|
|||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<!--Weave of 'Overview' generated by Inweb-->
|
||||
<!--Weave of 'Inform: The Program' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><b>Overview</b></li></ul></div>
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>This is the home page for the source code for the Inform 7 programming
|
||||
language. For the language itself, its documentation, and downloads of the
|
||||
apps for different platforms, see: <a href="http://www.inform7.com" class="external">http://www.inform7.com</a>
|
||||
<ul class="crumbs"><li><b>Inform: The Program</b></li></ul></div>
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a>Inform is a programming language used for interactive fiction and other creative
|
||||
purposes. Most users engage with it as an app on their devices: there are apps
|
||||
for MacOS, Windows, Linux and Android, but in the centre of each is the same
|
||||
core compiler and software.
|
||||
</p>
|
||||
|
||||
<p class="commentary">Almost everything here is a "web", or "literate program", powered by <a href="../../inweb/docs/index.html" class="internal">inweb</a>.
|
||||
Those new to literate programming may want first to try the modest examples
|
||||
there (say, <a href="../../inweb/docs/goldbach/index.html" class="internal">goldbach</a>), and skim the <a href="../../inweb/docs/index.html" class="internal">inweb</a> manual.
|
||||
</p>
|
||||
|
||||
<p class="commentary">These pages host "woven", human-readable, forms of the source and are intended
|
||||
for browsing. To obtain and build the software, or to see resources which
|
||||
are not webs and thus not here, see: <a href="https://github.com/ganelson/inform" class="external">https://github.com/ganelson/inform</a>
|
||||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>The Inform 7 compiler comes with a large penumbra of supporting resources,
|
||||
so there are around 50 webs in this repository:
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>(a) The compiler is built from around 20 modules, plus three front-end command
|
||||
line tools controlling them. See <a href="compiler.html" class="internal">compiler</a> for a map.
|
||||
</li><li>(b) See <a href="other.html" class="internal">other</a> for command-line tools useful for building or working with
|
||||
Inform, but not involving compilation: <a href="inblorb/index.html" class="internal">inblorb</a>, a packager; <a href="indoc/index.html" class="internal">indoc</a>, to
|
||||
format documentation; <a href="inpolicy/index.html" class="internal">inpolicy</a>, a lint-like tool for checking Inform's
|
||||
source code; and <a href="inrtps/index.html" class="internal">inrtps</a>, to format run-time problem messages.
|
||||
</li><li>(c) The extensions "Basic Inform" (<a href="basic_inform/index.html" class="internal">basic_inform</a>) and "Standard Rules"
|
||||
(<a href="standard_rules/index.html" class="internal">standard_rules</a>), together with a number of "kits" of precompiled Inter
|
||||
code: see <a href="extensions.html" class="internal">extensions</a>.
|
||||
</li><li>(d) Small unit-test tools to exercise the modules mentioned in (a): see <a href="units.html" class="internal">units</a>.
|
||||
<ul class="items"><li>● For user documentation, and downloads of the apps, go to the Inform home page
|
||||
at: <a href="http://www.inform7.com" class="external">http://www.inform7.com</a>
|
||||
</li><li>● To download the source for the core compiler, build it, and run it at the command
|
||||
line rather than through the apps, go to the main GitHub repository
|
||||
at: <a href="https://github.com/ganelson/inform" class="external">https://github.com/ganelson/inform</a>
|
||||
</li><li>● Inform is a set of "literate programs", written as "webs" of
|
||||
source code designed to be read by humans (in "woven" form), as well as
|
||||
executed by computers (in "tangled" form). For more on literate programming,
|
||||
go to the tool used by the Inform project: <a href="../../inweb/docs/index.html" class="internal">inweb</a>
|
||||
</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>Three webs are conspicuously missing, but only because they are on similar
|
||||
mini-websites on other Github repositories:
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a>Inform is not a single program. There are around 50 webs in all, together
|
||||
with some images, PDF files, sets of test cases, documentation, and so on.
|
||||
This page is intended as a jumping-off point to navigate these.
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>(a) <a href="../../inweb/docs/index.html" class="internal">inweb</a> itself, and its function library, <a href="../../inweb/docs/foundation-module/index.html" class="internal">foundation</a>, which all of
|
||||
the Inform tools use;
|
||||
</li><li>(b) the testing utility <a href="../../intest/docs/index.html" class="internal">intest</a>, which has a repository of its own.
|
||||
</li></ul>
|
||||
<div class="inweb-extract">
|
||||
<div class="w3-row-padding w3-padding-16 w3-center" id="food">
|
||||
<div class="w3-quarter">
|
||||
<a href="compiler.html"><img src="docs-assets/inbuild.jpg" alt="Inbuild" style="width:100%"></a>
|
||||
<h3><a href="compiler.html">inbuild</a></h3>
|
||||
<p>A stand-alone build manager which is also Stage I of the Inform compiler.</p>
|
||||
</div>
|
||||
<div class="w3-quarter">
|
||||
<a href="compiler.html"><img src="docs-assets/inform7.jpg" alt="Inform 7" style="width:100%"></a>
|
||||
<h3><a href="compiler.html">inform7</a></h3>
|
||||
<p>The core Inform compiler.</p>
|
||||
</div>
|
||||
<div class="w3-quarter">
|
||||
<a href="compiler.html"><img src="docs-assets/inter.jpg" alt="Inter" style="width:100%"></a>
|
||||
<h3><a href="compiler.html">inter</a></h3>
|
||||
<p>A stand-alone tool for intermediate-level code, which is
|
||||
also Stages VI and VII of the Inform compiler.</p>
|
||||
</div>
|
||||
<div class="w3-quarter">
|
||||
<a href="services.html"><img src="docs-assets/services.jpg" alt="Services" style="width:100%"></a>
|
||||
<h3><a href="services.html">services</a></h3>
|
||||
<p>Support for predicate calculus, linguistics, abstract syntax trees and
|
||||
other facilities needed by the compiler tools.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="w3-row-padding w3-padding-16 w3-center">
|
||||
<div class="w3-quarter">
|
||||
<img src="docs-assets/inblorb.jpg" alt="Inblorb" style="width:100%">
|
||||
<h3>inblorb</h3>
|
||||
<p>A packaging tool for wrapping interactive fiction story files,
|
||||
included with the Inform apps but not as a part of the inform7 executable.</p>
|
||||
</div>
|
||||
<div class="w3-quarter">
|
||||
<a href="compiler.html"><img src="docs-assets/inform6.jpg" alt="Inform 6" style="width:100%"></a>
|
||||
<h3><a href="compiler.html">inform6</a></h3>
|
||||
<p>A compiler for a low-level programming language,
|
||||
included with the Inform apps but not as a part of the inform7 executable.</p>
|
||||
</div>
|
||||
<div class="w3-quarter">
|
||||
<img src="docs-assets/ext.jpg" alt="Basic Inform" style="width:100%">
|
||||
<h3>Basic Inform</h3>
|
||||
<p>The Inform 7 extension read automatically into every project,
|
||||
defining much of the language.</p>
|
||||
</div>
|
||||
<div class="w3-quarter">
|
||||
<img src="docs-assets/ifext.jpg" alt="Standard Rules" style="width:100%">
|
||||
<h3>Standard Rules</h3>
|
||||
<p>The Inform 7 extension read automatically into every interactive
|
||||
fiction project, defining much of the world model.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="w3-row-padding w3-padding-16 w3-center">
|
||||
<div class="w3-quarter">
|
||||
<img src="docs-assets/kit.jpg" alt="BasicInformKit" style="width:100%">
|
||||
<h3>BasicInformKit</h3>
|
||||
<p>A kit of Inter code providing runtime support for all programs written
|
||||
with Inform. Included with the apps in precompiled form.</p>
|
||||
</div>
|
||||
<div class="w3-quarter">
|
||||
<img src="docs-assets/kit.jpg" alt="BasicInformExtrasKit" style="width:100%">
|
||||
<h3>BasicInformExtrasKit</h3>
|
||||
<p>A kit of Inter code providing runtime support for all programs not using
|
||||
WorldModelKit. Included with the apps in precompiled form.</p>
|
||||
</div>
|
||||
<div class="w3-quarter">
|
||||
<img src="docs-assets/ifkit.jpg" alt="WorldModelKit" style="width:100%">
|
||||
<h3>WorldModelKit</h3>
|
||||
<p>A kit of Inter code providing runtime support for interactive fiction
|
||||
projects with a simulated world. Included with the apps in precompiled form.</p>
|
||||
</div>
|
||||
<div class="w3-quarter">
|
||||
<img src="docs-assets/ifkit.jpg" alt="CommandParserKit" style="width:100%">
|
||||
<h3>CommandParserKit</h3>
|
||||
<p>A kit of Inter code providing runtime support for interactive fiction
|
||||
projects with a command parser interface. Included with the apps in precompiled form.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="w3-row-padding w3-padding-16 w3-center">
|
||||
<div class="w3-quarter">
|
||||
<img src="docs-assets/indoc.jpg" alt="Indoc" style="width:100%">
|
||||
<h3>indoc</h3>
|
||||
<p>A tool for typesetting the two books about Inform, and their hundreds
|
||||
of examples, so that these are readable in the apps. Needed by Inform
|
||||
(and Inform website) maintainers, but not end users.</p>
|
||||
</div>
|
||||
<div class="w3-quarter">
|
||||
<img src="docs-assets/inpolicy.jpg" alt="Inpolicy" style="width:100%">
|
||||
<h3>inpolicy</h3>
|
||||
<p>A small tool for checking that the Inform source base complies
|
||||
with some self-imposed social norms. Needed by Inform maintainers, but not end users.</p>
|
||||
</div>
|
||||
<div class="w3-quarter">
|
||||
<img src="docs-assets/inrtps.jpg" alt="Inrtps" style="width:100%">
|
||||
<h3>inrtps</h3>
|
||||
<p>A small tool for formatting the run-time problem displays included
|
||||
with the Inform apps. Needed by Inform maintainers, but not end users.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="w3-row-padding w3-padding-16 w3-center">
|
||||
<div class="w3-quarter">
|
||||
<img src="docs-assets/inweb.jpg" alt="Inweb" style="width:100%">
|
||||
<h3>inweb</h3>
|
||||
<p>A literate-programming tool needed to build the other Inform tools.
|
||||
Needed by Inform maintainers, but not end users.</p>
|
||||
</div>
|
||||
<div class="w3-quarter">
|
||||
<img src="docs-assets/intest.jpg" alt="Intest" style="width:100%">
|
||||
<h3>intest</h3>
|
||||
<p>A tool for running complex suites of end-to-end tests to verify the
|
||||
correctness of other tools. Needed by Inform maintainers, but not end users.</p>
|
||||
</div>
|
||||
<div class="w3-quarter">
|
||||
<img src="docs-assets/services.jpg" alt="Foundation" style="width:100%">
|
||||
<h3>foundation</h3>
|
||||
<p>A module of basic computing services used across all of the Inform
|
||||
tool-chain: file-handling, generating HTML, semantic version-numbering,
|
||||
string-handling, memory management.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
117
docs/inform6.html
Normal file
|
@ -0,0 +1,117 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>A note about Inform 6</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">
|
||||
<link href="docs-assets/Colours.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><a href="imperative-module/index.html">imperative</a></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="pipeline-module/index.html">pipeline</a></li>
|
||||
<li><a href="final-module/index.html">final</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">
|
||||
<!--Weave of 'A note about Inform 6' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="index.html">Home</a></li><li><b>A note about Inform 6</b></li></ul></div>
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>The Inform system of today sometimes uses the Inform system of yesteryear,
|
||||
<span class="extract"><span class="extract-syntax">inform6</span></span>, as a final stage of compilation, a stage largely invisible to end
|
||||
users of the Inform apps. See <a href="compiler.html" class="internal">compiler</a> for a diagram of how the tools
|
||||
are combined in use.
|
||||
</p>
|
||||
|
||||
<p class="commentary">Inform 6 is a C-like language designed to be compiled to the specialist Z-machine
|
||||
or Glulx virtual machines, which in turn were designed for interactive fiction.
|
||||
The Inform 7 repository at Github contains a copy of the most recent stable
|
||||
release of the Inform 6 compiler, but this is only a copy.
|
||||
</p>
|
||||
|
||||
<p class="commentary">The Inform 6 compiler repository is here:
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>● <a href="https://github.com/DavidKinder/Inform6" class="external">https://github.com/DavidKinder/Inform6</a>
|
||||
</li></ul>
|
||||
<p class="commentary">Note that this is a straight-up C program, and not a literate program needing
|
||||
<a href="../../inweb/docs/index.html" class="internal">inweb</a> to compile.
|
||||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>The I7 repository does not contain the Inform 6 "Designer's Manual 4th Edition",
|
||||
the "DM4", or the Inform 6 Technical Manual, for which see:
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>● <a href="https://www.inform-fiction.org/manual/html/contents.html" class="external">https://www.inform-fiction.org/manual/html/contents.html</a>
|
||||
</li><li>● <a href="https://www.inform-fiction.org/source/tm/index.html" class="external">https://www.inform-fiction.org/source/tm/index.html</a>
|
||||
</li></ul>
|
||||
<p class="commentary">The I7 repository also does not contain the Inform 6 library, which is not used
|
||||
by Inform 7: but see —
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>● <a href="https://gitlab.com/DavidGriffith/inform6lib" class="external">https://gitlab.com/DavidGriffith/inform6lib</a>
|
||||
</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>However, the I7 repository does contain a version of Andrew Plotkin's test suite
|
||||
for the I6 compiler:
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>● <a href="https://github.com/erkyrath/Inform6-Testing" class="external">https://github.com/erkyrath/Inform6-Testing</a>
|
||||
</li></ul>
|
||||
<p class="commentary">ported to use <a href="../../intest/docs/index.html" class="internal">intest</a> rather than the Python script originally supplied. So
|
||||
if you've already built the Inform 7 tool chain, and are already using intest
|
||||
to test <a href="inform7/index.html" class="internal">inform7</a> and the others, then you can run this suite against the
|
||||
included copy of the I6 compiler as well.
|
||||
</p>
|
||||
|
||||
<!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -84,14 +84,14 @@ which take more than 1/1000th of the total running time.
|
|||
|
||||
<pre class="undisplayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">100.0% in inform7 run</span>
|
||||
<span class="plain-syntax"> 69.0% in compilation to Inter</span>
|
||||
<span class="plain-syntax"> 47.9% in </span><a href="../core-module/1-htc.html#SP9" class="internal">Sequence::undertake_queued_tasks</a>
|
||||
<span class="plain-syntax"> 4.9% in </span><a href="../assertions-module/2-ptmn.html#SP1" class="internal">MajorNodes::pre_pass</a>
|
||||
<span class="plain-syntax"> 68.6% in compilation to Inter</span>
|
||||
<span class="plain-syntax"> 47.6% in </span><a href="../core-module/1-htc.html#SP9" class="internal">Sequence::undertake_queued_tasks</a>
|
||||
<span class="plain-syntax"> 4.7% in </span><a href="../assertions-module/2-ptmn.html#SP1" class="internal">MajorNodes::pre_pass</a>
|
||||
<span class="plain-syntax"> 3.4% in </span><a href="../assertions-module/2-ptmn.html#SP1" class="internal">MajorNodes::pass_1</a>
|
||||
<span class="plain-syntax"> 2.4% in </span><a href="../runtime-module/6-pi.html#SP1" class="internal">RTPhrasebook::compile_entries</a>
|
||||
<span class="plain-syntax"> 1.7% in </span><a href="../assertions-module/5-id.html#SP4" class="internal">ImperativeDefinitions::assess_all</a>
|
||||
<span class="plain-syntax"> 1.5% in </span><a href="../runtime-module/5-kc.html#SP10" class="internal">RTKindConstructors::compile</a>
|
||||
<span class="plain-syntax"> 0.9% in </span><a href="../core-module/1-htc.html#SP12" class="internal">Sequence::lint_inter</a>
|
||||
<span class="plain-syntax"> 1.1% in </span><a href="../core-module/1-htc.html#SP12" class="internal">Sequence::lint_inter</a>
|
||||
<span class="plain-syntax"> 0.5% in </span><a href="../assertions-module/5-id.html#SP5" class="internal">ImperativeDefinitions::compile_first_block</a>
|
||||
<span class="plain-syntax"> 0.5% in </span><a href="../assertions-module/2-ptmn.html#SP1" class="internal">MajorNodes::pass_2</a>
|
||||
<span class="plain-syntax"> 0.5% in </span><a href="../core-module/1-htc.html#SP9" class="internal">Sequence::undertake_queued_tasks</a>
|
||||
|
@ -103,19 +103,19 @@ which take more than 1/1000th of the total running time.
|
|||
<span class="plain-syntax"> 0.1% in </span><a href="../core-module/1-wtc.html#SP9" class="internal">Task::make_built_in_kind_constructors</a>
|
||||
<span class="plain-syntax"> 0.1% in </span><a href="../knowledge-module/5-tmw.html#SP3" class="internal">World::stages_II_and_III</a>
|
||||
<span class="plain-syntax"> 2.4% not specifically accounted for</span>
|
||||
<span class="plain-syntax"> 28.2% in running Inter pipeline</span>
|
||||
<span class="plain-syntax"> 10.1% in inter step 14/14: generate inform6 -> auto.inf</span>
|
||||
<span class="plain-syntax"> 7.2% in inter step 5/14: load-binary-kits</span>
|
||||
<span class="plain-syntax"> 6.2% in inter step 6/14: make-synoptic-module</span>
|
||||
<span class="plain-syntax"> 1.5% in inter step 9/14: make-identifiers-unique</span>
|
||||
<span class="plain-syntax"> 0.3% in inter step 12/14: eliminate-redundant-operations</span>
|
||||
<span class="plain-syntax"> 0.3% in inter step 4/14: compile-splats</span>
|
||||
<span class="plain-syntax"> 0.3% in inter step 7/14: shorten-wiring</span>
|
||||
<span class="plain-syntax"> 0.3% in inter step 8/14: detect-indirect-calls</span>
|
||||
<span class="plain-syntax"> 0.1% in inter step 11/14: eliminate-redundant-labels</span>
|
||||
<span class="plain-syntax"> 28.6% in running Inter pipeline</span>
|
||||
<span class="plain-syntax"> 10.2% in step 14/14: generate inform6 -> auto.inf</span>
|
||||
<span class="plain-syntax"> 7.5% in step 5/14: load-binary-kits</span>
|
||||
<span class="plain-syntax"> 6.2% in step 6/14: make-synoptic-module</span>
|
||||
<span class="plain-syntax"> 1.5% in step 9/14: make-identifiers-unique</span>
|
||||
<span class="plain-syntax"> 0.3% in step 12/14: eliminate-redundant-operations</span>
|
||||
<span class="plain-syntax"> 0.3% in step 4/14: compile-splats</span>
|
||||
<span class="plain-syntax"> 0.3% in step 7/14: shorten-wiring</span>
|
||||
<span class="plain-syntax"> 0.3% in step 8/14: detect-indirect-calls</span>
|
||||
<span class="plain-syntax"> 0.1% in step 11/14: eliminate-redundant-labels</span>
|
||||
<span class="plain-syntax"> 1.3% not specifically accounted for</span>
|
||||
<span class="plain-syntax"> 2.0% in supervisor</span>
|
||||
<span class="plain-syntax"> 0.6% not specifically accounted for</span>
|
||||
<span class="plain-syntax"> 2.2% in supervisor</span>
|
||||
<span class="plain-syntax"> 0.4% not specifically accounted for</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. Memory consumption. </b>The following gives some idea of which classes of object have the most
|
||||
instances, and also of how Inform's memory tends to be used in practice.
|
||||
|
@ -124,57 +124,57 @@ represent less than 1/1000th of the total.
|
|||
</p>
|
||||
|
||||
<pre class="undisplayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">Total memory consumption was 379100K = 370 MB</span>
|
||||
<span class="plain-syntax">Total memory consumption was 126308K = 123 MB</span>
|
||||
|
||||
<span class="plain-syntax">66.6% was used for 2005764 objects, in 360735 frames in 316 x 800K = 252800K = 246 MB:</span>
|
||||
<span class="plain-syntax"> ---- was used for 2006043 objects, in 360816 frames in 0 x 800K = 0K = 0 MB:</span>
|
||||
|
||||
<span class="plain-syntax"> 10.7% inter_tree_node_array 58 x 8192 = 475136 objects, 41813824 bytes</span>
|
||||
<span class="plain-syntax"> 6.2% text_stream_array 4340 x 100 = 434000 objects, 24442880 bytes</span>
|
||||
<span class="plain-syntax"> 6.2% linked_list 43264 objects, 24227840 bytes</span>
|
||||
<span class="plain-syntax"> 3.6% inter_symbol_array 132 x 1024 = 135168 objects, 14061696 bytes</span>
|
||||
<span class="plain-syntax"> 3.4% inter_error_stash_array 101 x 1024 = 103424 objects, 13241504 bytes</span>
|
||||
<span class="plain-syntax"> 2.6% parse_node 129462 objects, 10356960 bytes</span>
|
||||
<span class="plain-syntax"> 1.9% verb_conjugation 160 objects, 7425280 bytes</span>
|
||||
<span class="plain-syntax"> 1.4% parse_node_annotation_array 345 x 500 = 172500 objects, 5531040 bytes</span>
|
||||
<span class="plain-syntax"> 0.8% pcalc_prop_array 25 x 1000 = 25000 objects, 3400800 bytes</span>
|
||||
<span class="plain-syntax"> 0.8% inter_name_array 67 x 1000 = 67000 objects, 3218144 bytes</span>
|
||||
<span class="plain-syntax"> 0.6% kind_array 66 x 1000 = 66000 objects, 2642112 bytes</span>
|
||||
<span class="plain-syntax"> 0.5% inter_name_generator_array 51 x 1000 = 51000 objects, 2041632 bytes</span>
|
||||
<span class="plain-syntax"> 0.5% inter_schema_token 13926 objects, 2005344 bytes</span>
|
||||
<span class="plain-syntax"> 0.4% package_request 21137 objects, 1860056 bytes</span>
|
||||
<span class="plain-syntax"> 0.4% vocabulary_entry_array 161 x 100 = 16100 objects, 1808352 bytes</span>
|
||||
<span class="plain-syntax"> 0.3% match_trie_array 11 x 1000 = 11000 objects, 1496352 bytes</span>
|
||||
<span class="plain-syntax"> 0.3% inter_symbols_table 26569 objects, 1487864 bytes</span>
|
||||
<span class="plain-syntax"> 0.3% i6_schema_array 23 x 100 = 2300 objects, 1380736 bytes</span>
|
||||
<span class="plain-syntax"> 0.3% inter_package 26569 objects, 1275312 bytes</span>
|
||||
<span class="plain-syntax"> 0.3% dict_entry_array 386 x 100 = 38600 objects, 1247552 bytes</span>
|
||||
<span class="plain-syntax"> 0.2% map_data 670 objects, 1125600 bytes</span>
|
||||
<span class="plain-syntax"> 0.2% id_body 941 objects, 1076504 bytes</span>
|
||||
<span class="plain-syntax"> 0.2% adjective_meaning 202 objects, 1000304 bytes</span>
|
||||
<span class="plain-syntax"> 0.2% excerpt_meaning 3100 objects, 967200 bytes</span>
|
||||
<span class="plain-syntax"> 0.2% production 3872 objects, 898304 bytes</span>
|
||||
<span class="plain-syntax"> 0.2% ptoken 8382 objects, 871728 bytes</span>
|
||||
<span class="plain-syntax"> 0.2% grammatical_usage 3611 objects, 866640 bytes</span>
|
||||
<span class="plain-syntax"> 0.2% individual_form 2561 objects, 860496 bytes</span>
|
||||
<span class="plain-syntax"> 0.2% inter_schema_node 8891 objects, 853536 bytes</span>
|
||||
<span class="plain-syntax"> 0.1% unary_predicate_array 16 x 1000 = 16000 objects, 640512 bytes</span>
|
||||
<span class="plain-syntax"> 0.1% scan_directory 112 objects, 462336 bytes</span>
|
||||
<span class="plain-syntax"> 0.1% local_variable_array 47 x 100 = 4700 objects, 452704 bytes</span>
|
||||
<span class="plain-syntax"> ---- verb_usage 1128 objects, 388032 bytes</span>
|
||||
<span class="plain-syntax"> ---- rule 469 objects, 367696 bytes</span>
|
||||
<span class="plain-syntax"> ---- verb_form 386 objects, 348944 bytes</span>
|
||||
<span class="plain-syntax"> ---- dictionary 6619 objects, 317712 bytes</span>
|
||||
<span class="plain-syntax"> ---- noun 2380 objects, 285600 bytes</span>
|
||||
<span class="plain-syntax"> ---- compilation_subtask 3346 objects, 267680 bytes</span>
|
||||
<span class="plain-syntax"> ---- inter_annotation_array 2 x 8192 = 16384 objects, 262208 bytes</span>
|
||||
<span class="plain-syntax"> ---- inference_subject 665 objects, 260680 bytes</span>
|
||||
<span class="plain-syntax"> ---- vanilla_function 3678 objects, 235392 bytes</span>
|
||||
<span class="plain-syntax"> ---- binary_predicate 321 objects, 169488 bytes</span>
|
||||
<span class="plain-syntax"> ---- hierarchy_location 1119 objects, 161136 bytes</span>
|
||||
<span class="plain-syntax"> ---- linguistic_stock_item 3316 objects, 159168 bytes</span>
|
||||
<span class="plain-syntax"> ---- rule_family_data 400 objects, 147200 bytes</span>
|
||||
<span class="plain-syntax"> ---- nonterminal 760 objects, 139840 bytes</span>
|
||||
<span class="plain-syntax"> ---- nascent_array 2123 objects, 135872 bytes</span>
|
||||
<span class="plain-syntax"> 32.3% inter_tree_node_array 58 x 8192 = 475136 objects, 41813824 bytes</span>
|
||||
<span class="plain-syntax"> 18.9% text_stream_array 4342 x 100 = 434200 objects, 24454144 bytes</span>
|
||||
<span class="plain-syntax"> 18.7% linked_list 43296 objects, 24245760 bytes</span>
|
||||
<span class="plain-syntax"> 10.8% inter_symbol_array 132 x 1024 = 135168 objects, 14061696 bytes</span>
|
||||
<span class="plain-syntax"> 10.2% inter_error_stash_array 101 x 1024 = 103424 objects, 13241504 bytes</span>
|
||||
<span class="plain-syntax"> 8.0% parse_node 129462 objects, 10356960 bytes</span>
|
||||
<span class="plain-syntax"> 5.7% verb_conjugation 160 objects, 7425280 bytes</span>
|
||||
<span class="plain-syntax"> 4.2% parse_node_annotation_array 345 x 500 = 172500 objects, 5531040 bytes</span>
|
||||
<span class="plain-syntax"> 2.6% pcalc_prop_array 25 x 1000 = 25000 objects, 3400800 bytes</span>
|
||||
<span class="plain-syntax"> 2.4% inter_name_array 67 x 1000 = 67000 objects, 3218144 bytes</span>
|
||||
<span class="plain-syntax"> 2.0% kind_array 66 x 1000 = 66000 objects, 2642112 bytes</span>
|
||||
<span class="plain-syntax"> 1.5% inter_name_generator_array 51 x 1000 = 51000 objects, 2041632 bytes</span>
|
||||
<span class="plain-syntax"> 1.5% inter_schema_token 13926 objects, 2005344 bytes</span>
|
||||
<span class="plain-syntax"> 1.4% package_request 21137 objects, 1860056 bytes</span>
|
||||
<span class="plain-syntax"> 1.3% vocabulary_entry_array 161 x 100 = 16100 objects, 1808352 bytes</span>
|
||||
<span class="plain-syntax"> 1.1% match_trie_array 11 x 1000 = 11000 objects, 1496352 bytes</span>
|
||||
<span class="plain-syntax"> 1.1% inter_symbols_table 26569 objects, 1487864 bytes</span>
|
||||
<span class="plain-syntax"> 1.0% i6_schema_array 23 x 100 = 2300 objects, 1380736 bytes</span>
|
||||
<span class="plain-syntax"> 0.9% inter_package 26569 objects, 1275312 bytes</span>
|
||||
<span class="plain-syntax"> 0.9% dict_entry_array 386 x 100 = 38600 objects, 1247552 bytes</span>
|
||||
<span class="plain-syntax"> 0.8% map_data 670 objects, 1125600 bytes</span>
|
||||
<span class="plain-syntax"> 0.8% id_body 941 objects, 1076504 bytes</span>
|
||||
<span class="plain-syntax"> 0.7% adjective_meaning 202 objects, 1000304 bytes</span>
|
||||
<span class="plain-syntax"> 0.7% excerpt_meaning 3100 objects, 967200 bytes</span>
|
||||
<span class="plain-syntax"> 0.6% production 3872 objects, 898304 bytes</span>
|
||||
<span class="plain-syntax"> 0.6% ptoken 8382 objects, 871728 bytes</span>
|
||||
<span class="plain-syntax"> 0.6% grammatical_usage 3611 objects, 866640 bytes</span>
|
||||
<span class="plain-syntax"> 0.6% individual_form 2561 objects, 860496 bytes</span>
|
||||
<span class="plain-syntax"> 0.6% inter_schema_node 8891 objects, 853536 bytes</span>
|
||||
<span class="plain-syntax"> 0.4% unary_predicate_array 16 x 1000 = 16000 objects, 640512 bytes</span>
|
||||
<span class="plain-syntax"> 0.3% scan_directory 112 objects, 462336 bytes</span>
|
||||
<span class="plain-syntax"> 0.3% local_variable_array 47 x 100 = 4700 objects, 452704 bytes</span>
|
||||
<span class="plain-syntax"> 0.3% verb_usage 1128 objects, 388032 bytes</span>
|
||||
<span class="plain-syntax"> 0.2% rule 469 objects, 367696 bytes</span>
|
||||
<span class="plain-syntax"> 0.2% verb_form 386 objects, 348944 bytes</span>
|
||||
<span class="plain-syntax"> 0.2% dictionary 6619 objects, 317712 bytes</span>
|
||||
<span class="plain-syntax"> 0.2% noun 2380 objects, 285600 bytes</span>
|
||||
<span class="plain-syntax"> 0.2% compilation_subtask 3346 objects, 267680 bytes</span>
|
||||
<span class="plain-syntax"> 0.2% inter_annotation_array 2 x 8192 = 16384 objects, 262208 bytes</span>
|
||||
<span class="plain-syntax"> 0.2% inference_subject 665 objects, 260680 bytes</span>
|
||||
<span class="plain-syntax"> 0.1% vanilla_function 3678 objects, 235392 bytes</span>
|
||||
<span class="plain-syntax"> 0.1% binary_predicate 321 objects, 169488 bytes</span>
|
||||
<span class="plain-syntax"> 0.1% hierarchy_location 1119 objects, 161136 bytes</span>
|
||||
<span class="plain-syntax"> 0.1% linguistic_stock_item 3316 objects, 159168 bytes</span>
|
||||
<span class="plain-syntax"> 0.1% rule_family_data 400 objects, 147200 bytes</span>
|
||||
<span class="plain-syntax"> 0.1% nonterminal 760 objects, 139840 bytes</span>
|
||||
<span class="plain-syntax"> 0.1% nascent_array 2123 objects, 135872 bytes</span>
|
||||
<span class="plain-syntax"> ---- documentation_ref 1273 objects, 112024 bytes</span>
|
||||
<span class="plain-syntax"> ---- inference 1703 objects, 108992 bytes</span>
|
||||
<span class="plain-syntax"> ---- imperative_defn 1377 objects, 99144 bytes</span>
|
||||
|
@ -226,14 +226,14 @@ represent less than 1/1000th of the total.
|
|||
<span class="plain-syntax"> ---- property 146 objects, 19856 bytes</span>
|
||||
<span class="plain-syntax"> ---- timed_rules_rfd_data 400 objects, 19200 bytes</span>
|
||||
<span class="plain-syntax"> ---- pipeline_step 14 objects, 18928 bytes</span>
|
||||
<span class="plain-syntax"> ---- method 374 objects, 17952 bytes</span>
|
||||
<span class="plain-syntax"> ---- pcalc_prop_deferral 86 objects, 17888 bytes</span>
|
||||
<span class="plain-syntax"> ---- method 371 objects, 17808 bytes</span>
|
||||
<span class="plain-syntax"> ---- instance 167 objects, 17368 bytes</span>
|
||||
<span class="plain-syntax"> ---- parse_node_tree 20 objects, 17280 bytes</span>
|
||||
<span class="plain-syntax"> ---- understanding_reference_array 2 x 100 = 200 objects, 16064 bytes</span>
|
||||
<span class="plain-syntax"> ---- to_phrase_request 59 objects, 16048 bytes</span>
|
||||
<span class="plain-syntax"> ---- action_name_list_array 1 x 1000 objects, 16032 bytes</span>
|
||||
<span class="plain-syntax"> ---- match_avinue_array 1 x 1000 objects, 16032 bytes</span>
|
||||
<span class="plain-syntax"> ---- action_name_list_array 1 x 1000 objects, 16032 bytes</span>
|
||||
<span class="plain-syntax"> ---- adjective 137 objects, 15344 bytes</span>
|
||||
<span class="plain-syntax"> ---- generated_segment 14 objects, 14784 bytes</span>
|
||||
<span class="plain-syntax"> ---- booking_list 407 objects, 13024 bytes</span>
|
||||
|
@ -241,24 +241,24 @@ represent less than 1/1000th of the total.
|
|||
<span class="plain-syntax"> ---- adjective_iname_holder 320 objects, 12800 bytes</span>
|
||||
<span class="plain-syntax"> ---- uniqueness_count 454 objects, 10896 bytes</span>
|
||||
<span class="plain-syntax"> ---- inter_construct 30 objects, 10320 bytes</span>
|
||||
<span class="plain-syntax"> ---- filename 246 objects, 9840 bytes</span>
|
||||
<span class="plain-syntax"> ---- filename 250 objects, 10000 bytes</span>
|
||||
<span class="plain-syntax"> ---- stopwatch_timer 112 objects, 8960 bytes</span>
|
||||
<span class="plain-syntax"> ---- build_vertex 64 objects, 7680 bytes</span>
|
||||
<span class="plain-syntax"> ---- equation_node 68 objects, 7616 bytes</span>
|
||||
<span class="plain-syntax"> ---- understanding_item_array 3 x 100 = 300 objects, 7296 bytes</span>
|
||||
<span class="plain-syntax"> ---- shared_variable_array 1 x 100 objects, 7232 bytes</span>
|
||||
<span class="plain-syntax"> ---- determiner 22 objects, 7216 bytes</span>
|
||||
<span class="plain-syntax"> ---- build_vertex 60 objects, 7200 bytes</span>
|
||||
<span class="plain-syntax"> ---- verb 108 objects, 6912 bytes</span>
|
||||
<span class="plain-syntax"> ---- hierarchy_attachment_point 77 objects, 6776 bytes</span>
|
||||
<span class="plain-syntax"> ---- inbuild_work 105 objects, 6720 bytes</span>
|
||||
<span class="plain-syntax"> ---- text_literal_holder 163 objects, 6520 bytes</span>
|
||||
<span class="plain-syntax"> ---- inbuild_work 101 objects, 6464 bytes</span>
|
||||
<span class="plain-syntax"> ---- inbuild_copy 55 objects, 5720 bytes</span>
|
||||
<span class="plain-syntax"> ---- inbuild_copy 59 objects, 6136 bytes</span>
|
||||
<span class="plain-syntax"> ---- inbuild_edition 78 objects, 5616 bytes</span>
|
||||
<span class="plain-syntax"> ---- heading_tree 20 objects, 5440 bytes</span>
|
||||
<span class="plain-syntax"> ---- inbuild_edition 74 objects, 5328 bytes</span>
|
||||
<span class="plain-syntax"> ---- explicit_action_array 1 x 100 objects, 4832 bytes</span>
|
||||
<span class="plain-syntax"> ---- value_property_data 84 objects, 4704 bytes</span>
|
||||
<span class="plain-syntax"> ---- parsing_pp_data 96 objects, 4608 bytes</span>
|
||||
<span class="plain-syntax"> ---- compatibility_specification 86 objects, 4128 bytes</span>
|
||||
<span class="plain-syntax"> ---- compatibility_specification 90 objects, 4320 bytes</span>
|
||||
<span class="plain-syntax"> ---- command_line_switch 49 objects, 3920 bytes</span>
|
||||
<span class="plain-syntax"> ---- activity 35 objects, 3920 bytes</span>
|
||||
<span class="plain-syntax"> ---- submodule_request 94 objects, 3760 bytes</span>
|
||||
|
@ -270,18 +270,19 @@ represent less than 1/1000th of the total.
|
|||
<span class="plain-syntax"> ---- definition 44 objects, 3168 bytes</span>
|
||||
<span class="plain-syntax"> ---- semver_range 29 objects, 3016 bytes</span>
|
||||
<span class="plain-syntax"> ---- either_or_property_data 62 objects, 2976 bytes</span>
|
||||
<span class="plain-syntax"> ---- target_vm 20 objects, 2880 bytes</span>
|
||||
<span class="plain-syntax"> ---- use_option 29 objects, 2552 bytes</span>
|
||||
<span class="plain-syntax"> ---- parentage_inference_data 79 objects, 2528 bytes</span>
|
||||
<span class="plain-syntax"> ---- part_of_inference_data 79 objects, 2528 bytes</span>
|
||||
<span class="plain-syntax"> ---- parentage_inference_data 79 objects, 2528 bytes</span>
|
||||
<span class="plain-syntax"> ---- kind_constructor_instance_array 1 x 100 objects, 2432 bytes</span>
|
||||
<span class="plain-syntax"> ---- kind_constructor_casting_rule_array 1 x 100 objects, 2432 bytes</span>
|
||||
<span class="plain-syntax"> ---- equation_symbol 30 objects, 2400 bytes</span>
|
||||
<span class="plain-syntax"> ---- scene 1 object, 2096 bytes</span>
|
||||
<span class="plain-syntax"> ---- build_script 60 objects, 1920 bytes</span>
|
||||
<span class="plain-syntax"> ---- build_script 64 objects, 2048 bytes</span>
|
||||
<span class="plain-syntax"> ---- inform_pipeline 28 objects, 1792 bytes</span>
|
||||
<span class="plain-syntax"> ---- pronoun_usage 42 objects, 1680 bytes</span>
|
||||
<span class="plain-syntax"> ---- table_contribution_array 1 x 100 objects, 1632 bytes</span>
|
||||
<span class="plain-syntax"> ---- plugin 25 objects, 1600 bytes</span>
|
||||
<span class="plain-syntax"> ---- inform_pipeline 24 objects, 1536 bytes</span>
|
||||
<span class="plain-syntax"> ---- noun_filter_token 22 objects, 1408 bytes</span>
|
||||
<span class="plain-syntax"> ---- inter_node_array 34 objects, 1360 bytes</span>
|
||||
<span class="plain-syntax"> ---- special_meaning_holder 33 objects, 1320 bytes</span>
|
||||
|
@ -289,7 +290,6 @@ represent less than 1/1000th of the total.
|
|||
<span class="plain-syntax"> ---- table_column 16 objects, 1280 bytes</span>
|
||||
<span class="plain-syntax"> ---- invocation_options_array 1 x 100 objects, 1224 bytes</span>
|
||||
<span class="plain-syntax"> ---- direction_inference_data 30 objects, 1200 bytes</span>
|
||||
<span class="plain-syntax"> ---- target_vm 8 objects, 1152 bytes</span>
|
||||
<span class="plain-syntax"> ---- tree_inventory_item 28 objects, 1120 bytes</span>
|
||||
<span class="plain-syntax"> ---- runtime_kind_structure 13 objects, 1040 bytes</span>
|
||||
<span class="plain-syntax"> ---- quantifier 16 objects, 1024 bytes</span>
|
||||
|
@ -314,22 +314,22 @@ represent less than 1/1000th of the total.
|
|||
<span class="plain-syntax"> ---- i6_memory_setting 14 objects, 448 bytes</span>
|
||||
<span class="plain-syntax"> ---- inference_family 11 objects, 440 bytes</span>
|
||||
<span class="plain-syntax"> ---- inter_annotation_form 10 objects, 400 bytes</span>
|
||||
<span class="plain-syntax"> ---- article_usage 8 objects, 384 bytes</span>
|
||||
<span class="plain-syntax"> ---- bp_family 12 objects, 384 bytes</span>
|
||||
<span class="plain-syntax"> ---- article_usage 8 objects, 384 bytes</span>
|
||||
<span class="plain-syntax"> ---- source_file 5 objects, 360 bytes</span>
|
||||
<span class="plain-syntax"> ---- inbuild_genre 7 objects, 336 bytes</span>
|
||||
<span class="plain-syntax"> ---- grammatical_category 8 objects, 320 bytes</span>
|
||||
<span class="plain-syntax"> ---- module_request 8 objects, 320 bytes</span>
|
||||
<span class="plain-syntax"> ---- door_dir_notice 5 objects, 320 bytes</span>
|
||||
<span class="plain-syntax"> ---- cached_kind_declaration 8 objects, 320 bytes</span>
|
||||
<span class="plain-syntax"> ---- pronoun 8 objects, 320 bytes</span>
|
||||
<span class="plain-syntax"> ---- grammatical_category 8 objects, 320 bytes</span>
|
||||
<span class="plain-syntax"> ---- module_request 8 objects, 320 bytes</span>
|
||||
<span class="plain-syntax"> ---- tree_inventory 1 object, 312 bytes</span>
|
||||
<span class="plain-syntax"> ---- up_family 9 objects, 288 bytes</span>
|
||||
<span class="plain-syntax"> ---- build_step 4 objects, 288 bytes</span>
|
||||
<span class="plain-syntax"> ---- compilation_unit 5 objects, 280 bytes</span>
|
||||
<span class="plain-syntax"> ---- contents_entry 7 objects, 280 bytes</span>
|
||||
<span class="plain-syntax"> ---- explicit_bp_data 5 objects, 280 bytes</span>
|
||||
<span class="plain-syntax"> ---- door_to_notice 5 objects, 280 bytes</span>
|
||||
<span class="plain-syntax"> ---- contents_entry 7 objects, 280 bytes</span>
|
||||
<span class="plain-syntax"> ---- compilation_unit 5 objects, 280 bytes</span>
|
||||
<span class="plain-syntax"> ---- verb_usage_tier 5 objects, 240 bytes</span>
|
||||
<span class="plain-syntax"> ---- inter_pipeline 1 object, 232 bytes</span>
|
||||
<span class="plain-syntax"> ---- adjective_meaning_family 7 objects, 224 bytes</span>
|
||||
|
@ -337,13 +337,13 @@ represent less than 1/1000th of the total.
|
|||
<span class="plain-syntax"> ---- release_instructions 1 object, 208 bytes</span>
|
||||
<span class="plain-syntax"> ---- build_skill 5 objects, 200 bytes</span>
|
||||
<span class="plain-syntax"> ---- code_generator 5 objects, 200 bytes</span>
|
||||
<span class="plain-syntax"> ---- plural_dictionary_entry 4 objects, 192 bytes</span>
|
||||
<span class="plain-syntax"> ---- kit_dependency 4 objects, 192 bytes</span>
|
||||
<span class="plain-syntax"> ---- inform_project 1 object, 192 bytes</span>
|
||||
<span class="plain-syntax"> ---- plural_dictionary_entry 4 objects, 192 bytes</span>
|
||||
<span class="plain-syntax"> ---- attachment_instruction 4 objects, 160 bytes</span>
|
||||
<span class="plain-syntax"> ---- inter_architecture 4 objects, 160 bytes</span>
|
||||
<span class="plain-syntax"> ---- inference_subject_family 5 objects, 160 bytes</span>
|
||||
<span class="plain-syntax"> ---- imperative_defn_family 4 objects, 160 bytes</span>
|
||||
<span class="plain-syntax"> ---- inference_subject_family 5 objects, 160 bytes</span>
|
||||
<span class="plain-syntax"> ---- attachment_instruction 4 objects, 160 bytes</span>
|
||||
<span class="plain-syntax"> ---- element_activation 4 objects, 128 bytes</span>
|
||||
<span class="plain-syntax"> ---- inbuild_nest 3 objects, 120 bytes</span>
|
||||
<span class="plain-syntax"> ---- local_block_value 2 objects, 112 bytes</span>
|
||||
|
@ -351,37 +351,37 @@ represent less than 1/1000th of the total.
|
|||
<span class="plain-syntax"> ---- compile_task_data 1 object, 80 bytes</span>
|
||||
<span class="plain-syntax"> ---- article 2 objects, 80 bytes</span>
|
||||
<span class="plain-syntax"> ---- group_together_function 2 objects, 80 bytes</span>
|
||||
<span class="plain-syntax"> ---- build_methodology 1 object, 56 bytes</span>
|
||||
<span class="plain-syntax"> ---- figures_data 1 object, 56 bytes</span>
|
||||
<span class="plain-syntax"> ---- inter_warehouse 1 object, 56 bytes</span>
|
||||
<span class="plain-syntax"> ---- build_methodology 1 object, 56 bytes</span>
|
||||
<span class="plain-syntax"> ---- star_invention 1 object, 48 bytes</span>
|
||||
<span class="plain-syntax"> ---- HTML_file_state 1 object, 48 bytes</span>
|
||||
<span class="plain-syntax"> ---- I6_generation_data 1 object, 40 bytes</span>
|
||||
<span class="plain-syntax"> ---- by_function_bp_data 1 object, 40 bytes</span>
|
||||
<span class="plain-syntax"> ---- kind_template_definition 1 object, 40 bytes</span>
|
||||
<span class="plain-syntax"> ---- loop_over_scope 1 object, 40 bytes</span>
|
||||
<span class="plain-syntax"> ---- by_function_bp_data 1 object, 40 bytes</span>
|
||||
|
||||
<span class="plain-syntax">33.3% was used for memory not allocated for objects:</span>
|
||||
<span class="plain-syntax">100.0% was used for memory not allocated for objects:</span>
|
||||
|
||||
<span class="plain-syntax"> 19.7% text stream storage 76619108 bytes in 452033 claims</span>
|
||||
<span class="plain-syntax"> 1.1% dictionary storage 4544512 bytes in 6619 claims</span>
|
||||
<span class="plain-syntax"> 59.2% text stream storage 76627132 bytes in 452150 claims</span>
|
||||
<span class="plain-syntax"> 3.5% dictionary storage 4544512 bytes in 6619 claims</span>
|
||||
<span class="plain-syntax"> ---- sorting 744 bytes in 3 claims</span>
|
||||
<span class="plain-syntax"> 1.8% source text 7200000 bytes in 3 claims</span>
|
||||
<span class="plain-syntax"> 2.7% source text details 10800000 bytes in 2 claims</span>
|
||||
<span class="plain-syntax"> ---- documentation fragments 262144 bytes in 1 claim</span>
|
||||
<span class="plain-syntax"> 5.5% source text 7200000 bytes in 3 claims</span>
|
||||
<span class="plain-syntax"> 8.3% source text details 10800000 bytes in 2 claims</span>
|
||||
<span class="plain-syntax"> 0.2% documentation fragments 262144 bytes in 1 claim</span>
|
||||
<span class="plain-syntax"> ---- linguistic stock array 81920 bytes in 2 claims</span>
|
||||
<span class="plain-syntax"> ---- small word set array 105600 bytes in 22 claims</span>
|
||||
<span class="plain-syntax"> 1.1% inter symbols storage 4521792 bytes in 27920 claims</span>
|
||||
<span class="plain-syntax"> 4.3% inter bytecode storage 16767748 bytes in 14 claims</span>
|
||||
<span class="plain-syntax"> 1.6% inter links storage 6222976 bytes in 11 claims</span>
|
||||
<span class="plain-syntax"> ---- inter tree location list storage 191232 bytes in 32 claims</span>
|
||||
<span class="plain-syntax"> 0.4% instance-of-kind counting 1695204 bytes in 1 claim</span>
|
||||
<span class="plain-syntax"> 3.4% inter symbols storage 4522288 bytes in 27921 claims</span>
|
||||
<span class="plain-syntax"> 12.9% inter bytecode storage 16767476 bytes in 14 claims</span>
|
||||
<span class="plain-syntax"> 4.8% inter links storage 6222976 bytes in 11 claims</span>
|
||||
<span class="plain-syntax"> 0.1% inter tree location list storage 191232 bytes in 32 claims</span>
|
||||
<span class="plain-syntax"> 1.3% instance-of-kind counting 1695204 bytes in 1 claim</span>
|
||||
<span class="plain-syntax"> ---- compilation workspace for objects 21856 bytes in 25 claims</span>
|
||||
<span class="plain-syntax"> ---- lists for type-checking invocations 16000 bytes in 1 claim</span>
|
||||
<span class="plain-syntax"> ---- code generation workspace for objects 1336 bytes in 4 claims</span>
|
||||
<span class="plain-syntax"> ---- emitter array storage 279776 bytes in 1995 claims</span>
|
||||
<span class="plain-syntax"> 0.2% emitter array storage 279776 bytes in 1995 claims</span>
|
||||
|
||||
<span class="plain-syntax">19.8% was overhead - 77076304 bytes = 75269K = 73 MB</span>
|
||||
<span class="plain-syntax">-140.-5% was overhead - -181824128 bytes = -177562K = -173 MB</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. Preform grammar. </b>The full annotated description of the Preform grammar (see <a href="../words-module/4-ap.html" class="internal">About Preform (in words)</a>),
|
||||
with optimisation details and hit/miss statistics added, is also long: it's
|
||||
|
|
228
docs/services.html
Normal file
|
@ -0,0 +1,228 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Services and their unit tests</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">
|
||||
<script src="http://code.jquery.com/jquery-1.12.4.min.js"
|
||||
integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>
|
||||
|
||||
<script src="docs-assets/Bigfoot.js"></script>
|
||||
<link href="docs-assets/Bigfoot.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="docs-assets/Colours.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><a href="imperative-module/index.html">imperative</a></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="pipeline-module/index.html">pipeline</a></li>
|
||||
<li><a href="final-module/index.html">final</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">
|
||||
<!--Weave of 'Services and their unit tests' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="index.html">Home</a></li><li><b>Services and their unit tests</b></li></ul></div>
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>The programs in the Inform toolchain need a variety of services beyond those
|
||||
provided by our standard library <a href="../../inweb/docs/foundation-module/index.html" class="internal">foundation</a>. The latter offers basics such
|
||||
as memory allocation, linked lists, string manipulation and so on, but the
|
||||
Inform tools need much more than that.
|
||||
</p>
|
||||
|
||||
<p class="commentary">The services layer of Inform<sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup> is structured as a set of modules. They can be
|
||||
(and are) used by other tools besides the main <a href="inform7/index.html" class="internal">inform7</a> compiler, and in
|
||||
particular most of the services come with unit-testing tools: small stand-alone
|
||||
executables which enable the workings of the service in question to be tested
|
||||
in isolation from the rest of the Inform toolchain.
|
||||
</p>
|
||||
|
||||
<p class="commentary">To some extent a tool can include just those modules it needs, but there are
|
||||
dependencies between them: for example, <a href="linguistics-module/index.html" class="internal">linguistics</a> requires <a href="syntax-module/index.html" class="internal">syntax</a>,
|
||||
which in turn requires <a href="words-module/index.html" class="internal">words</a>. Each service has a section of documentation
|
||||
called "How To Include This Module", explaining its needs.
|
||||
</p>
|
||||
|
||||
<ul class="footnotetexts"><li class="footnote" id="fn:1"><p class="inwebfootnote"><sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup> At one time this was going to be called Second Foundation, or perhaps
|
||||
Foundation and Empire.
|
||||
<a href="#fnref:1" title="return to text"> ↩</a></p></li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>The <a href="words-module/index.html" class="internal">words</a> module provides for natural-language text to be read in,
|
||||
and then broken up into words and punctuation marks. Usefully efficient ways
|
||||
to refer to fragments of this text, such as <span class="extract"><span class="extract-syntax">wording</span></span> and <span class="extract"><span class="extract-syntax">word_assemblage</span></span>,
|
||||
are also provided. Much of this is simple book-keeping, but the words module
|
||||
also provides the "Preform" system for parsing text against simple grammars.
|
||||
Preform powers the lexical/syntax analysis phases of Inform.
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>● Contents page of web: <a href="words-module/index.html" class="internal">words</a>.
|
||||
</li><li>● Detailed overview: <a href="words-module/P-wtmd.html" class="internal">What This Module Does (in words)</a>.
|
||||
</li><li>● Usage instructions: <a href="words-module/P-htitm.html" class="internal">How To Include This Module (in words)</a>.
|
||||
</li><li>● Unit test tool here: <a href="words-test/index.html" class="internal">words-test</a>.
|
||||
</li><li>● A manual for writing Preform grammars: <a href="words-module/4-ap.html" class="internal">About Preform (in words)</a>.
|
||||
</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>The <a href="lexicon-module/index.html" class="internal">lexicon</a> module provides a way to store and look up meanings of
|
||||
multi-word phrases such as "brass plaque" or "red silk jacket". This is the
|
||||
equivalent, in a natural-language context, of a symbols table in a more
|
||||
conventional compiler. Speed is critical and some novel algorithms are used.
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>● Contents page of web: <a href="lexicon-module/index.html" class="internal">lexicon</a>.
|
||||
</li><li>● Detailed overview: <a href="lexicon-module/P-wtmd.html" class="internal">What This Module Does (in lexicon)</a>.
|
||||
</li><li>● Usage instructions: <a href="lexicon-module/P-htitm.html" class="internal">How To Include This Module (in lexicon)</a>.
|
||||
</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b>The <a href="calculus-module/index.html" class="internal">calculus</a> module allows logical propositions to be stored and
|
||||
simplified. The word "calculus" is used here in the sense of predicate
|
||||
calculus with equality, a standard system for mathematical logic, and is
|
||||
nothing to do with derivatives or integrals.
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>● Contents page of web: <a href="calculus-module/index.html" class="internal">calculus</a>.
|
||||
</li><li>● Detailed overview: <a href="calculus-module/P-wtmd.html" class="internal">What This Module Does (in calculus)</a>.
|
||||
</li><li>● Usage instructions: <a href="calculus-module/P-htitm.html" class="internal">How To Include This Module (in calculus)</a>.
|
||||
</li><li>● Unit test tool here: <a href="calculus-test/index.html" class="internal">calculus-test</a>.
|
||||
</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b><a href="syntax-module/index.html" class="internal">syntax</a> is a relatively small module, which manages annotated syntax trees.
|
||||
It provides only basic facilities for making and annotating ASTs, but also
|
||||
contains the sentence-breaking algorithm, turning a stream of words into a
|
||||
rudimentary AST.
|
||||
</p>
|
||||
|
||||
<p class="commentary">This is really part one of a two-part story, the second being <a href="linguistics-module/index.html" class="internal">linguistics</a>.
|
||||
Together these define the AST for the Inform 7 language.
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>● Contents page of web: <a href="syntax-module/index.html" class="internal">syntax</a>.
|
||||
</li><li>● Detailed overview: <a href="syntax-module/P-wtmd.html" class="internal">What This Module Does (in syntax)</a>.
|
||||
</li><li>● Usage instructions: <a href="syntax-module/P-htitm.html" class="internal">How To Include This Module (in syntax)</a>.
|
||||
</li><li>● Unit test tool here: <a href="syntax-test/index.html" class="internal">syntax-test</a>.
|
||||
</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b>The <a href="linguistics-module/index.html" class="internal">linguistics</a> module manages grammatical categories such as verbs,
|
||||
adjectives, determiners and so on, and uses the annotated syntax trees of
|
||||
the <a href="syntax-module/index.html" class="internal">syntax</a> module to diagram sentences.
|
||||
</p>
|
||||
|
||||
<p class="commentary">This is really part two of a two-part story, the first being <a href="syntax-module/index.html" class="internal">syntax</a>.
|
||||
Together these define the AST for the Inform 7 language.
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>● Contents page of web: <a href="linguistics-module/index.html" class="internal">linguistics</a>.
|
||||
</li><li>● Detailed overview: <a href="linguistics-module/P-wtmd.html" class="internal">What This Module Does (in linguistics)</a>.
|
||||
</li><li>● Usage instructions: <a href="linguistics-module/P-htitm.html" class="internal">How To Include This Module (in linguistics)</a>.
|
||||
</li><li>● Unit test tool here: <a href="linguistics-test/index.html" class="internal">linguistics-test</a>.
|
||||
</li><li>● A description of the result: <a href="linguistics-module/P-asd.html" class="internal">About Sentence Diagrams (in linguistics)</a>.
|
||||
</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b>The <a href="inflections-module/index.html" class="internal">inflections</a> module provides ways to recognise or generate inflected
|
||||
forms of words: for example, "fig" becoming "figs", "ox" becoming "oxen",
|
||||
"box" becoming "boxes", and "sheep" becoming "sheep" are all inflections to
|
||||
make the plural of an English noun.<sup id="fnref:2"><a href="#fn:2" rel="footnote">2</a></sup> And similarly for inflected verb forms
|
||||
such as "starting", "starts" and "start"; or adjectival inflections such as
|
||||
those used to generate comparatives and superlatives — "large" to "larger"
|
||||
or "largest".
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>● Contents page of web: <a href="inflections-module/index.html" class="internal">inflections</a>.
|
||||
</li><li>● Detailed overview: <a href="inflections-module/P-wtmd.html" class="internal">What This Module Does (in inflections)</a>.
|
||||
</li><li>● Usage instructions: <a href="inflections-module/P-htitm.html" class="internal">How To Include This Module (in inflections)</a>.
|
||||
</li><li>● Unit test tool here: <a href="inflections-test/index.html" class="internal">inflections-test</a>.
|
||||
</li></ul>
|
||||
<ul class="footnotetexts"><li class="footnote" id="fn:2"><p class="inwebfootnote"><sup id="fnref:2"><a href="#fn:2" rel="footnote">2</a></sup> A full implementation of Conway's pluralisation algorithm can be found in
|
||||
this module, and is one of Inform's more picturesque corners.
|
||||
<a href="#fnref:2" title="return to text"> ↩</a></p></li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. </b>The <a href="kinds-module/index.html" class="internal">kinds</a> module provides a basic type system for an Inform-like language.<sup id="fnref:3"><a href="#fn:3" rel="footnote">3</a></sup>
|
||||
Note that this does not contain the Inform typechecker, which can be found in
|
||||
the main compiler (at <a href="values-module/5-dsh.html" class="internal">Dash (in values)</a>); but it does contain code to test
|
||||
whether or not values of one kind conform to another kind, which is a key part
|
||||
of the typechecking process.
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>● Contents page of web: <a href="kinds-module/index.html" class="internal">kinds</a>.
|
||||
</li><li>● Detailed overview: <a href="kinds-module/P-wtmd.html" class="internal">What This Module Does (in kinds)</a>.
|
||||
</li><li>● Usage instructions: <a href="kinds-module/P-htitm.html" class="internal">How To Include This Module (in kinds)</a>.
|
||||
</li><li>● Unit test tool here: <a href="kinds-test/index.html" class="internal">kinds-test</a>.
|
||||
</li><li>● A manual for "Neptune", the mini-language used by kits to create fundamental
|
||||
kinds and kind constructors: <a href="kinds-module/4-abgtn.html" class="internal">A Brief Guide to Neptune (in kinds)</a>.
|
||||
</li></ul>
|
||||
<ul class="footnotetexts"><li class="footnote" id="fn:3"><p class="inwebfootnote"><sup id="fnref:3"><a href="#fn:3" rel="footnote">3</a></sup> Following traditional Inform practice, the term "kind" is used instead of the
|
||||
more conventional computer-science word "type".
|
||||
<a href="#fnref:3" title="return to text"> ↩</a></p></li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. </b>The <a href="arch-module/index.html" class="internal">arch</a> module is a way to represent the possible code-generation
|
||||
"architectures" supported in the Inform toolchain. For example, "32-bit words
|
||||
with debugging enabled" is an architecture.
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>● Contents page of web: <a href="arch-module/index.html" class="internal">arch</a>.
|
||||
</li><li>● Detailed overview: <a href="arch-module/P-wtmd.html" class="internal">What This Module Does (in arch)</a>.
|
||||
</li><li>● Usage instructions: <a href="arch-module/P-htitm.html" class="internal">How To Include This Module (in arch)</a>.
|
||||
</li><li>● Unit test tool here: <a href="arch-test/index.html" class="internal">arch-test</a>.
|
||||
</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. </b>The <a href="problems-module/index.html" class="internal">problems</a> module is a simple system for producing HTML-page-style
|
||||
error messages, such as the Problems issued by the Inform compiler.<sup id="fnref:4"><a href="#fn:4" rel="footnote">4</a></sup>
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>● Contents page of web: <a href="problems-module/index.html" class="internal">problems</a>.
|
||||
</li><li>● Detailed overview: <a href="problems-module/P-wtmd.html" class="internal">What This Module Does (in problems)</a>.
|
||||
</li><li>● Usage instructions: <a href="problems-module/P-htitm.html" class="internal">How To Include This Module (in problems)</a>.
|
||||
</li><li>● Unit test tool here: <a href="problems-test/index.html" class="internal">problems-test</a>.
|
||||
</li></ul>
|
||||
<ul class="footnotetexts"><li class="footnote" id="fn:4"><p class="inwebfootnote"><sup id="fnref:4"><a href="#fn:4" rel="footnote">4</a></sup> Arguably it's not really of any wider application and shouldn't have been
|
||||
made a module at all, but never mind.
|
||||
<a href="#fnref:4" title="return to text"> ↩</a></p></li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. </b>The <a href="html-module/index.html" class="internal">html</a> module contains tools for generating non-standard features of HTML
|
||||
needed by the files made by Inform, such as clickable links to the source text.
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>● Contents page of web: <a href="html-module/index.html" class="internal">html</a>.
|
||||
</li><li>● Detailed overview: <a href="html-module/P-wtmd.html" class="internal">What This Module Does (in html)</a>. This section includes a
|
||||
description of the custom Inform-app-only URL schemas <span class="extract"><span class="extract-syntax">inform:</span></span> and <span class="extract"><span class="extract-syntax">source:</span></span>.
|
||||
</li><li>● Usage instructions: <a href="html-module/P-htitm.html" class="internal">How To Include This Module (in html)</a>.
|
||||
</li></ul>
|
||||
<!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -21,10 +21,12 @@ usage: inbuild [-TASK] TARGET1 TARGET2 ...
|
|||
-use-needs show all the extensions, kits and so on needed to use
|
||||
|
||||
for translating Inform source text to Inter:
|
||||
-basic use Basic Inform language (same as -kit BasicInformKit)
|
||||
-case X make any source links refer to the source in extension example X
|
||||
-census perform an extensions census (default is -no-census)
|
||||
-debug compile with debugging features even on a Release (default is -no-debug)
|
||||
-format=X compile I6 code suitable for the virtual machine X
|
||||
-format=X compile to the format X (default is Inform6/32)
|
||||
-o X use file X as the compiled output (not for use with -project)
|
||||
-project X work within the Inform project X
|
||||
-release compile a version suitable for a Release build (default is -no-release)
|
||||
-rng fix the random number generator of the story file (for testing) (default is -no-rng)
|
||||
|
@ -46,5 +48,6 @@ for tweaking code generation from Inter:
|
|||
-crash intentionally crash on internal errors, for backtracing (default is -no-crash)
|
||||
-fixtime pretend the time is 11 a.m. on 28 March 2016 for testing (default is -no-fixtime)
|
||||
-help print this help information
|
||||
-locale X set locales as 'L=E', L being shell or console, E platform, utf-8 or iso-latin1
|
||||
-log X write the debugging log to include diagnostics on X
|
||||
-version print out version number
|
||||
|
|
|
@ -1,40 +1,47 @@
|
|||
Inform 7 v10.1.0 has started.
|
||||
inform7: a compiler from source text to Inter code
|
||||
|
||||
Usage: inform7 [OPTIONS]
|
||||
|
||||
for translating Inform source text to Inter:
|
||||
-case X make any source links refer to the source in extension example X
|
||||
-census perform an extensions census (default is -no-census)
|
||||
-debug compile with debugging features even on a Release (default is -no-debug)
|
||||
-format=X compile I6 code suitable for the virtual machine X
|
||||
-project X work within the Inform project X
|
||||
-release compile a version suitable for a Release build (default is -no-release)
|
||||
-rng fix the random number generator of the story file (for testing) (default is -no-rng)
|
||||
-source X use file X as the Inform source text
|
||||
-basic use Basic Inform language (same as -kit BasicInformKit)
|
||||
-case X make any source links refer to the source in extension example X
|
||||
-census perform an extensions census (default is -no-census)
|
||||
-debug compile with debugging features even on a Release (default is -no-debug)
|
||||
-format=X compile to the format X (default is Inform6/32)
|
||||
-o X use file X as the compiled output (not for use with -project)
|
||||
-project X work within the Inform project X
|
||||
-release compile a version suitable for a Release build (default is -no-release)
|
||||
-rng fix the random number generator of the story file (for testing) (default is -no-rng)
|
||||
-source X use file X as the Inform source text
|
||||
|
||||
for locating resources in the file system:
|
||||
-external X use X as the user's home for installed material such as extensions
|
||||
-internal X use X as the location of built-in material such as the Standard Rules
|
||||
-nest X add the nest at pathname X to the search list
|
||||
-transient X use X for transient data such as the extensions census
|
||||
-external X use X as the user's home for installed material such as extensions
|
||||
-internal X use X as the location of built-in material such as the Standard Rules
|
||||
-nest X add the nest at pathname X to the search list
|
||||
-transient X use X for transient data such as the extensions census
|
||||
|
||||
for tweaking code generation from Inter:
|
||||
-kit X include Inter code from the kit called X
|
||||
-pipeline X specify code-generation pipeline by name (default is "compile")
|
||||
-pipeline-file X specify code-generation pipeline as file X
|
||||
-variable X set pipeline variable X (in form name=value)
|
||||
-kit X include Inter code from the kit called X
|
||||
-pipeline X specify code-generation pipeline by name (default is "compile")
|
||||
-pipeline-file X specify code-generation pipeline as file X
|
||||
-variable X set pipeline variable X (in form name=value)
|
||||
|
||||
for testing and debugging inform7:
|
||||
-crash-all intentionally crash on Problem messages, for backtracing (default is -no-crash-all)
|
||||
-no-index don't produce an Index (default is -index)
|
||||
-no-progress don't display progress percentages (default is -progress)
|
||||
-require-problem X return 0 unless exactly this Problem message is generated
|
||||
-sigils print Problem message sigils (default is -no-sigils)
|
||||
-no-census-update don't update the extensions census (default is -census-update)
|
||||
-crash-all intentionally crash on Problem messages, for backtracing (default is -no-crash-all)
|
||||
-diagnostics X if no problems occur, write diagnostics files to directory X (default is -no-diagnostics)
|
||||
-no-index don't produce an Index (default is -index)
|
||||
-no-problems don't produce (an HTML) Problems report page (default is -problems)
|
||||
-no-progress don't display progress percentages (default is -progress)
|
||||
-require-problem X return 0 unless exactly this Problem message is generated
|
||||
-sigils print Problem message sigils (default is -no-sigils)
|
||||
-silence practice 'silence is golden': print only Unix-style errors (default is -no-silence)
|
||||
-test-output X write output of internal tests to file X
|
||||
|
||||
-at X specify that this tool is installed at X
|
||||
-crash intentionally crash on internal errors, for backtracing (default is -no-crash)
|
||||
-fixtime pretend the time is 11 a.m. on 28 March 2016 for testing (default is -no-fixtime)
|
||||
-help print this help information
|
||||
-log X write the debugging log to include diagnostics on X
|
||||
-version print out version number
|
||||
-at X specify that this tool is installed at X
|
||||
-crash intentionally crash on internal errors, for backtracing (default is -no-crash)
|
||||
-fixtime pretend the time is 11 a.m. on 28 March 2016 for testing (default is -no-fixtime)
|
||||
-help print this help information
|
||||
-locale X set locales as 'L=E', L being shell or console, E platform, utf-8 or iso-latin1
|
||||
-log X write the debugging log to include diagnostics on X
|
||||
-version print out version number
|
||||
|
|
|
@ -1,54 +1,54 @@
|
|||
Total memory consumption was 379108K = 370 MB
|
||||
Total memory consumption was 126308K = 123 MB
|
||||
|
||||
66.6% was used for 2006043 objects, in 360816 frames in 316 x 800K = 252800K = 246 MB:
|
||||
---- was used for 2006043 objects, in 360816 frames in 0 x 800K = 0K = 0 MB:
|
||||
|
||||
10.7% inter_tree_node_array 58 x 8192 = 475136 objects, 41813824 bytes
|
||||
6.2% text_stream_array 4342 x 100 = 434200 objects, 24454144 bytes
|
||||
6.2% linked_list 43296 objects, 24245760 bytes
|
||||
3.6% inter_symbol_array 132 x 1024 = 135168 objects, 14061696 bytes
|
||||
3.4% inter_error_stash_array 101 x 1024 = 103424 objects, 13241504 bytes
|
||||
2.6% parse_node 129462 objects, 10356960 bytes
|
||||
1.9% verb_conjugation 160 objects, 7425280 bytes
|
||||
1.4% parse_node_annotation_array 345 x 500 = 172500 objects, 5531040 bytes
|
||||
0.8% pcalc_prop_array 25 x 1000 = 25000 objects, 3400800 bytes
|
||||
0.8% inter_name_array 67 x 1000 = 67000 objects, 3218144 bytes
|
||||
0.6% kind_array 66 x 1000 = 66000 objects, 2642112 bytes
|
||||
0.5% inter_name_generator_array 51 x 1000 = 51000 objects, 2041632 bytes
|
||||
0.5% inter_schema_token 13926 objects, 2005344 bytes
|
||||
0.4% package_request 21137 objects, 1860056 bytes
|
||||
0.4% vocabulary_entry_array 161 x 100 = 16100 objects, 1808352 bytes
|
||||
0.3% match_trie_array 11 x 1000 = 11000 objects, 1496352 bytes
|
||||
0.3% inter_symbols_table 26569 objects, 1487864 bytes
|
||||
0.3% i6_schema_array 23 x 100 = 2300 objects, 1380736 bytes
|
||||
0.3% inter_package 26569 objects, 1275312 bytes
|
||||
0.3% dict_entry_array 386 x 100 = 38600 objects, 1247552 bytes
|
||||
0.2% map_data 670 objects, 1125600 bytes
|
||||
0.2% id_body 941 objects, 1076504 bytes
|
||||
0.2% adjective_meaning 202 objects, 1000304 bytes
|
||||
0.2% excerpt_meaning 3100 objects, 967200 bytes
|
||||
0.2% production 3872 objects, 898304 bytes
|
||||
0.2% ptoken 8382 objects, 871728 bytes
|
||||
0.2% grammatical_usage 3611 objects, 866640 bytes
|
||||
0.2% individual_form 2561 objects, 860496 bytes
|
||||
0.2% inter_schema_node 8891 objects, 853536 bytes
|
||||
0.1% unary_predicate_array 16 x 1000 = 16000 objects, 640512 bytes
|
||||
0.1% scan_directory 112 objects, 462336 bytes
|
||||
0.1% local_variable_array 47 x 100 = 4700 objects, 452704 bytes
|
||||
---- verb_usage 1128 objects, 388032 bytes
|
||||
---- rule 469 objects, 367696 bytes
|
||||
---- verb_form 386 objects, 348944 bytes
|
||||
---- dictionary 6619 objects, 317712 bytes
|
||||
---- noun 2380 objects, 285600 bytes
|
||||
---- compilation_subtask 3346 objects, 267680 bytes
|
||||
---- inter_annotation_array 2 x 8192 = 16384 objects, 262208 bytes
|
||||
---- inference_subject 665 objects, 260680 bytes
|
||||
---- vanilla_function 3678 objects, 235392 bytes
|
||||
---- binary_predicate 321 objects, 169488 bytes
|
||||
---- hierarchy_location 1119 objects, 161136 bytes
|
||||
---- linguistic_stock_item 3316 objects, 159168 bytes
|
||||
---- rule_family_data 400 objects, 147200 bytes
|
||||
---- nonterminal 760 objects, 139840 bytes
|
||||
---- nascent_array 2123 objects, 135872 bytes
|
||||
32.3% inter_tree_node_array 58 x 8192 = 475136 objects, 41813824 bytes
|
||||
18.9% text_stream_array 4342 x 100 = 434200 objects, 24454144 bytes
|
||||
18.7% linked_list 43296 objects, 24245760 bytes
|
||||
10.8% inter_symbol_array 132 x 1024 = 135168 objects, 14061696 bytes
|
||||
10.2% inter_error_stash_array 101 x 1024 = 103424 objects, 13241504 bytes
|
||||
8.0% parse_node 129462 objects, 10356960 bytes
|
||||
5.7% verb_conjugation 160 objects, 7425280 bytes
|
||||
4.2% parse_node_annotation_array 345 x 500 = 172500 objects, 5531040 bytes
|
||||
2.6% pcalc_prop_array 25 x 1000 = 25000 objects, 3400800 bytes
|
||||
2.4% inter_name_array 67 x 1000 = 67000 objects, 3218144 bytes
|
||||
2.0% kind_array 66 x 1000 = 66000 objects, 2642112 bytes
|
||||
1.5% inter_name_generator_array 51 x 1000 = 51000 objects, 2041632 bytes
|
||||
1.5% inter_schema_token 13926 objects, 2005344 bytes
|
||||
1.4% package_request 21137 objects, 1860056 bytes
|
||||
1.3% vocabulary_entry_array 161 x 100 = 16100 objects, 1808352 bytes
|
||||
1.1% match_trie_array 11 x 1000 = 11000 objects, 1496352 bytes
|
||||
1.1% inter_symbols_table 26569 objects, 1487864 bytes
|
||||
1.0% i6_schema_array 23 x 100 = 2300 objects, 1380736 bytes
|
||||
0.9% inter_package 26569 objects, 1275312 bytes
|
||||
0.9% dict_entry_array 386 x 100 = 38600 objects, 1247552 bytes
|
||||
0.8% map_data 670 objects, 1125600 bytes
|
||||
0.8% id_body 941 objects, 1076504 bytes
|
||||
0.7% adjective_meaning 202 objects, 1000304 bytes
|
||||
0.7% excerpt_meaning 3100 objects, 967200 bytes
|
||||
0.6% production 3872 objects, 898304 bytes
|
||||
0.6% ptoken 8382 objects, 871728 bytes
|
||||
0.6% grammatical_usage 3611 objects, 866640 bytes
|
||||
0.6% individual_form 2561 objects, 860496 bytes
|
||||
0.6% inter_schema_node 8891 objects, 853536 bytes
|
||||
0.4% unary_predicate_array 16 x 1000 = 16000 objects, 640512 bytes
|
||||
0.3% scan_directory 112 objects, 462336 bytes
|
||||
0.3% local_variable_array 47 x 100 = 4700 objects, 452704 bytes
|
||||
0.3% verb_usage 1128 objects, 388032 bytes
|
||||
0.2% rule 469 objects, 367696 bytes
|
||||
0.2% verb_form 386 objects, 348944 bytes
|
||||
0.2% dictionary 6619 objects, 317712 bytes
|
||||
0.2% noun 2380 objects, 285600 bytes
|
||||
0.2% compilation_subtask 3346 objects, 267680 bytes
|
||||
0.2% inter_annotation_array 2 x 8192 = 16384 objects, 262208 bytes
|
||||
0.2% inference_subject 665 objects, 260680 bytes
|
||||
0.1% vanilla_function 3678 objects, 235392 bytes
|
||||
0.1% binary_predicate 321 objects, 169488 bytes
|
||||
0.1% hierarchy_location 1119 objects, 161136 bytes
|
||||
0.1% linguistic_stock_item 3316 objects, 159168 bytes
|
||||
0.1% rule_family_data 400 objects, 147200 bytes
|
||||
0.1% nonterminal 760 objects, 139840 bytes
|
||||
0.1% nascent_array 2123 objects, 135872 bytes
|
||||
---- documentation_ref 1273 objects, 112024 bytes
|
||||
---- inference 1703 objects, 108992 bytes
|
||||
---- imperative_defn 1377 objects, 99144 bytes
|
||||
|
@ -235,25 +235,25 @@ Total memory consumption was 379108K = 370 MB
|
|||
---- kind_template_definition 1 object, 40 bytes
|
||||
---- loop_over_scope 1 object, 40 bytes
|
||||
|
||||
33.3% was used for memory not allocated for objects:
|
||||
100.0% was used for memory not allocated for objects:
|
||||
|
||||
19.7% text stream storage 76626784 bytes in 452148 claims
|
||||
1.1% dictionary storage 4544512 bytes in 6619 claims
|
||||
59.2% text stream storage 76627132 bytes in 452150 claims
|
||||
3.5% dictionary storage 4544512 bytes in 6619 claims
|
||||
---- sorting 744 bytes in 3 claims
|
||||
1.8% source text 7200000 bytes in 3 claims
|
||||
2.7% source text details 10800000 bytes in 2 claims
|
||||
---- documentation fragments 262144 bytes in 1 claim
|
||||
5.5% source text 7200000 bytes in 3 claims
|
||||
8.3% source text details 10800000 bytes in 2 claims
|
||||
0.2% documentation fragments 262144 bytes in 1 claim
|
||||
---- linguistic stock array 81920 bytes in 2 claims
|
||||
---- small word set array 105600 bytes in 22 claims
|
||||
1.1% inter symbols storage 4522288 bytes in 27921 claims
|
||||
4.3% inter bytecode storage 16767476 bytes in 14 claims
|
||||
1.6% inter links storage 6222976 bytes in 11 claims
|
||||
---- inter tree location list storage 191232 bytes in 32 claims
|
||||
0.4% instance-of-kind counting 1695204 bytes in 1 claim
|
||||
3.4% inter symbols storage 4522288 bytes in 27921 claims
|
||||
12.9% inter bytecode storage 16767476 bytes in 14 claims
|
||||
4.8% inter links storage 6222976 bytes in 11 claims
|
||||
0.1% inter tree location list storage 191232 bytes in 32 claims
|
||||
1.3% instance-of-kind counting 1695204 bytes in 1 claim
|
||||
---- compilation workspace for objects 21856 bytes in 25 claims
|
||||
---- lists for type-checking invocations 16000 bytes in 1 claim
|
||||
---- code generation workspace for objects 1336 bytes in 4 claims
|
||||
---- emitter array storage 279776 bytes in 1995 claims
|
||||
0.2% emitter array storage 279776 bytes in 1995 claims
|
||||
|
||||
19.8% was overhead - 77043072 bytes = 75237K = 73 MB
|
||||
-140.-5% was overhead - -181824128 bytes = -177562K = -173 MB
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
100.0% in inform7 run
|
||||
68.2% in compilation to Inter
|
||||
47.4% in //Sequence::undertake_queued_tasks//
|
||||
4.5% in //MajorNodes::pre_pass//
|
||||
68.6% in compilation to Inter
|
||||
47.7% in //Sequence::undertake_queued_tasks//
|
||||
4.7% in //MajorNodes::pre_pass//
|
||||
3.4% in //MajorNodes::pass_1//
|
||||
2.4% in //RTPhrasebook::compile_entries//
|
||||
1.7% in //ImperativeDefinitions::assess_all//
|
||||
|
@ -17,17 +17,17 @@
|
|||
0.1% in //RTKindConstructors::compile_permissions//
|
||||
0.1% in //Task::make_built_in_kind_constructors//
|
||||
0.1% in //World::stages_II_and_III//
|
||||
2.5% not specifically accounted for
|
||||
28.9% in running Inter pipeline
|
||||
2.3% not specifically accounted for
|
||||
28.5% in running Inter pipeline
|
||||
10.2% in step 14/14: generate inform6 -> auto.inf
|
||||
7.7% in step 5/14: load-binary-kits
|
||||
6.4% in step 6/14: make-synoptic-module
|
||||
1.5% in step 9/14: make-identifiers-unique
|
||||
7.6% in step 5/14: load-binary-kits
|
||||
6.2% in step 6/14: make-synoptic-module
|
||||
1.3% in step 9/14: make-identifiers-unique
|
||||
0.3% in step 12/14: eliminate-redundant-operations
|
||||
0.3% in step 4/14: compile-splats
|
||||
0.3% in step 7/14: shorten-wiring
|
||||
0.3% in step 8/14: detect-indirect-calls
|
||||
0.1% in step 11/14: eliminate-redundant-labels
|
||||
1.4% not specifically accounted for
|
||||
2.4% in supervisor
|
||||
0.4% not specifically accounted for
|
||||
2.2% in supervisor
|
||||
0.6% not specifically accounted for
|
||||
|
|
|
@ -371,6 +371,8 @@ diagrams:
|
|||
cp -f inform7/Internal/Pipelines/link.interpipeline inter/pipeline-module/Figures
|
||||
cp -f inform7/Internal/Pipelines/optimise.interpipeline inter/pipeline-module/Figures
|
||||
cp -f inform7/Internal/Pipelines/build-kit.interpipeline inter/pipeline-module/Figures
|
||||
$(INBUILDX) -help >inbuild/Figures/help.txt
|
||||
$(INFORM7X) -help >inform7/Figures/help.txt
|
||||
$(INTERX) -help >inter/Figures/help.txt
|
||||
|
||||
{repeat-tools-block:ctools}
|
||||
|
@ -434,7 +436,7 @@ docs/$(@LEAF)-module/index.html: {dependent-files-for-module}@
|
|||
{end-block}
|
||||
|
||||
.PHONY: prepages
|
||||
prepages: diagnostics docs/index.html docs/compiler.html docs/extensions.html docs/other.html docs/units.html
|
||||
prepages: diagnostics docs/index.html docs/compiler.html docs/extensions.html docs/other.html docs/units.html docs/services.html docs/inform6.html
|
||||
|
||||
docs/index.html: docs-src/index.inweb docs-src/nav.html
|
||||
$(INWEBX) -colony $(COLONY) -member overview -weave
|
||||
|
@ -442,6 +444,12 @@ docs/index.html: docs-src/index.inweb docs-src/nav.html
|
|||
docs/compiler.html: docs-src/compiler.inweb docs-src/navc.html
|
||||
$(INWEBX) -colony $(COLONY) -member compiler -weave
|
||||
|
||||
docs/services.html: docs-src/services.inweb docs-src/navc.html
|
||||
$(INWEBX) -colony $(COLONY) -member services -weave
|
||||
|
||||
docs/inform6.html: docs-src/inform6.inweb docs-src/navc.html
|
||||
$(INWEBX) -colony $(COLONY) -member inform6 -weave
|
||||
|
||||
docs/extensions.html: docs-src/extensions.inweb docs-src/navk.html
|
||||
$(INWEBX) -colony $(COLONY) -member extensions -weave
|
||||
|
||||
|
@ -456,6 +464,8 @@ forceprepages: diagnostics
|
|||
rm -f docs/*.html
|
||||
$(INWEBX) -colony $(COLONY) -member overview -weave
|
||||
$(INWEBX) -colony $(COLONY) -member compiler -weave
|
||||
$(INWEBX) -colony $(COLONY) -member services -weave
|
||||
$(INWEBX) -colony $(COLONY) -member inform6 -weave
|
||||
$(INWEBX) -colony $(COLONY) -member extensions -weave
|
||||
$(INWEBX) -colony $(COLONY) -member other -weave
|
||||
$(INWEBX) -colony $(COLONY) -member units -weave
|
||||
|
|