Lvl | Operator | Placed | Asc | Purpose |
0 | , |
between | left | separating values to work out |
1 | = |
between | right | set equal to |
5 | + |
between | left | 16-bit signed addition |
- |
between | left | 16-bit signed subtraction | |
6 | * |
between | left | 16-bit signed multiplication |
/ |
between | left | 16-bit signed integer division | |
% |
between | left | 16-bit signed remainder | |
& |
between | left | bitwise AND | |
| |
between | left | bitwise OR | |
~ |
before | bitwise NOT | ||
7 | -> |
between | left | byte array entry |
--> |
between | left | word array entry | |
8 | - |
before | 16-bit signed negation | |
9 | ++ |
before | add 1 to then read | |
++ |
after | read then add 1 to | ||
-- |
before | subtract 1 from then read | ||
-- |
after | read then subtract 1 from | ||
10 | .& |
between | left | property array |
.# |
between | left | property array size | |
11 | (...) |
after | routine call | |
12 | . |
between | left | property value |
13 | :: |
between | left | “superclass” operator |
*
,
on level 6, binds more tightly than +
, down on level
5, so that 1+2*3
means 1+(2*3)
.-
is “left associative”, so
a-b-c
means (a-b)-c
.
=
is “right associative”, so
v1=v2=7
means v1=(v2=7)
, setting both
variables equal to 7.true
(1) or false
(0). When a value is used as a condition, any non-zero value
is considered true, and only zero is considered false.Lvl | Operator | Placed | Asc | Purpose |
2 | && |
between | left | one condition AND another |
|| |
between | left | one condition OR another | |
~~ |
before | this condition NOT true | ||
3 | == |
between | none | equal to? |
~= |
between | none | not equal to? | |
> |
between | none | greater than? | |
>= |
between | none | greater than or equal to? | |
< |
between | none | less than? | |
<= |
between | none | less than or equal to? | |
has |
between | none | object has this attribute? | |
hasnt |
between | none | object hasn't this attribute? | |
in |
between | none | first obj a child of second? | |
notin |
between | none | first obj not a child of second? | |
ofclass |
between | none | obj inherits from class? | |
provides |
between | none | obj provides this property? | |
4 | or |
between | left | separating alternative values |
a==b==c
then Inform will ask you to add brackets for clarity.(C1 && C2)
, Inform decides
on C1
first: if C1
is false
then
C2
is never considered at all. Similarly, if C1
is true
then (C1 || C2)
must be true
and C2
is never considered.+0 | +1 | +2 | +3 | +4 | +5 | +6 | +7 | |
0 | ||||||||
8 | del | tab | em | new | ||||
16 | ||||||||
24 | esc | |||||||
32 | sp | ! | " | # | $ | % | & | ' |
40 | ( | ) | * | + | , | - | . | / |
48 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
56 | 8 | 9 | : | ; | < | = | > | ? |
64 | @ | A | B | C | D | E | F | G |
72 | H | I | J | K | L | M | N | O |
80 | P | Q | R | S | T | U | V | W |
88 | X | Y | Z | [ | \ | ] | ^ | _ |
96 | ` | a | b | c | d | e | f | g |
104 | h | i | j | k | l | m | n | o |
112 | p | q | r | s | t | u | v | w |
120 | x | y | z | { | | | } | ~ |
'J'
is 72 plus 2 equals 74.print (char)
it.+0 | +1 | +2 | +3 | +4 | +5 | +6 | +7 | |
128 | ↑ | ↓ | ← | → | f1 | f2 | f3 | |
136 | f4 | f5 | f6 | f7 | f8 | f9 | f10 | f11 |
144 | f12 | k0 | k1 | k2 | k3 | k4 | k5 | k6 |
152 | k7 | k8 | k9 | ä | ö | ü | Ä | Ö |
@:a | @:o |
@:u | @:A |
@:O | ||||
160 | Ü | ß | » | « | ë | ï | ÿ | Ë |
@:U |
@ss | @>> |
@<< | @:e |
@:i | @:y |
@:E | |
168 | Ï | á | é | í | ó | ú | ý | Á |
@:I |
@'a | @'e |
@'i | @'o |
@'u | @'y |
@'A | |
176 | É | Í | Ó | Ú | Ý | à | è | ì |
@'E |
@'I | @'O |
@'U | @'Y |
@`a | @`e |
@`i | |
184 | ò | ù | À | È | Ì | Ò | Ù | â |
@`o |
@`u | @`A |
@`E | @`I |
@`O | @`U |
@^a | |
192 | ê | î | ô | û | Â | Ê | Î | Ô |
@^e |
@^i | @^o |
@^u | @^A |
@^E | @^I |
@^O | |
200 | Û | å | Å | ø | Ø | ã | ñ | õ |
@^U |
@oa | @oA |
@\o | @\O |
@~a | @~n |
@~o | |
208 | Ã | Ñ | Õ | æ | Æ | ç | Ç | þ |
@~A |
@~N | @~O |
@ae | @AE |
@,c | @,C |
@th | |
216 | ð | Þ | Ð | £ | œ | Œ | ¡ | ¿ |
@et |
@Th | @Et |
@LL | @oe |
@OE | @!! |
@?? | |
224 | ||||||||
232 | ||||||||
240 | ||||||||
248 | men | dbl | clk |
print "@AEsop";
prints
“Æsop”.Zcharacter
, which can in principle move any Unicode character
in. See §36.Sw | To | Meaning |
-d* | 0 to 2 | contract double spaces: never (0), after full stops (1), after full stops, exclamation and question marks (2) |
-e | off/on | economise by using the declared abbreviations |
-g* | 0 to 2 | traces calls: none (0), all outside libraries (1), all (2) |
-i | off/on | ignore default switches set within the file |
-k | off/on | output Infix debugging information (and switch -D on) |
-r | off/on | record all the text to a transcript file |
-v* | 3 to 8 | compile to this Version of story file (default 5) |
-C* | 0 to 9 | source is ASCII (0), or ISO 8859-1 to -9 (default 1) |
-D | off/on | automatically include library's debugging features |
-F* | 0 or 1 | use temporary files to reduce memory consumption |
-M | off/on | compile as a Module for future linking |
-S | on/off | compile strict error-checking at run-time (on by default) |
-U | off/on | link in precompiled library modules |
-X | off/on | include the Infix debugger |
-a | off/on | trace assembly-language (without hex dumps; see -t) |
-c | off/on | more concise error messages |
-f | off/on | frequencies mode: show how useful abbreviations are |
-h* | on/1/2 | print help information: on filenaming (1), switches (2) |
-j | off/on | list objects as constructed |
-l | off/on | list every statement run through Inform |
-m | off/on | say how much memory has been allocated |
-n | off/on | print numbers of properties, attributes and actions |
-o | off/on | print offset addresses |
-p | off/on | give percentage breakdown of story file |
-q | off/on | keep quiet about obsolete usages |
-s | off/on | give statistics |
-t | off/on | trace assembly-language (with full hex dumps; see -a) |
-u | off/on | work out most useful abbreviations (very very slowly) |
-w | off/on | disable warning messages |
-x | off/on | print a hash # for every 100 lines compiled |
-y | off/on | trace linking system |
-z | off/on | print memory map of the Z-machine |
-E* | 0, 1, 2 | errors in Acorn (0), Microsoft (1) or Mac (2) style |
box
‹line-1›
‹line-2› …
‹line-n›
break
continue
do
‹code block›
until
‹condition›
font on
or off
for (
‹initial code›
:
‹condition to carry on›
:
‹update code›)
‹code block›
give
‹object›
‹attribute-1› …
‹attribute-n›
if
‹condition›
‹code block›
if
‹condition›
‹code block›
else
‹code-block›
jump
‹label›
move
‹object›
to
‹destination›
new_line
objectloop
‹condition choosing objects›
‹code block›
print
‹list of printing specifications›
print_ret
‹list of printing specifications›
remove
‹object›
return
‹optional value›
rfalse
rtrue
spaces
‹number of spaces to print›
string
‹number›
‹text›
style roman
or bold
or
underline
or reverse
or
fixed
switch (
‹value›)
‹block of cases … default:
…›
while
‹condition›
‹code-block›
if
is taken as a print_ret
statement.{
and }
.inversion
quit
read
‹text-buffer›
‹parsing-buffer›
restore
‹label›
save
‹label›
Abbreviate
‹word-1› …
‹word-n›
Array
‹new-name›
‹type›
‹initial values›
Attribute
‹new-name›
Class
‹new-name›
‹body of definition›
Constant
‹new-name›
=
‹value›
Default
‹possibly-new-name›
End
Endif
Extend
‹grammar extension›
Global
‹new-name›
=
‹value›
Ifdef
‹symbol-name›
Ifndef
‹symbol-name›
Ifnot
Iftrue
‹condition›
Iffalse
‹condition›
Import
‹list of imported goods›
Include
‹source code filename›
Link
‹module filename›
Lowstring
‹text›
Message
‹message-type›
‹diagnostic-message›
Object
‹header›
‹body of definition›
Property
‹new-name›
Release
‹number›
Replace
‹routine-name›
Serial
"
‹serial number›"
Switches
‹list of switches›
Statusline score
or time
System_file
Verb
‹verb-definition›
Zcharacter
etc.
Nearby
is an obsolete abbreviation for
Object ->
, now deprecated. A few other directives,
Dictionary
, Fake_action
, Ifv3
,
Ifv5
, Stub
, Trace
and
Version
, are either also obsolete or for compiler
maintenance only.Action | Typically produced by | Notes |
Pronouns | “pronouns” | lists settings of “it” and so on |
Quit | “quit” | |
Restart | “restart” | |
Restore | “restore” | |
Save | “save” | |
Verify | “verify” | checks story file integrity |
ScriptOn | “script on” | |
ScriptOff | “script off” | |
NotifyOn | “notify on” | score change notification on |
NotifyOff | “notify off” | and off |
Places | “places” | list places visited |
Objects | “objects” | list objects moved |
Score | “score” | |
FullScore | “fullscore” | full breakdown of score |
Version | “version” | prints version numbers |
LMode1 | “brief” | normal room descriptions |
LMode2 | “verbose” | always full room descriptions |
LMode3 | “superbrief” | always abbreviated |
TheSame
and
PluralFound
are defined by the parser as ways for
the program to communicate with it. Miscellany
and
Prompt
are defined as slots for LibraryMessages
.Action | Typically produced by | Notes |
Look | “look” | |
Examine | “examine fish” | |
Search | “look inside cup” | |
Inv | “inventory” | |
InvTall | “inventory tall” | becomes Inv |
InvWide | “inventory wide” | becomes Inv |
Take | “take fish” | KS |
Drop | “drop fish” | KS |
Remove | “take dice from cup” | KS |
PutOn | “put cup on board” | KS |
Insert | “put dice in cup” | KS |
LetGo | fake | caused by Remove |
Receive | fake | caused by PutOn and Insert |
Empty | “empty sack” | becomes EmptyT d_obj |
EmptyT | “empty bag on box” | for each item inside, becomes |
Remove then Drop /PutOn /Insert | ||
Transfer | “transfer egg to box” | becomes Drop /PutOn /Insert |
Go | “north” | KS special rules apply: see §15 |
Enter | “enter cage” | KS can become Go
if into a door |
GetOff | “get off table” | KS |
GoIn | “enter” | becomes Go in_obj |
Exit | “exit” | KS can become Go out_obj |
Unlock | “unlock door” | KS |
Lock | “lock door” | KS |
SwitchOn | “switch radio on” | KS |
SwitchOff | “switch radio off” | KS |
Open | “open door” | KS |
Close | “close door” | KS |
Disrobe | “take hat off” | KS |
Wear | “wear hat” | KS |
Eat | “eat fish” | KS |
Wait | “wait” |
keep_silent
is set true
.
This means that if successful they print nothing: if unsuccessful,
however, they print text as normal.Look
and Examine
actions send
after
messages after printing descriptions.
Search
sends after
when the search is
known to be possible but before the result is printed.Action | Typically produced by | Notes |
LookUnder | “look under doormat” | |
Listen | “listen [to tape]” | noun can be nothing |
Taste | “taste marinade” | |
Touch | “touch paint” | |
Pull | “pull trolley” | |
Push | “push trolley” | |
Wave | “wave wand” | |
Turn | “turn dial” | |
PushDir | “push trolley north” | special rules apply: see §15 |
ThrowAt | “throw dart at board” | |
ThrownAt | fake | caused by ThrowAt |
JumpOver | “jump over fence” | |
Tie | “tie rope [to hook]” | second can be nothing |
Drink | “drink absinthe” | |
Fill | “fill bottle” | |
Attack | “fight soldiers” | |
Swing | “swing on rope” | |
Blow | “blow pipe” | |
Rub | “clean table” | |
Set | “set trap” | |
SetTo | “set timer to 10” | second not an object |
Buy | “buy ice cream” | |
Climb | “climb ladder” | |
Squeeze | “squash tomato” | |
Burn | “burn papers [with match]” | second can be nothing |
Dig | “dig lawn [with spade]” | second can be nothing |
Cut | “cut paper” | |
Consult | “look up fish in book” | sets noun and the topic |
Tell | “tell jemima about austin” | sets noun and the topic |
Answer | “say confirmed to avon” | sets noun and the topic |
Ask | “ask jemima about isaac” | sets noun and the topic |
Give | “give coin to troll” | |
Show | “show pass to guard” | |
AskFor | “ask jemima for daisies” | |
WakeOther | “wake sleeper” | |
Kiss | “kiss jemima” | |
Sleep | “sleep” | |
Sing | “sing” | |
WaveHands | “wave” | see also Wave |
Swim | “swim”, “dive” | |
Sorry | “sorry” | |
Strong | very rude words | |
Mild | fairly rude words | |
Jump | “jump” | see also JumpOver |
Think | “think” | |
Smell | “smell coffee” | noun can be nothing |
Pray | “pray” | |
VagueGo | “go” | |
Yes | “yes” | |
No | “no” | |
Wake | “wake up” | see also WakeOther |
Action | Typically produced by |
Answer | “say yes to cashier” |
Ask | “ask woman about plutonium” |
Attack | “fight soldiers” |
Give | “give coin to charon” |
Kiss | “kiss jemima” |
Order | “thorin, go west” |
Show | “show pass to benton” |
Tell | “tell paris about helen” |
ThrowAt | “throw axe at dwarf” |
WakeOther | “wake beauty up” |