Forum moved to if-forum.org
Autor Nachricht
<  I6: Verben überprüfen
ChristianB
BeitragVerfasst am: Di, 14 Sep 2010 - 16:20  Antworten mit Zitat
Experte
Experte


Anmeldungsdatum: 05.05.2004
Beiträge: 633
Wohnort: Hamburg

Ich möchte gerne das Verben-Wörterbuch eines Spiels durchsuchen und überprüfen, ob Verben definiert wurden, die bestimmte Endungen tragen ('e' und 'en').

Wie man die Endungen bei einer Vokabel prüft, kann ich mir gerade noch zurechtlegen, aber wie man das Lexikon von Z-Machine und Glulx durchsucht, ist mir ein Rätsel.

Was muss ich machen? Wo muss ich nachschlagen?

Hilfe!

Edit: Okay, für die Z-Maschine habe ich etwas in der Art hinbekommen. Muss ja wohl in Glulx auch irgendwie gehen ...

Es werden nur neue, vom Autor definierte, Verben berücksichtigt.

Code:
Array LibcheckIgnoreVerbs table
    'baumle'   'durchstoe' 'ende'    'klettre'   'konsultie'
    'lage'     'meldungen' 'nee'     'noe'       'oeffne'
    'pronomen' 'punkte'    'restore' 'save'      'schnueffe'
    'scope'    'score'     'showme'  'streichle' 'superbrie'
    'trace'    'tree'      'verbose' 'verschlie' 'wedle'
;

[ YLibcheck i j k l last last2 ignore_verbs_num;
    ignore_verbs_num = LibcheckIgnoreVerbs-->0;
    for (i = dict_start : i <= dict_end-dict_entry_size : i=i+dict_entry_size ) {
        j = i->#dict_par1;
        if (0 ~= j&1) {
            for (k = 1 : k <= ignore_verbs_num : k++ )
                  if (LibcheckIgnoreVerbs-->k == i) j=-1;
            if (j==-1) continue;
            last = LastCharacterAddress(i);
            last2 = LastCharacterAddress(i, 1);
            if (last == 'e' || (last == 'n' && last2 == 'e') )
                print "Das Verb '", (address) (i),
                      "' endet mit 'e' oder 'en'.^";
        }
     }
     print "^^";
];
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Martin
BeitragVerfasst am: Mi, 15 Sep 2010 - 7:46  Antworten mit Zitat
Experte
Experte


Anmeldungsdatum: 25.08.2002
Beiträge: 677
Wohnort: München

Blöderweise werden die globalen Variablen dict_start, dict_end und dict_entry_size nur für Z-Code, aber nicht für Glulx gesetzt. Ansonsten würde Dein Code auch für Glulx funktionieren.

Leider gibt die Glulx Inform Technical Reference keinen genauen Aufschluss über den Ort des Dictionaries, daher muss man sich diese Werte aus der Rouitine Tokenise__ zusammensuchen.

Schneller Fix:
Code:
[ YLibcheck i j k l last last2 ignore_verbs_num;
    ignore_verbs_num = LibcheckIgnoreVerbs-->0;
 
    #ifdef TARGET_GLULX;   
    dict_start = #dictionary_table + WORDSIZE;
    dict_entry_size = DICT_WORD_SIZE + 7;
    dict_end = dict_start + #dictionary_table-->0 * dict_entry_size;
    #endif;
   
    for (i = dict_start : i < dict_end : i = i + dict_entry_size ) {
        j = i->#dict_par1;
        if (0 ~= j&1) {
            for (k = 1 : k <= ignore_verbs_num : k++ )
                  if (LibcheckIgnoreVerbs-->k == i) j=-1;
            if (j==-1) continue;
            last = LastCharacterAddress(i);
            last2 = LastCharacterAddress(i, 1);
            if (last == 'e' || (last == 'n' && last2 == 'e') )
                print "Das Verb '", (address) (i),
                      "' endet mit 'e' oder 'en'.^";
        }
     }
     print "^^";
];

Natürlich wäre es sauberer, diese Variablen dort, wo auch die Z-Code-Pendants gesetzt werden, zu definieren, damit alles durchgängig ist.

Das habe ich unter I6 mit Latin1-Glulx getestet. Ich hoffe, dass der Code auch mit Unicode-Glulx funktioniert.

Oh, und wenn man das Kleiner-Gleich in ein einfaches Kleiner-Als umwandelt, spart man sich die Subtraktion von dict_entry_size.
_________________
Every silver lining has a cloud.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
ChristianB
BeitragVerfasst am: Mi, 15 Sep 2010 - 9:49  Antworten mit Zitat
Experte
Experte


Anmeldungsdatum: 05.05.2004
Beiträge: 633
Wohnort: Hamburg

Super, alles perfekt!

Danke!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Alle Zeiten sind GMT + 1 Stunde (MEZ)

Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Seite 1 von 1
if-de :: Forum Foren-Übersicht  >  Inform & Glulx

Neues Thema eröffnen   Neue Antwort erstellen


 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.



Kontakt: Administrator

Powered by phpBB and NoseBleed v1.05