next up previous contents index
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 up previous contents index
Next: Ob ich auch wanderte Up: Zusätze Previous: Zusätze
Frank Borger
2003-05-02