Der uebergebene String str wird nach Funktionen durchsucht und ein Array
aus Closures und Strings aufgebaut und zurueckgegeben, welches fuer die
Konstruktion einer lambda-Closure verwendet werden kann.
Enthaelt der String str Funktionen, so muessen sie in der Form "$fun(args)"
geschrieben werden. Dabei ist fun der Name der Funktion und args ist eine
Liste von durch Kommas getrennten Argumenten.
Argumente koennen Mappings, Arrays, Strings, Integerzahlen, Closures oder
Symbole sein.
In Mappings und Arrays koennen keine Closures oder Symbole vorkommen!
Die Strings koennen ohne "" geschrieben werden, Zahlen werden als Argumente
und Mappingeintraege automatisch als solche erkannt. Will man partout eine
Zahl als Stringargument, muss man sie in "" setzen, das Quoten mit \ in
LPC-Strings nicht vergessen!
Ist tp_flag gesetzt, wird Funktionen ohne Argument entweder 'tp (use_tp==1),
use_tp (falls use_tp ein Symbol ist) oder OBJ_TP uebergeben.
Ist use_tp == 1, so wird 'tp eingesetzt, wenn OBJ_TP im String vorkam.
Ist use_tp ein Symbol, so wird es statt OBJ_TP eingesetzt.
Im Mapping functions kann man noch zusaetzliche Funktionen angeben.
Dabei muss einem Funktionsname eine Closure zugeordnet werden.
(z.B. (["hinweis": #'hinweis]), dann wird bei $hinweis(OBJ_TP) hinweis(OBJ_TP)
aufgerufen.)
string_parser wird von mixed_to_closure verwendet, im Normalfall kommt man
damit vor allem bei msgs von v_items und Bewegungsmeldungen in Beruehrung.
Argumente sind vor allem praktisch, wenn man sein/ihr verwenden moechte
bei der Erwaehnung von Sinnen oder Koerperteilen des Spielers in den msgs,
man muss dann nicht mehr eigenhaendig Closures konstruieren.
Beispiele:
Bewegungsmeldungen:
"$Der() naehert sich $dir()."
"$Der(OBJ_TP,besoffen) torkelt $dir() davon."
"Du stolperst ueber $den(OBJ_TP,\"\")." (kein Adjektiv)
v_item-msgs:
"$Des(OBJ_TP,ungeschickt) Versuch schlaegt fehl."
"$Sein(([name:haare,gender:saechlich,plural:1]),({lila,lilan}),
OBJ_TP) stehen $ihm() gut."
"$Ihr(([name:augen,plural:1,gender:saechlich]),mued,OBJ_TP,
erschoepft) fallen zu."
"$Ihr(([name:nase,gender:weiblich]),empfindlich,OBJ_TP
,herumschnueffelnd) kraeuselt sich."