10.2.  Flag-Diacritics

10.2.1.  Unifikation

Flag-Diacritics (diakritische Merkmale)

Definition 10.2.1. Flag-Diacritics sind Mehrzeichen-Symbole, welche zur Laufzeit an den mit ihnen beschrifteten Kantenübergängen Instantiiierungstests und Zuweisungen an eine atomare Variable auslösen, ansonsten aber wie ein ε-Übergang funktionieren.

Unifikationstest an einem Kantenübergang

@U.FEATURE.VALUE@
Falls das Merkmal FEATURE uninstantiiert ist, unifiziere es mit dem Wert VALUE und erlaube den Kantenübergang. Falls das Merkmal FEATURE instantiiert ist, erlaube den Kantenübergang nur, wenn es den Wert VALUE hat.

pict

Abbildung 10.2: EA mit Unifikationstest-Übergang

Einfaches Beispiel ▸▸▸

Beispiel 10.2.2 (Flag-Diacritic für Unifikationstest).


read regex [
  [ a "@U.merkmal.a@" | b "@U.merkmal.b@" ]
  c
  [ "@U.merkmal.a@" a | "@U.merkmal.b@" b ]
];

Fragen

Linguistisches Beispiel in lexc ▸▸▸


Multichar_Symbols @U.ART.PRESENT@ @U.ART.ABSENT@ uN aN iN

LEXICON Root
    Article ;

LEXICON Article
al @U.ART.PRESENT@ Stems ; ! Optionaler definiter Artikel
                   Stems ; ! Kein definiter Artikel

LEXICON Stems
kitaab Case ;             ! Beispieleintrag "Buch"

LEXICON Case
u #;                   ! Definiter Nominativ
a #;                   ! Definiter Akkusativ
i #;                   ! Definiter Genitiv
@U.ART.ABSENT@ IndefCase ; ! Falls def. Artikel fehlt,
                           ! folgt Suffix für indef. Artikel
LEXICON IndefCase
uN # ;                 ! Indefiniter Nominativ
aN # ;                 ! Indefiniter Akkusativ
iN # ;                 ! Indefiniter Genitiv

10.2.2.  Weitere Operatoren

Weitere Tests

Forward-Looking Requirements

Mit Diacritics kann die Präsenz eines nachfolgenden Elements erzwungen werden.
Ein Schlusstest verbietet alle Pfade, bei denen eine gefordertes Merkmal noch nicht gesättigt worden ist.


LEXICON Foo
foo@P.RequireBar.ON@ CC1;
...
LEXICON Bar
bar@C.RequireBar@ CC2;
...
LEXICON TheEnd  ! Endstation ALLER Lexika
@D.RequireBar@ # ;

Vorteil von Flag-Diacritics

10.2.3.  Elimination diakritischer Merkmale

Manuelle Eliminierung von diakritischen Merkmalen
Diakritische Merkmal definieren Restriktionen über einer Sprache:


reg Restr ~ [           ! Es darf nicht sein, dass
"@U.ART.PRESENT@"       ! ein ABSENT nach einem PRESENT steht.
  ~ $ ["@P.ART.ABSENT@" ! Solange nicht ABSENT dazwischen positiv gesetzt
       | "@C.ART@"      !  oder das Merkmal ART neutralisiert ist.
      ]
 "@U.ART.ABSENT@"
];

Vorgehen zur Eliminierung

Die Restriktion muss auf den Transduktor komponiert werden. Danach lassen sich alle diakritischen Merkmale mit Bezug auf ART durch ε ersetzen.