Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Announcing Inform 6.10 and Library 6/3

6 views
Skip to first unread message

Graham Nelson

unread,
Dec 16, 1996, 3:00:00 AM12/16/96
to

Joint release of Inform 6.10, Library 6/3 and Translator's Manual
=================================================================

Inform 6.10 is the first release of the Inform 6 compiler to enhance
the syntax of the language (slightly), and contains many bug fixes
and minor improvements over 6.05. Library 6/3 is the first release
of the library for about a year which has had substantial work done
to it (the debugging suite is much better, the parser's
disambiguation routines have been rewritten, the parser is
multilingual if not quite omnilingual). The Translator's Manual is
the outcome of the consultation exercise on language definition
files.

Note that *** library 6/3 can only be used with Inform 6.10 or later
*** whereas Inform 6.10 should still work with library 6/1 and 6/2 as
well as 6/3. (Though some of the new grammar features can't be used
with 6/1 or 6/2, all old code should be fine.)

As a temporary measure, you can get hold of the new material from the
Inform 6 Home Page:

http://www.gnelson.demon.co.uk/inform.html

It will be filed in its proper place at ftp.gmd.de shortly, and then
the temporary uploads page will be taken out.

An Inform 6.10 Technical Manual is also provided, but this release
note is hopefully informative enough for game designers.

The all-Internet prize for persistence in reporting a bug goes to
Paul David Doherty, who first reported a bug concerning the parser's
handling of large numbers of full stops sometime around Release 10 of
"Curses", towards the end of the late middle ages. It is an ex-bug.
It has ceased to be.

Graham Nelson
16 December 1996

---------------------------------------------------------------------

1. Additions to the Inform 6 language
--------------------------------------
The additions were driven by the needs of the new multilingual parser
and concern grammar and the dictionary.

(a) Dictionary words can contain accented characters.
For example, 'na@:ive' is now a legal dictionary word. So is
'@'eleve' (i.e., the presence of the accent ' is no problem).

(b) A new grammar token called "topic" is provided, which can be
summed up as "like the topic to look up in something": that
is, it accepts any amount of text and sets the variables
consult_from and consult_words accordingly. For example,
the grammar

Verb 'spong' * topic 'into' noun -> Spong;

would match

"spong great aunt lucy into the wardrobe"
---------------
with "topic" matching the underlined text. The action resulting
is just <Spong wardrobe>, while

consult_from = 2 ("great" is word 2)
consult_words = 3 (three words in "great aunt lucy")

