Vor 1 Stunde
(Dieser Beitrag wurde zuletzt bearbeitet: Vor 1 Stunde von siebenstreich.)
Ich bin fertig, puh. Das war eine größere Geschichte. Viele Umbenennungen und Kommentare in der seg096.cpp (es gab auch noch nicht richtig benannte bzw. irreführend benannte Funktionen). Alles mit enums aufgezogen und in die zahlreichen Funktionsaufrufe eingebaut.
Aber es hat sich rentiert: Wieder ein paar Codestellen besser lesbar gemacht und magic numbers aufgelöst. Wieder eine Facette aus dem Rohdiamanten rausgeschliffen.
Es gibt eine sehr merkwürdige Stelle im Code: Dort würde ich gerne die Zahl 4 durch INFLECT_PLURAL ersetzen. Damit macht der BCC aber nicht mehr denselben Code, obwohl INFLECT_PLURAL den Wert 4 hat. Henne, kannst du was dazu sagen? Dein Kommentar "TODO: this field access produces other code" 2 Zeilen weiter oben lässt darauf schließen, dass du hier auch schonmal angeeckt bist.
Ja, das war ein guter Ausgangspunkt für mich! Das mit der VON_FORM hat nicht gestimmt. Bit 0 und 1 gehören zusammen. Dort wird der Genus abgelegt (bemerkenswerterweise in der Reihenfolge 1ter, 2ter, 4ter, 3ter Fall).
Singular = 2 war auch nicht richtig. Es ist Singular = 0 und Plural = 4. (also Bit 2 nicht gesetzt / gesetzt)
Die von-Form wird nur für den Genitiv (und Dativ) von Singular-Wörtern (also von Wörtern, die keinen Plural haben) angewendet. Beispiel: Lakritze.
Ich finde es ziemlich wild, was für diese Wörter passiert: Es wird das Plural-Bit gesetzt (irgendwie widersinnig) und außerdem das Anfügen eines Artikels unterbunden, auch wenn die Funktion ursprünglich mit dem Wunsch nach einem bestimmten oder unbestimmten Artikel aufgerufen worden war. Also nicht "der Geruch der Lakrize" sondern "der Geruch von Lakritze".
Zum Thema Geruch: Diese Codestelle stinkt für mich nach Bugs. Das mit dem Dativ ist vermutlich nur deswegen kein richtiger Bug, weil ich glaube, dass diese Funktion nie mit dem Dativ aufgerufen wird.
Ein Bug in diesem Zusammenhang ist übrigens die Textausgabe "<HELD> gelingt das Brauen eines Zaubertrank (stark)s" nach erfolgreicher Alchimieanwendung. Der Gegenstandsname ist "Zaubertrank (stark)", und die Grammatik-Maschinerie macht daraus nach ihren Standardregeln den Genitiv.
Allerdings fällt mir keine einfache Lösung ein. Den Gegenstand in "starker Zaubertrank" umzubenennen bringt nichts, denn das Adjektiv "stark" wird bei der Bildung des Genitivs nicht mit einbezogen, das ist nicht vorgesehen. Hier hätte man "<HELD> gelingt das Brauen eines starker Zaubertranks", wieder nicht richtig.
Aber es hat sich rentiert: Wieder ein paar Codestellen besser lesbar gemacht und magic numbers aufgelöst. Wieder eine Facette aus dem Rohdiamanten rausgeschliffen.
Es gibt eine sehr merkwürdige Stelle im Code: Dort würde ich gerne die Zahl 4 durch INFLECT_PLURAL ersetzen. Damit macht der BCC aber nicht mehr denselben Code, obwohl INFLECT_PLURAL den Wert 4 hat. Henne, kannst du was dazu sagen? Dein Kommentar "TODO: this field access produces other code" 2 Zeilen weiter oben lässt darauf schließen, dass du hier auch schonmal angeeckt bist.
(Gestern, 17:42)llm schrieb:(Gestern, 13:56)siebenstreich schrieb: Ich hab mir die seg096.cpp jetzt genauer angeschaut und bin von meiner GRAMMAR_PACK-Funktion auch nicht mehr überzeugt, weil diese Status-Zahl flexibler verwendet wird als ich es mir vorgestellt hatte. Ich bin dabei, was zu bauen...
ich hatte mir alle Stellen angeschaut wie/was kombiniert wird und daraus dann die #defines (jetzt dann enums) abgeleitet
Ja, das war ein guter Ausgangspunkt für mich! Das mit der VON_FORM hat nicht gestimmt. Bit 0 und 1 gehören zusammen. Dort wird der Genus abgelegt (bemerkenswerterweise in der Reihenfolge 1ter, 2ter, 4ter, 3ter Fall).
Singular = 2 war auch nicht richtig. Es ist Singular = 0 und Plural = 4. (also Bit 2 nicht gesetzt / gesetzt)
Die von-Form wird nur für den Genitiv (und Dativ) von Singular-Wörtern (also von Wörtern, die keinen Plural haben) angewendet. Beispiel: Lakritze.
Ich finde es ziemlich wild, was für diese Wörter passiert: Es wird das Plural-Bit gesetzt (irgendwie widersinnig) und außerdem das Anfügen eines Artikels unterbunden, auch wenn die Funktion ursprünglich mit dem Wunsch nach einem bestimmten oder unbestimmten Artikel aufgerufen worden war. Also nicht "der Geruch der Lakrize" sondern "der Geruch von Lakritze".
Zum Thema Geruch: Diese Codestelle stinkt für mich nach Bugs. Das mit dem Dativ ist vermutlich nur deswegen kein richtiger Bug, weil ich glaube, dass diese Funktion nie mit dem Dativ aufgerufen wird.
Ein Bug in diesem Zusammenhang ist übrigens die Textausgabe "<HELD> gelingt das Brauen eines Zaubertrank (stark)s" nach erfolgreicher Alchimieanwendung. Der Gegenstandsname ist "Zaubertrank (stark)", und die Grammatik-Maschinerie macht daraus nach ihren Standardregeln den Genitiv.
Allerdings fällt mir keine einfache Lösung ein. Den Gegenstand in "starker Zaubertrank" umzubenennen bringt nichts, denn das Adjektiv "stark" wird bei der Bildung des Genitivs nicht mit einbezogen, das ist nicht vorgesehen. Hier hätte man "<HELD> gelingt das Brauen eines starker Zaubertranks", wieder nicht richtig.

