10.3.  compile-replace-Technik

10.3.1.  Sondernotation und der Befehl

Compile-Replace-Befehl
Das XFST-Werkzeug erlaubt es, Ausdrücke der Form "^[" RA "^]" auf einer Seite eines Transduktors sekundär zu kompilieren und den Ausdruck durch sein Kompilat im Transduktor zu ersetzen.

Beispiel 10.3.1 (compile-replace in xfst).

reg  u .x. "^[" l "+" "^]";  
 
compile-replace lower


pict

pict


Abbildung 10.3: Primär und sekundär kompilierter regulärer Ausdruck


Fragen

Wieviele Wörter erkennen die beiden Transduktoren?

10.3.2.  Reduplikation nochmals

Compile-Replace für unbegrenzte Reduplikation

Reduplikation zur Pluralbildung im Malayischen

Stamm Reduplikation Bedeutung
buku buku-buku Buch
pelabuhan pelabuhan-pelabuhan Hafen
Die Stämme sind unmarkiert bezüglich Numerus. Die morphologisch ausgeprägte Pluralform ergibt sich durch Reduplikation des ganzen Stammes.

Abstrakte Pluralbildung für compile-replace-Einsatz

Idee

Im Plural wird der Stamm 2-fach konkateniert:

{NRoots}^2

Alignierung

Upper: b u k u +Plural Lower: ^[ { b u k u } ^ 2 ^]

define RedupPrefix 0 .x. "^[" "{";  
 
define NRoots {buku}|{pelabuhan};  
 
define Num [  
    "+Unmarked":0  
 | ["+Plural" .x.  "}" "^" 2 "^]" ]  
];  
 
define AbsNoun [  
  ( RedupPrefix ) NRoots Num  
];

Problem

Die untere Sprache erlaubt Wörter, welche keine kompilierbaren RA ergeben. Welche? buku}^2^]

Untere Sprache kompilierbar machen und kompilieren

Ungrammatisches Herausfiltern

define BracketFilter [  
 ~[ ?* "^[" ~$ [ "^]" ] ]  ! Kein ^[ ohne nachfolgendes ^]  
 & ~[ ~$["^[" ] "^]" ?* ]  ! und kein ^] ohne vorangehendes ^[  
 ];

Alles zusammensetzen

read regex AbsNoun .o. BracketFilter;  
 
compile-replace lower  
 
apply up bukubuku  
apply up buku