9.3.  twolc: Ein Formalismus für Alternationen

9.3.1.  Formalismus

Ein Formalismus für phonologische Alternationen

twolc-Sprache

Die twolc-Sprache ist eine auf lexikographische Bedürfnisse zugeschnittene Regel-Notation, um die Bedingungen (ortho-)graphischer und phonologischer Alternationen zu beschreiben.

Aufbau einer twolc-Datei

Alphabet (feasible pairs)

Nach dem Schlüsselwort Alphabet werden alle möglichen Symbolpaare des Regeltransduktors aufgelistet.

Regeln

Nach dem Schlüsselwort Rules folgen die Regeln, denen jeweils ein treffender Name in Anführungszeichen vorangeht.

Reguläre Konstrukte

In den Regeln sind die meisten regulären Operatoren für reguläre Sprachen (nicht Relationen!) zugelassen. Sie dürfen aber nie nur auf einen Teil eines Symbolpaars angewendet werden (a:[b+]).

Im Gegensatz zu den Ersetzungsregeln von xfst dürfen alle Bestandteile sich auf die obere und die untere Sprache beziehen (deshalb: Zwei-Ebenen-Regeln).

Semantik der Regel-Operatoren


pict

Abbildung 9.7: Semantik der 2-Ebenen-Operatoren

Phänomene mit 2-Ebenen-Regeln in GERTWOL

Ausschnitt aus GERTWOL ▸▸▸

Alphabet a b c d e f g h i j k l m n o p  
         q r s t u v w x y z ä ü @U:0 #:0 %_:0 ;  
 
Rules  
"Uml a~ä"  
 a:ä <=> _  [ \ [#: | a: | o: | u: ]]* @U: ;  
         _ u: [ \ [#: | a: | o: | u: ]]* @U: ;  
 
"Uml u~ü"  
 u:ü <=>  \a: _  [#: | a: | o: | u: ]* @U: ;

Notationen der Form "c:" (oder ":c") bezeichnen nicht die Identitätsrelation, sondern alle möglichen Symbolpaare aus dem Alphabet (feasible pairs), welche auf der einen Seite das Symbol c aufweisen.

9.3.2.  Benutzerschnittstelle

Kompilieren von twolc-Dateien

Einlesen und kompilieren


$ twolc
twolc>  read-grammar rules.twol
reading from "rules.twol"...
Alphabet... Rules...
  "Uml a~ä" "Uml u~ü"
twolc>  compile
Compiling "rules.twol"
Expanding... Analyzing...
Compiling rule components:
  "Uml a~ä" "Uml u~ü"
Compiling rules:
  "Uml a~ä"
    a:ä <=> 2 1
  "Uml u~ü"
    u:ü <=>
Done.

Inspizieren und exportieren

twolc>  show-rules  
"Uml a~ä"  
   ? a o u a:ä @U:0  
1: 1 2 1 1  3    1  
2: 5 2 1 5  3  
3. 4     4       1  
4. 4             1  
5: 5 2 1 1  3  
Equivalence classes:  
((? b c d e f g h i j k l m n p  
q r s t v w x y z ä ü _:0) (a)  
(o #) (u u:ü) (a:ä) (@U:0))  
...  
twolc>  save-binary rules.fst  
Writing "rules.fst"

Zustandsdiagramm für Regel “Uml a˜ä”

"Uml a~ä"  
 a:ä <=> _  [ \ [#: | a: | o: | u: ]]* @U: ;  
         _ u: [ \ [#: | a: | o: | u: ]]* @U: ;


pict

Abbildung 9.8: Zustandsdiagramm für Zwei-Ebenen-Regel