efun: query_deklin


FUNKTION:

query_deklin

DEKLARATION:

varargs string query_deklin(mixed who, int art, int fall, mixed adjektiv, mixed owner)

BESCHREIBUNG:

Liefert deklinierte Form eines Objektnamens. Dabei wird beruecksichtigt,
ob das Objekt ein personal_name hat (query_personal()==1).

  who   Das Objekt dessen deklinierte Form gewuenscht ist.

	ODER eine virtuelles Objekt in der Form:
	   ([ "name" : "...", "gender" : "..." ])
	oder bei Plural
	   ([ "name" : "...", "gender" : "...", "plural": 1 ])

        ODER eine Zahl:
           OBJ_TO  0   this_object()  (default)
           OBJ_PO  1   previous_object()
           OBJ_TP  2   this_player()
           OBJ_OW  3   auto_owner_search  (sonst this_player())
           OBJ_TI  4   this_interactive()


  art
     ART_EIN            unbest. Artikel    (ein) + Adjektive + Nomen
     ART_DER            bestimmter Artikel (der) + Adjektive + Nomen
     ART_DIESER         demonstrativ       (dieser)  + Adjektive + Nomen
     ART_MEIN           possesiv 1.Person  (mein) + Adjektive + Nomen
     ART_DEIN           possesiv 2.Person  (dein) + Adjektive + Nomen
     ART_SEIN           possesiv 3.Person  (sein) + Adjektive + Nomen
     ART_ICH            personal 1.Person  (ich)
     ART_DU             personal 2.Person  (du)
     ART_ER             personal 3.Person  (er)
     ART_KEIN           negiert            (kein)
     ART_JENER      \
     ART_MANCHER     > Selbsterklaerend :)
     ART_WELCHER    /

     ART_KEINS          Kein Artikel, nur die Adjektive und das Nomen.
     ART_KEINS_BEST     Kein Artikel, nur die Adjektive und das Nomen.
     ART_KEINS_UNBEST   Kein Artikel, nur Adjketive(unbestimmte Form) und
                        das Nomen.
     ART_NUR_DER        nur bestimmter Artikel   (keine Adj., kein Nomen)
			(ART_DER | ART_NO_ADJEKTIV | ART_NO_NOMEN)
     ART_NUR_EIN        nur unbest. Artikel      (keine Adj., kein Nomen)
			(ART_EIN | ART_NO_ADJEKTIV | ART_NO_NOMEN)
     ART_NUR_DEIN       nur Possesivpronomen 2.P.(keine Adj., kein Nomen)
     ART_NUR_SEIN       nur Possesivpronomen 3.P.(keine Adj., kein Nomen)
     ART_NUR_DIESER     nur demonstr. Artikel (keine Adj., kein Nomen)
     ART_NUR_KEIN       (ART_KEIN | ART_NO_ADJEKTIV | ART_NO_NOMEN)

     ART_AAA            Automatische Artikelauswahl (ein/der) + Adj + Nomen
     ART_NUR_AAA        Nur Artikel nach automatischer Auswahl (k.Adj.,k.Nomen)
                        (Je nach Anzahl gleicher Objekte in der Umgebung wird
                         ein oder der benutzt.)
     ART_CAPITALIZE     Im Falle eines Pronoms wird jenes grossgeschrieben,
                        im Falle einer pronomenlosen Konstruktion mit
                        Adjektiven wird das erste Adjektiv gross geschrieben.

  fall
     FALL_DEF   0   Nominativ
     FALL_NOM   1   Nominativ
     FALL_GEN   2   Genitiv
     FALL_DAT   3   Dativ
     FALL_AKK   4   Akkusativ


  adjektiv  (mixed)
     string  ->  Grundform eines Adjektivs
                 ""         KEINE Adjektive
     string* ->  ({ unregelm.Grundform, Deklinationsstamm }) eines Adjektivs
                 ({ adjektiv1, adjektiv2, ...}) mehrere Adjektive
     int i   ->  i == 0   ALLE Adjektive des Objekts who.
                 i >  0   Die ersten i Adjektive des Objekts who.
                 i <  0   Das -i. te Adjektiv des Objekts who.
     int*    ->  ({ a, b }) Die a bis b. Adjektive des Objekts who.
                 ({})       KEINE Adjektive


  owner Besitzer des Objekts. Falls 0 wird es aus dem environment berechnet.
        (nur fuer art == ART_SEIN bzw. ART_NUR_SEIN verwendet)

Die Konstanten ART_..., FALL_..., OBJ_... werden in deklin.h definiert.

Mit Hilfe von adjektiv koennen alle oder bestimmte Adjektive des Objekts
oder ein fremdes Adjektiv in den Ergebnisstring zwischen Artikel/Pronom und
Substantiv gestellt werden.
(Adjektive eines Objekts setzt man mit set_adjektiv, siehe dort.)

Alle Parameter sind optional.
Defaultwerte sind dann
   who:      this_object()
   art:      0  (bestimmter Artikel)
   fall:     0  (Nominativ)
   adjektiv: 0  (alle Adjektive des Objekts who)
   owner:    0  (auto owner search: living environment object)

BEISPIELE:
   who sei eine Person namens Anton
     query_deklin(who);                   liefert: "Anton"
   who sei ein Ork
     query_deklin(who,ART_EIN,3,"boesen");      liefert: "einem boesen Ork"
   what sei ein Auto und who eine weibliche Person
     query_deklin(what,ART_SEIN,4,0,who);        liefert: "ihr Auto"


query_deklin verwendet:
   auto_owner_search
   parse_deklin_object

   query_pronom
   query_deklin_adjektiv
   query_deklin_name

   query_personal
   query_plural
   query_eigen

Die Verwendung von der, dem, den, ... anstelle von query_deklin
wird empfohlen!!! Siehe dort.

VERWEISE:

wer, der, ihr, query_pronom, set_adjektiv

GRUPPEN:

simul_efun, grammatik

SOURCE:

/secure/simul_efun/deklin

UNItopia (mudadm@UNItopia.de)