Next: Ob ich auch wanderte
Up: Zusätze
Previous: Zusätze
Am Anfang war das Wort: Das Zusatzpaket GInfo
GInfo erleichtert die Programmierung der Aktionen ##Consult,
##Ask, ##Tell und ##Answer.
Die Standardlibrary enthält nur Grammatikzeilen, in denen das indirekte
Objekt dieser Aktionen mit dem Token topic
als unstrukturierter Text erfasst ist. Die Autorin müsste also jedes
mögliche Thema der Unterhaltung (oder des Nachschlagens
in einem Buch etc.) selbst 'von Hand' parsen. ,,Aber warum sollte
er das tun,'' dachte sich JESSE BURNEKO, der Autor des originalen
Info.h, ,,wenn er doch schon den guten Parser der Library zur Hand
hat?''
GInfo.h definiert einfach alle möglichen Themen der Unterhaltung und
Lektüre als Objekte (einer Klasse Topic)
und prüft, ob sie von einem bestimmten Punkt aus im Blickfeld (scope)
sind. Dies ist dann der Fall, wenn sie Kinder eines besonderen Objekts
mit dem Namen Topics sind.
Je nach Bedarf kann man sie dort dynamisch ein- und ausklinken (mit
move ... to und remove).
Die Benutzung ist einfach: Nach dem Parser wird der erste Teil der
Bibliothek eingebunden, der Topics und
die Definition der Klasse Topic sowie die
Definition des Attributs legible
enthält:
-
- Include "GInfo";
Die einzelnen Themen werden als Objekte definiert:
-
- Topic Tantwort Topics
with short_name "Antwort",
name 'Antwort' 'Frage' 'Sinn' 'Leben' 'Universum' 'Rest',
dekl 3,
has female;
Für Konversation oder Konsultation
werden sie vom Parser als second
übergeben (noun ist die Person,
mit der gesprochen wird oder das legible-Objekt,
in dem gelesen werden soll). In der before-Routine
kann also für jede der oben genannten vier Aktionen ein einfaches
switch(second) die ganze Arbeit erledigen:
-
- Object Heft
has neuter legible,
with short_name "Heft",
adj "klein",
dekl 1,
description "Es ist ein kleines Heft ...",
name 'heft' 'klein' 'handbuch',
before [;
Consult: switch (second)
{
TAntwort: "Natürlich Zweiundvierzig ...".
...
Nach GrammarG.h muss dann nur noch der
zweite Teil von GInfo eingebunden werden, der die TopicScope-Routine
und umfangreiche Neudefinitionen der Verben für die vier Aktionen
enthält:
-
- Include "GInfoG";
Will man selbst noch Verben zu diesen Aktionen umdefinieren, muss
man als Platzhalter für das Thema das Grammatiktoken scope=TopicScope
verwenden. Für ein Objekt, in dem mit ##Consult
gelesen werden soll, sollte das Attribut legible
als Grammatiktoken verwendet werden, die Definition eines solchen
Objekts muss die Klausel has legible
enthalten.
GInfoG funktioniert auch mit Glulx.
Next: Ob ich auch wanderte
Up: Zusätze
Previous: Zusätze
Frank Borger
2003-05-02