Informisator
* * *
Was ist der Informisator?
Der Informisator (ja, kein schöner Name, ich weiß) erzeugt ein Gerüst aus einfachen Objektbezeichnungen und macht damit das, was Inform 7 so elegant auf Englisch beherrscht:
The apple peeler is a thing.
Mit einem kurzen Satz sind hier der Bezeichner für das Objekt, der Name, der zur Ausgabe verwendet wird, und das Vokabular erzeugt worden. Es wird außerdem auch ausgeschlossen, dass es Vokabeln nicht gibt, die im Namen auftauchen, dass also das Spiel immer vom apple peeler spricht, aber ›apple‹ nicht verstanden wird.
Der Informisator will diese einfache Definition auch für deform ermöglichen. Aus
der Apfel=schäler
wird der I6-Code:
Object -> Apfelschaeler "Apfelschäler"
with name 'schaeler' 'apfelschaeler',
has male;
Dieses Gerüst kann man dann mit den eigentlichen Objektdefinitionen ausschmücken. Das erspart hoffentlich etwas Tipparbeit. Ganz ideal ist es natürlich nicht, denn man muss das Gerüst immer noch aus dem Browser kopieren.
(Der Informisator ist auch mehr ein proof of concept.)
Wie der Informisator arbeitet
Aus einer oder mehreren Zeilen wird ein Objektname bestimmt. Die ertse Angabe bestimmt neben dem Vokabular auch den Bezeichner und den Namen des Objekts, alle weiteren Zeilen fügen Synonyme zum Vokabular hinzu.
Diese Objektnamen stehen im Nominativ. Damit der Genus bestimmt werden kann, sollte man einen Artikel angeben. Wenn kein Artikel angegeben wird, wird angenommen, dass das Wort im Plural steht:
der rote Hering
die Spieluhr
das Schäufelchen
Ziegelsteine
Wenn jedoch aus Adjektivendungen der Genus hervorgeht, kann der Artikel weggelassen werden oder auch für den Plural angegeben werden:
roter Hering
eselohriges Taschenbuch
die hohe Mauer
die schweren Steine
Im Zweifelsfall ist es immer besser, die Regel »Singular mit Artikel, Plural ohne Artikel« zu verwenden.
Das Objekt sollte so geschrieben werden, wie es in der Ausgabe auftauchen soll. Insbesondere sollten die Substantive groß geschrieben werden. Klein geschriebene Wörter werden als Adverbien oder Adjektive betrachtet, je nachdem ob sie mit einer Adjektivendung aufhören oder nicht. Diese wird dann abgeschnitten und markiert. Das ist ganz praktisch, denn so werden die Adjektivstämme »hoh«, »orang« und »unter« korrekt erkannt, wo menschliche Autoren oft »hoch«, »orange« und »untere« angeben, was deform nicht versteht. Unbeugbare Adjektive wie »rosa« oder »prima« werden als Adverbien verstanden, was im Sinne von deform in Ordnung ist.
Nach dem ersten Substantiv wird alles wörtlich übernommen:
das Glas mit frischem Orangensaft
ein Buch über Afrika und den Nahen Osten
Endungen
Manche Substantivendungen muss man explizit angeben. Dazu hängt man die Endung in Klammern direkt an das Substantiv an. Die Endungen sind (n) für Plurale, (en) für manche männliche Substantive, (s) und (es) für den Genitiv männlciher und sächlicher Wörter und (e) um an ein groß geschriebenes Wort eine Adjektivendung anzuhängen:
der Krank(e)
Bücherregale(n)
der Mensch(en)
das Brot(s)
das Haus(es)
Besondere Artikel
Um die Ausgabe von Artikeln zu steuern, gibt es ein paar Sonderregeln. Wenn der Artikel in Klammern steht, handelt es sich um einen Eigennamen:
(die) Alexandra
(der) Herr Müller
(die) Franks Kaffeetasse
Wenn der Artikel komplett groß geschrieben wird, ist das Objekt immer bestimmt:
DIE Schillerstraße
DER Weihbischhof von Paderborn
Mit »mein« oder »dein« kann man Objekte in den Besitz des Spielers bringen:
meine Armbanduhr
(Die letzten beiden Optionen funktionieren irgendwie nicht mit Objekten in der Mehrzahl, wenn es kein Adjektiv gibt. Hmmm.)
Und schließlich kann man mit »(etwas)« den bestimmten Artikel unterdrücken:
das (etwas) Schmieröl
(etwas) grob gemahlenes Roggenmehl
Worttrennungen
Wörter, die einen Bindestrich enthalten, werden zur Bestimmung des Vokabulars aufgeteilt. Dabei werden bei Substantiven das Gesamtwort und der zweite Teil des Worts, bei allen anderen Wörtern alle Teile als Vokabular abgelegt:
CD-Ständer → CD-Ständer, Ständer, aber nicht CD
blau-weiß → blau-weiß, blau, weiß
Oft werden Wörter aber zusammengeschrieben. Dann kann man, um sich Tipparbeit zu sparen, die Wörter mit einem Gleichheitszeichen trennen:
Brief=marke → Briefmarke, Marke, aber nicht Brief
dunkel=rot → dunkelrot, dunkel, rot
Der Effekt für das Vokabular is derselbe wie bei Bindestrichen, jedoch tauchen die Gleichheitszeichen nicht im Objektnamen auf. Sie sind eher so wie die Trennzeichen in Wörterbüchern zu verstehen, obwohl sie keine Silben, sondern ganze Wortteile voneinander trennen.
Einschränkungen
Der Informisator sollte alle Besonderheiten der Inform-Syntax berücksichtigen. Zum Beispiel werden alle Sonderzeichen wie @
und ~
im Objektnamen geschützt, Apostrophe in Vokabeln werden als ^
geschrieben und Vokabeln, die nur ein Zeichen enthalten, werden als 'x//'
geschrieben. Trotzdem kann es bei exotischen Objektnamen zu Problemen kommen.
Der Informisator funktioniert ganz ordentlich, solange man nicht seine Grenzen ausreizt. In keinem Fall bietet er ja komplette Objekte, sondern nur ein Gerüst als Ausgangspunkt.
Optionen
Der Informisator erzeugt Code für I6 und I7, wobei der Code für I6 allerdings etwas komplexer und besser gestestet ist.
Mit einigen Optionen kann man die Code-Erzeugung steuern:
- lange Wörter berücksichtigen:
Implementiert eine
parse_name
-Routine für das Objekt, die lange Wörter mitWordMatch
genau analysiert. Das ist in den meisten Fällen nicht nötig, da es für den Parser nicht wichtig ist, ob der Spieler ›schokotoertchen‹ oder ›schokotoer‹ eingegeben hat. Wer aber zwischen schwarzbraunem Schwarzbrot und einem Schwarzbrenner unterscheiden möchte, kann diese Option verwenden. (Nur I6)- Genera markieren:
Wenn diese Option aktiv ist, werden Substantive, die einen anderen Genus haben als den, der mit den Attributen definiert wird, mit dem changig gender markiert. (Nur I6)
- Vokabeln abschneiden:
Diese Option schneidet die Vokabeln nach der Obergrenze von 9 Z-Zeichen ab. Das bedeutet, die Vokabeln werden so angegeben, wie sie beim Parser ankommen. Ziffern und Satzzeichen belegen zwei Z-Zeichen, so dass die Vokabeln tatsächlich kürzer als neun Zeichen sein können.
- 9-Zeichen-Grenze markieren:
Diese Methode ist etwas weniger drastisch als das Abschneiden nach 9 Z-Zeichen, zeigt aber genausogut, wieviel von einem langen Wort tatsächlich beim Parser ankommt. Die Grenze wird hier mit einem vertikalen Strich markiert, der das erste von Inform ignorierte Zeichen ist:
'handschuh|fach'
Beispiele
Der Informisator bringt schon einige Beispiele mit, die man sich anschauen und informisieren lassen kann.
Diese Beispiele funktionieren gut, definieren aber nie einen Genitiv. Das ist für Spiele, die die deform-Lib nicht erweitern, in Ordnung, da deform den Genitiv nie verwendet. Wer aber Erweiterungen einbaut, die die Ausgabe im Genitiv erfordern, sollte hier die (s) und (es) entsprechend anhängen. Meistens kommt man jedoch ohne allgemeine Ausgaben im Genitiv aus.