(This is how conversation and reading are done already: see the
Designer's Manual.)

(c) Actions can be marked as "reverse" in grammar, meaning that the
first and second objects should be exchanged. For example:

Verb 'spong' * noun 'into' noun -> Spong reverse;

would match

"spong the cupboard into the duck"

and generate the action <Spong duck cupboard>. (This avoids a
certain amount of clumsiness creating unnecessary actions
called something like SpongR.)

(d) Prepositions (that is, tokens which are just words, like 'into')
can now be separated by slashes /, meaning "any of these".
For instance,

Verb 'spong' * noun 'into'/'in'/'onto'/'on' noun -> Spong;

will accept any single one of the four words between two nouns.

(e) Dictionary words which end //p are marked as "pluralising".
For instance,

'grapes//p'

enters the dictionary as the word 'grapes', marked as
pluralising. This does _not_ mean that it's a plural word in
the ordinary linguistic sense. It means that it can refer to
more than one game object.

So a typical use would be:

Object "red box"
with name 'red' 'box' 'boxes//p';
Object "green box"
with name 'green' 'box' 'boxes//p';

If these are both on the floor, we might see the dialogue:

> get box
Which do you mean, the red box or the green box?

> get boxes
red box: Taken.
green box: Taken.

because the parser (in library 6/3 or later) assumes that 'box'
refers to only one object, while it knows 'boxes' might refer
to many game objects. (Previously, one had to write an annoying
parse_name routine to communicate this information to the
parser.)

2. Improvements to the Debugging Suite
---------------------------------------
That is, to the extra verbs available when games are compiled -D
(or with "Constant DEBUG;" at the top of the source code).

(a) Two new verbs: "showverb" and "showobj". Best explained by
example...

>showverb take
Verb 'carry' 'get' 'hold' 'take'
* 'out' / 'off' / 'up' -> Exit
* 'in' / 'into' / 'on' / 'onto' noun -> Enter
* 'off' worn -> Disrobe
* 'off' noun -> GetOff
* multi -> Take
* multiinside 'from' / 'off' noun -> Remove
* 'inventory' -> Inv

>showobj diamonds

Treasure "diamonds" (77) in "West Side of Fissure"
has multitude
with name 'diamond' 'diamonds' 'several' 'high' 'quality',
after [...] (15577),
initial "There are diamonds here!" (23606),
description "They look to be of the highest quality!"
(23599),
article "some" (23598),
depositpoints west wall (10),

Note that "showobj" is not quite able to get property values
right: it guesses that property values are probably objects,
routines, strings or else 0, 1 or NULL. (Except that it knows
the three library properties which usually hold numbers.)
So when it prints

depositpoints west wall (10),

the value is actually just meant as the number 10, and
"showobj" has wrongly guessed that this refers to object 10.
Similarly, if a property holds a very large or negative number
(other than -1, i.e., NULL) it may be written as something
like

depositpoints "k lglk lkjshlk ...rubbish... " (-2366)

Despite this I think "showobj" is a useful addition.
Incidentally, typing just "showobj" (with no object named)
will show the current location, which is helpful for checking
map connections.

Note that in Library 6/3, no properties or attributes are
"aliased". This makes all the debugging output much easier
to follow.

(b) Parser tracing (caused by "trace") is more descriptive, along
the lines of "showverb": this should help translators.

(c) The verb "routines" (you can now also type "messages") traces
all messages sent in the game, and their parameters. (It
used to trace only the routines being called by the library;
incidentally, whereas libraries 6/1 and 6/2 imitated message-
sending when calling before routines and so on, library 6/3
actually sends messages.)

(d) The verb "actions", which traces actions, now names every
action, including those created in the program (i.e., not
just the library ones).

3. Improvements to the rest of the library
-------------------------------------------
Changes are otherwise modest. A number of bugs are removed
and the removal of "alias"ing properties has two pleasant if
minor consequences:

(a) The same object can now have an active timer and an
active daemon at the same time.

(b) The rule about which property is used to describe an
object in a room description is clearer:

(1) if O is a container or door and it's open
and provides a when_open message, use that
(2) if O is a container or door and it's closed
and provides a when_closed message, use that
(3) if O is switchable and it's on
and provides a when_on message, use that
(4) if O is switchable and it's off
and provides a when_off message, use that
(5) otherwise use initial

In practice this is not really different from the
previous system except for wrongly constructed objects,
which it handles better.

------------------------------------------------------------------
--
Graham Nelson | gra...@gnelson.demon.co.uk | Oxford, United Kingdom


Matthew Amster-Burton

unread,
Dec 17, 1996, 3:00:00 AM12/17/96
to

Graham Nelson <gra...@gnelson.demon.co.uk> wrote:

> Verb 'spong' * topic 'into' noun -> Spong;
>
> would match
>
> "spong great aunt lucy into the wardrobe"

Uh...is this an actual verb or a neologism for the sake of example?

Matthew


mathew

unread,
Dec 17, 1996, 3:00:00 AM12/17/96
to

In article <32b6c9f4...@news.u.washington.edu>,
Matthew Amster-Burton <mam...@u.washington.edu> wrote:

>Graham Nelson <gra...@gnelson.demon.co.uk> wrote:
>> Verb 'spong' * topic 'into' noun -> Spong;
>>
>> would match
>>
>> "spong great aunt lucy into the wardrobe"
>
>Uh...is this an actual verb or a neologism for the sake of example?

It's a nonsense word common to computer scientists and mathematicians in
Oxford and Cambridge. It was popularized around 1988/89; in fact, I found
my "Spong" T-shirt just the other day.

It's also a proper noun; there's a Bishop Spong, and you'll find an entry in
the whois database for spong.com; and when I was growing up, my grandmother
had an amazing Spong runner bean slicer.


mathew
--
me...@pobox.com content available at <URL:http://www.pobox.com/%7Emeta/>
RFC 1896, Eudora Pro 3 and CyberDog 1.1 text/enriched mail accepted

MILLENNIUM: Why not learn to spell it four years early?

Brad O`Donnell

unread,
Dec 18, 1996, 3:00:00 AM12/18/96
to Graham Nelson

Hey, while you're at it, I have a suggestion for Inform 7 (or 6.5):


Macros. They would be very useful.

--
Brad O'Donnell
"A story is a string of moments, held together by memory."

Graham Nelson

unread,
Dec 18, 1996, 3:00:00 AM12/18/96
to

In article <596sht$o...@rocannon.cam.harlequin.co.uk>, mathew

<URL:mailto:me...@pobox.com> wrote:
>
> In article <32b6c9f4...@news.u.washington.edu>,
> Matthew Amster-Burton <mam...@u.washington.edu> wrote:
> >Graham Nelson <gra...@gnelson.demon.co.uk> wrote:
> >> Verb 'spong' * topic 'into' noun -> Spong;
> >>
> >> would match
> >>
> >> "spong great aunt lucy into the wardrobe"
> >
> >Uh...is this an actual verb or a neologism for the sake of example?
>
> It's a nonsense word common to computer scientists and mathematicians in
> Oxford and Cambridge. It was popularized around 1988/89; in fact, I found
> my "Spong" T-shirt just the other day.

Yes, and I was a mathematics undergraduate in Cambridge in
1988/9. Guilty as charged. What a zog, eh?

Graham Nelson

unread,
Dec 18, 1996, 3:00:00 AM12/18/96
to

In article <ant1623271cbM+4%@gnelson.demon.co.uk>, Graham Nelson

<URL:mailto:gra...@gnelson.demon.co.uk> wrote:
>
>
> Joint release of Inform 6.10, Library 6/3 and Translator's Manual
> =================================================================

It's bad form to interrupt my own posts, but two things I forgot
to mention:

(a) The default indefinite article for all objects used to be "a".
With the new library (which needs to be more sensitive to
word contractions) the default is to print "a" or "an",
whichever is correct.

(b) There are four new attributes:

male
female
neuter
pluralname

(Well, actually "female" has been around for ages.) The first
three aren't useful in English-language games except to
give the genders of people. (Note that you can give the
"neuter" attribute to animate but sexless object such as
a computer, if you so wish. This affects the handling of
words like "it", "him" and "her".)

"pluralname" should be given to an object whose short name
is linguistically a plural. For instance, an object called

"pillars of ice"

ought to have "pluralname": this makes the library messages
more grammatical. You might see something like

> OPEN PILLARS
Those aren't openable.

instead of "That isn't openable.".

These are fringe benefits from the stricter sense of grammar
which the multilingual parser can't do without.

0 new messages