IF-Forum

» IF-Forum - Autorencafé - Schreiben! - I7: Kein Changing Gender bei gleichen Objekten derselben Art
AntwortenNeues ThemaNeue Umfrage

I7: Kein Changing Gender bei gleichen Objekten derselben Art

Geschrieben um 17:45 am 14.09.2010 | Zitat | Editieren | Löschen
ChristianB
Mitglied
Retired Gumby
Beiträge: 1062

Ich bin mir ziemlich sicher, dass wir das Thema schon in I7 Version 5Z71 vom Tisch hatten, aber nun ist es wieder da. Folgendes Beispiel:

blue

Der Test ergibt:

Zitat:

[1] u becher

Die Tasse ist leer.

[2] nimm ihn

Der Schrank ist fest.

[3] nimm zwei becher

Tasse: In Ordnung.

Tasse: In Ordnung.

[4] pronomen

Die Pronomen beziehen sich im Moment auf Folgendes:

"er": der Schrank

"sie": die Tasse

"es": nicht gesetzt

"ihn": der Schrank

"ihm": der Schrank

"ihr": die Tasse

"ihnen": nicht gesetzt

"damit", "darauf", usw.: die Tasse

"ihm/r": die Tasse

Das ist nicht richtig, denn wenn eine der Tassen (oder auch alle Tassen) "Becher" genannt wird, sollen danach die männlichen Pronomen auf eine der Tassen verweisen. Hier läuft also etwas schief, wir finden nur nicht heraus, wo und was.

Wohl keine Lösung, aber ein Hinweis auf die Ursache könnte folgendes Phänomen sein:

Mit nur vier definierten Tassen funktioniert das Beispiel korrekt.

blue

Zitat:

[1] u becher

Die Tasse ist leer.

[2] nimm ihn

In Ordnung.

[3] nimm zwei becher

Tasse: In Ordnung.

Tasse: In Ordnung.

[4] pronomen

Die Pronomen beziehen sich im Moment auf Folgendes:

"er": die Tasse

"sie": die Tasse

"es": nicht gesetzt

"ihn": die Tasse

"ihm": die Tasse

"ihr": die Tasse

"ihnen": nicht gesetzt

"damit", "darauf", usw.: die Tasse

"ihm/r": die Tasse

Wenn ich den I6-CG-Stack vergrößere, sagen wir mal, ihn von 8 auf 16 verdopple, ...

Constant MAX_CG_STACK = 16;

... dann funktioniert der CG auch mit bis zu 8 gleichen Tassen. Ab der 9. Tasse geht es dann wieder nicht.

Ob es daran liegt, dass die 2-Pass-Parse-Name einer jeden Tasse das Male-Token zweimal anfasst? Geht etwas mit der Zeigervariable CG_pointer daneben? Oder wird der Genus irgendwo in den Standard-Rules auf anderem Weg zurückgesetzt als in der I6-Routine Gender()? Es bleibt ein Rätsel ...

Vielleicht hat ja jemand eine Idee, woran es liegen könnte?

Geschrieben um 00:47 am 25.09.2010 | Zitat | Editieren | Löschen
ChristianB
Mitglied
Retired Gumby
Beiträge: 1062

OK. Das Problem wurde vorläufig so behoben:



[ BestGuess  earliest its_score best i j;

    earliest = 0; best = -1;

    for (i=0 : i<number_matched : i++ ) {

        if (match_list-->i >= 0) {

            its_score = match_scores-->i;

            if (its_score > best) { best = its_score; earliest = i; }

        }

    }

    #Ifdef DEBUG;

    if (parser_trace >= 4)

      if (best < 0) print "   Best guess ran out of choices^";

      else print "   Best guess ", (the) match_list-->earliest,

          " (", match_list-->earliest, ")^";

    #Endif; ! DEBUG

    if (best < 0) return -1;

    i = match_list-->earliest;

    ! *** Bei identischen Objekten den CG des ersten Objekts

    !     neu setzen, da die Information in CG_buffer mglicherweise

    !     überschrieben wurde (dies geschieht, wenn es mehr als

    !     MAX_CG_STACK/2 identische Objekte gibt).

    for (j = 0 : j < MAX_CG_STACK : j++ ) {

        if ( Identical(i, CG_buffer-->(2*j)) ) {

                 GenderNotice(i, CG_buffer-->(2*j + 1));

                 break;

        }

    }

    match_list-->earliest = -1;

    return i;

];

-) instead of "BestGuess" in "Parser.i6t".```

Scheint zu funktionieren.
AntwortenNeues ThemaNeue Umfrage
Powered by Spam Board SVN © 2007 - 2021
Impressum / Datenschutz