8.3
 twolc: Ein Formalismus für Alternationen

8.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.

Phänomene mit 2-Ebenen-Regeln in GERTWOL 

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 eine Seite eines Symbolpaars angewendet werden: Verboten: 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 8.7: Semantik der 2-Ebenen-Operatoren

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.

8.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 8.8: Zustandsdiagramm für Zwei-Ebenen-Regel


Zusammenfügen von Lexikon und Regeln 

Einlesen

$ lexc  
lexc> compile-source lexicon.lexc  
...  
lexc>  random-surf  
NOTE:  Using SOURCE.  
*mau_se@U  
*mau_se@U  
...  
lexc>  random-lex  
NOTE:  Using SOURCE.  
*mau_s+S+FEM+SG+NOM  
*mau_s+S+FEM+SG+NOM  
...  
lexc>  read-rules rules.fst  
Opening ’rules.fst’...  
2 nets read.

Verknüpfen und exportieren

lexc>  compose-result  
No epenthesis.  
Initial and final word boundaries  
added. ..Done.  
1.9 Kb. 27 states, 35 arcs, 8 paths.  
Minimizing...Done.  
1.7 Kb. 20 states, 26 arcs, 8 paths.  
lexc>  random-surf  
Use (s)ource or (r)esult? [r]: r  
NOTE:  Using RESULT.  
*maus  
*mäusen  
...  
lexc>  save-result lextrans.fst  
Opening ’lextrans.fst’...  
Done.