tef-innu

Transducteur à états finis de l’innu
git clone git://git.asteride.xyz/tef-innu.git
Journaux | Fichiers | Références

commit ec98e874d7f59544a30f79dff5beb9ad16ee39e3
parent 0c7e3c974c300d47c09228f65a2bde5f96208c89
Auteur: Loïc Daignault-Pichette <loic@asteride.xyz>
Date:   Wed, 26 Nov 2025 16:03:30 -0500

[sty] Éclater les fichiers .xfst

Les divers sections des fichiers verbes/verbes.xfst et noms/noms.xfst
ont été décomposées en plusieurs fichiers. L’arborescence a été revue
complètement.

Diffstat:
M.gitignore | 4++--
MMakefile | 84++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------
Aechantillon/noms.ech | 0
Rverbes/verbes.ech -> echantillon/verbes.ech | 0
Dnoms/noms.xfst | 115-------------------------------------------------------------------------------
Atef/morphemes.var | 21+++++++++++++++++++++
Rnoms/lexan.lst -> tef/noms/an.lex | 0
Rnoms/lexin.lst -> tef/noms/in.lex | 0
Atef/noms/lexique.xfst | 10++++++++++
Atef/noms/morphemes.xfst | 34++++++++++++++++++++++++++++++++++
Atef/noms/noms.xfst | 7+++++++
Atef/noms/realisation.xfst | 28++++++++++++++++++++++++++++
Atef/noms/tractuel.xfst | 14++++++++++++++
Atef/orthographe.xfst | 10++++++++++
Atef/phonologie.var | 13+++++++++++++
Atef/traits.var | 25+++++++++++++++++++++++++
Atef/verbes/citation.xfst | 23+++++++++++++++++++++++
Atef/verbes/lexique.xfst | 18++++++++++++++++++
Atef/verbes/morphemes.xfst | 108+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Atef/verbes/orthographe.xfst | 14++++++++++++++
Atef/verbes/realisation.xfst | 94+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Atef/verbes/tractuel.xfst | 67+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Rverbes/lexvai.lst -> tef/verbes/vai.lex | 0
Atef/verbes/verbes.xfst | 6++++++
Rverbes/lexvii.lst -> tef/verbes/vii.lex | 0
Rverbes/lexvta.lst -> tef/verbes/vta.lex | 0
Rverbes/lexvti.lst -> tef/verbes/vti.lex | 0
Dverbes/verbes.xfst | 430-------------------------------------------------------------------------------
28 fichiers modifiés, 558 insertions(+), 567 suppressions(-)

diff --git a/.gitignore b/.gitignore @@ -1,6 +1,6 @@ -*.err *.fst *.att *.ext +*.def web -verbes/rapport.txt +tmp diff --git a/Makefile b/Makefile @@ -1,36 +1,80 @@ +# ======================= +# FICHIER DE CONSTRUCTION +# ======================= + +# ------------------ +# RÈGLES DE SUFFIXES +# ------------------ + .SUFFIXES: -.SUFFIXES: .xfst .fst .err .ech .att .ext +.SUFFIXES: .xfst .var .def .fst .att .ext .xfst.fst: foma -e "source $<" -e "save stack $@" -s +.var.def: + foma -e "source $<" -e "save defined $@" -s .fst.att: foma -e "load $<" -e "write att $@" -s .att.ext: bin/extension.py "$<" | sort > "$@" -tous: verbes/verbes.fst web +tous: tef/verbes/verbes.fst tef/noms/noms.fst web -rap: verbes/rapport.txt +# ------ +# VERBES +# ------ -web: verbes/verbes.ext - mkdir -p web - bin/statef.py verbes/verbes.ext web +tef/verbes/lexique.fst: tef/verbes/vii.lex tef/verbes/vai.lex \ + tef/verbes/vti.lex tef/verbes/vta.lex +tef/verbes/tractuel.fst: tef/traits.def tef/verbes/lexique.fst +tef/verbes/morphemes.fst: tef/traits.def tef/morphemes.def \ + tef/verbes/tractuel.fst +tef/verbes/realisation.fst: tef/phonologie.def tef/traits.def tef/morphemes.def \ + tef/verbes/morphemes.fst +tef/verbes/citation.fst: tef/traits.def tef/verbes/realisation.fst \ + tef/orthographe.fst +tef/verbes/verbes.fst: tef/verbes/citation.fst + +# ---- +# NOMS +# ---- + +tef/noms/lexique.fst: tef/noms/an.lex tef/noms/in.lex +tef/noms/tractuel.fst: tef/traits.def tef/noms/lexique.fst +tef/noms/morphemes.fst: tef/traits.def tef/morphemes.def tef/noms/tractuel.fst +tef/noms/realisation.fst: tef/phonologie.def tef/traits.def tef/morphemes.def \ + tef/noms/morphemes.fst +tef/noms/noms.fst: tef/noms/realisation.fst tef/orthographe.fst -verbes/rapport.txt: verbes/verbes.ext verbes/verbes.ech - ./bin/rapport.py verbes/verbes.ext \ - verbes/verbes.ech \ - | tee verbes/rapport.txt | less +# ----- +# TESTS +# ----- -verbes/verbes.err: verbes/verbes.fst verbes/verbes.ech +tv: tef/verbes/verbes.ext echantillon/verbes.ech + bin/rapport.py tef/verbes/verbes.ext \ + echantillon/verbes.ech | less + +tn: tef/noms/noms.ext echantillon/noms.ech + bin/rapport.py tef/noms/noms.ext \ + echantillon/noms.ech | less + +# ------------- +# INTERFACE WEB +# ------------- + +web: tef/verbes/verbes.ext + mkdir -p web + bin/statef.py tef/verbes/verbes.ext web -ajouter_ech: bib/ajouter_ech.fst +# --------- +# NETTOYAGE +# --------- net: - # Supprimer tous les fichiers .fst - find . -type f -name '*.fst' -o \ - -name '*.err' \ - -o -name '*.att' \ - -o -name '*.ext' \ - -o -name 'verbes/rapport.txt' \ - -o -name 'web/*' | \ - xargs rm + find . \ + -name '*.fst' -o \ + -name '*.def' -o \ + -name '*.att' -o \ + -name '*.ext' -o \ + -name 'web' | \ + xargs rm -r diff --git a/echantillon/noms.ech b/echantillon/noms.ech diff --git a/verbes/verbes.ech b/echantillon/verbes.ech diff --git a/noms/noms.xfst b/noms/noms.xfst @@ -1,115 +0,0 @@ -clear stack - -# ==== -# NOMS -# ==== - -# ---------- -# PHONOLOGIE -# ---------- - -# VOYELLES - -define VoyCourte [a|i|u]; -define VoyLongue [â|î|e|û]; -define Voy [VoyCourte|VoyLongue|ᵘ]; - -# CONSONNES - -define Cons [h|k|m|n|ń|p|s|t]; - -# LETTRES - -define Let [Voy|Cons]; -# -# ------ -# TRAITS -# ------ - -# Traits lexicaux -define TAcc ["+ush"|"+vf"|"+apui"]; # Traits accidentels -define TAn ["+An"|"+In"]; # Animéité -define TLex [TAcc|TAn]; - -# Traits grammaticaux -define TNb ["+Sg"|"+Pl"]; # Nombre -define TObv ["+Ntr"|"+Obv"]; # Obviation -define TGrm [TNb|TObv]; - -define Traits [TLex|TGrm]; - -# Former le lexique à partir des fichiers *.lst. -define Lexique [ - [@txt"noms/lexan.lst" "+An" | - @txt"noms/lexin.lst" "+In"] - .o. [{+ush} -> "+ush"] - .o. [{+vf} -> "+vf"] - .o. [{+apui} -> "+apui"]].l; - -# Combinaisons de traits -define CombTraits Lexique TNb TObv; - -# --------- -# MORPHÈMES -# --------- - -define MSN ["+PlAn"|"+ObvIn"|"+PlObv"]; # Suffixe nominal - -define Mrphm ["Base"|MSN]; - -define Cases ["[MSN]"]; -define Caser [ - [[..] -> "Base" || \Traits _ Traits] - .o. ["+Ntr" -> "[MSN]" "+Ntr"] - .o. ["+Obv" -> "[MSN]" "+Obv"] - # Déplacer les traits temporairement - .o. [[..] -> "+ush" || $["+ush"] _ .#. ,, "+ush" -> []] - .o. [[..] -> "+vf" || $["+vf"] _ .#. ,, "+vf" -> []] - .o. [[..] -> "+apui" || $["+apui"] _ .#. ,, "+apui" -> []] - .o. [[..] -> "+In" || $["+In"] _ .#. ,, "+In" -> []] - .o. [[..] -> "+An" || $["+An"] _ .#. ,, "+An" -> []] - .o. [[..] -> "+Sg" || $["+Sg"] _ .#. ,, "+Sg" -> []] - .o. [[..] -> "+Pl" || $["+Pl"] _ .#. ,, "+Pl" -> []] - .o. [[..] -> "+Ntr" || $["+Ntr"] _ .#. ,, "+Ntr" -> []] - .o. [[..] -> "+Obv" || $["+Obv"] _ .#. ,, "+Obv" -> []]]; - -define CombMorphemes CombTraits - .o. Caser - # Choisir le suffixe nominal - .o. ["[MSN]" -> "+PlObv" || _ [$["+An"] $["+Obv"]|$["+In"] $["+Pl"]]] - .o. ["[MSN]" -> "+PlAn" || _ $["+An"] $["+Pl"]] - .o. ["[MSN]" -> "+ObvIn" || _ $["+In"] $["+Obv"]] - .o. [[Cases|TGrm] -> []]; - -# ----------- -# RÉALISATION -# ----------- - -define RealMorphemes CombMorphemes - # Suffixe nominal - .o. ["+PlObv" -> {a} "+PlObv"] - .o. ["+PlAn" -> {at} "+PlAn"] - .o. ["+ObvIn" -> {ińu} "+ObvIn"]; - -define AltMorphemes RealMorphemes - # Base - .o. [{sh} -> {t} || _ "Base" \Mrphm* Mrphm] - .o. [{ai} -> {a} , {au} -> {a} , {eu} -> {u} || - _ "Base" \Mrphm* "+ObvIn" \"+vf"* .#.] - .o. [{i} -> [] || _ "Base" \Mrphm* "+ObvIn" ?* "+apui"] - # Suffixe nominal - .o. [{i} -> [] || [Voy|n|ń] Mrphm* _ \Mrphm* "+ObvIn"] - # Retirer quelques traits - .o. [[TLex|Mrphm|"Base"] -> []]; - -# ----------- -# ORTHOGRAPHE -# ----------- - -define Ortho [[] <- TAcc] - .o. AltMorphemes - .o. [ᵘ -> [] || _ u] - .o. [â -> a ,, î -> i ,, û -> u] - .o. [ᵘ -> u || _ ?]; - -push Ortho diff --git a/tef/morphemes.var b/tef/morphemes.var @@ -0,0 +1,21 @@ +# ========= +# MORPHÈMES +# ========= + +define MPPers ["2+"|"1+"]; # Préfixes de personne +define MThDec ["+ThDec"]; # Thème de décalage +define MThDir ["+ThLc"|"+ThLcI"|"+ThMxt"|"+ThI"| # Thèmes de direction + "+ThNLc"|"+ThAmu"]; +define MObv ["+3Obv"]; # Suffixe d’oviatif +define MSPers ["+Lc"|"+NLc"| # Suffixes de personne + "+LcPass"|"+NLcPass"]; +define MNbLc ["+2Pl"|"+1Pl"]; # Nombre local +define MTir ["+IndirPrésLc"|"+IndirPrésNLc"| # Suffixe de tiroir + "+IndirPassLc"|"+IndirPassNLc"| + "+DubPrésLc"|"+DubPrésNLc"| + "+DubPassLc"|"+DubPassNLc"]; +define MNbNLc ["+NtrPl"|"+ObvSg"|"+ObvPl"| # Nombre non local + "+NtrPlPass"|"+ObvSgPass"|"+ObvPlPass"]; +define MSN ["+PlAn"|"+ObvIn"|"+PlObv"]; # Suffixe nominal + +define Mrphm ["Base"|MPPers|MThDec|MThDir|MObv|MSPers|MNbLc|MTir|MNbNLc|MSN]; diff --git a/noms/lexan.lst b/tef/noms/an.lex diff --git a/noms/lexin.lst b/tef/noms/in.lex diff --git a/tef/noms/lexique.xfst b/tef/noms/lexique.xfst @@ -0,0 +1,10 @@ +# ======= +# LEXIQUE +# ======= + +# Former le lexique à partir des fichiers *.lst. +read regex [[@txt"tef/noms/an.lex" "+An" | + @txt"tef/noms/in.lex" "+In"] + .o. [{+ush} -> "+ush"] + .o. [{+vf} -> "+vf"] + .o. [{+apui} -> "+apui"]].l; diff --git a/tef/noms/morphemes.xfst b/tef/noms/morphemes.xfst @@ -0,0 +1,34 @@ +# ========= +# MORPHÈMES +# ========= + +load defined tef/traits.def +load defined tef/morphemes.def + +define CombTraits @"tef/noms/tractuel.fst"; + +define Cases ["[MSN]"]; +define Caser [ + [[..] -> "Base" || \Traits _ Traits] + .o. ["+Ntr" -> "[MSN]" "+Ntr"] + .o. ["+Obv" -> "[MSN]" "+Obv"] + # Déplacer les traits temporairement + .o. [[..] -> "+ush" || $["+ush"] _ .#. ,, "+ush" -> []] + .o. [[..] -> "+vf" || $["+vf"] _ .#. ,, "+vf" -> []] + .o. [[..] -> "+apui" || $["+apui"] _ .#. ,, "+apui" -> []] + .o. [[..] -> "+In" || $["+In"] _ .#. ,, "+In" -> []] + .o. [[..] -> "+An" || $["+An"] _ .#. ,, "+An" -> []] + .o. [[..] -> "+Sg" || $["+Sg"] _ .#. ,, "+Sg" -> []] + .o. [[..] -> "+Pl" || $["+Pl"] _ .#. ,, "+Pl" -> []] + .o. [[..] -> "+Ntr" || $["+Ntr"] _ .#. ,, "+Ntr" -> []] + .o. [[..] -> "+Obv" || $["+Obv"] _ .#. ,, "+Obv" -> []]]; + +define CombMorphemes CombTraits + .o. Caser + # Choisir le suffixe nominal + .o. ["[MSN]" -> "+PlObv" || _ [$["+An"] $["+Obv"]|$["+In"] $["+Pl"]]] + .o. ["[MSN]" -> "+PlAn" || _ $["+An"] $["+Pl"]] + .o. ["[MSN]" -> "+ObvIn" || _ $["+In"] $["+Obv"]] + .o. [[Cases|TGrm] -> []]; + +push CombMorphemes diff --git a/tef/noms/noms.xfst b/tef/noms/noms.xfst @@ -0,0 +1,7 @@ +# ==== +# NOMS +# ==== + +define Noms @"tef/noms/realisation.fst" .o. @"tef/orthographe.fst"; + +push Noms diff --git a/tef/noms/realisation.xfst b/tef/noms/realisation.xfst @@ -0,0 +1,28 @@ +# =========== +# RÉALISATION +# =========== + +load defined tef/phonologie.def +load defined tef/traits.def +load defined tef/morphemes.def + +define CombMorphemes @"tef/noms/morphemes.fst"; + +define RealMorphemes CombMorphemes + # Suffixe nominal + .o. ["+PlObv" -> {a} "+PlObv"] + .o. ["+PlAn" -> {at} "+PlAn"] + .o. ["+ObvIn" -> {ińu} "+ObvIn"]; + +define AltMorphemes [[] <- TAcc] .o. RealMorphemes + # Base + .o. [{sh} -> {t} || _ "Base" \Mrphm* Mrphm] + .o. [{ai} -> {a} , {au} -> {a} , {eu} -> {u} || + _ "Base" \Mrphm* "+ObvIn" \"+vf"* .#.] + .o. [{i} -> [] || _ "Base" \Mrphm* "+ObvIn" ?* "+apui"] + # Suffixe nominal + .o. [{i} -> [] || [Voy|n|ń] Mrphm* _ \Mrphm* "+ObvIn"] + # Retirer quelques traits + .o. [[TLex|Mrphm|"Base"] -> []]; + +push AltMorphemes diff --git a/tef/noms/tractuel.xfst b/tef/noms/tractuel.xfst @@ -0,0 +1,14 @@ +# =============== +# NIVEAU TRACTUEL +# =============== + +load defined tef/traits.def + +define Lexique @"tef/noms/lexique.fst"; + +# Combinaisons de traits +define CombTraits Lexique TNb TObv + # Un seul degré d’obviativité est exprimable. + & ~[$["+Obv2"|"+Obv3"]]; + +push CombTraits diff --git a/tef/orthographe.xfst b/tef/orthographe.xfst @@ -0,0 +1,10 @@ +# =========== +# ORTHOGRAPHE +# =========== + +define Ortho [ + [ᵘ -> [] || _ u] + .o. [â -> a ,, î -> i ,, û -> u] + .o. [ᵘ -> u || _ ?]]; + +push Ortho diff --git a/tef/phonologie.var b/tef/phonologie.var @@ -0,0 +1,13 @@ +# ========== +# PHONOLOGIE +# ========== + +# VOYELLES + +define VoyCourte [a|i|u]; +define VoyLongue [â|î|e|û]; +define Voy [VoyCourte|VoyLongue|ᵘ]; + +# CONSONNES + +define Cons [h|k|m|n|ń|p|s|t]; diff --git a/tef/traits.var b/tef/traits.var @@ -0,0 +1,25 @@ +# ====== +# TRAITS +# ====== +# +# Documentation: doc/traits.txt + +# Traits lexicaux +define TAcc ["+u"|"+ua"|"+ush"|"+e"|"+o"| # Traits accidentels + "+impers"|"+vf"|"+apui"]; +define TAn ["+An"|"+In"]; # Animéité +define TVrbe ["+VII"|"+VAI"|"+VTI"|"+VTA"]; # Classes de verbes +define TDial ["+Est"|"+Ouest"]; # Dialecte +define TLex [TAcc|TAn|TVrbe|TDial]; + +# Traits grammaticaux +define TOrdre ["+Indép"]; # Ordre +define TMode ["+Ind"|"+Indir"|"+Dub"]; # Mode +define TTemps ["+Prés"|"+Pas"]; # Temps +define TPers ["+2"|"+1"|"+3"]; # Personne +define TNb ["+Sg"|"+Pl"]; # Nombre +define TIn ["+Ex"|"+In"]; # Inclusion +define TObv ["+Ntr"|"+Obv"|"+Obv2"|"+Obv3"]; # Obviation +define TGrm [TOrdre|TMode|TTemps|TPers|TNb|TIn|TObv]; + +define Traits [TLex|TGrm]; diff --git a/tef/verbes/citation.xfst b/tef/verbes/citation.xfst @@ -0,0 +1,23 @@ +# ================== +# FORMES DE CITATION +# ================== + +load defined tef/traits.def + +define Ortho @"tef/verbes/realisation.fst" .o. @"tef/orthographe.fst"; + +define TraitsCitation [ + [$["+VTA"] $["+Indép" "+Ind" "+Prés"] $["+Sg" "+Ntr"] $["+Sg" "+Obv"]]| + [$["+VAI"] $["+Indép" "+Ind" "+Prés"] $["+Sg" "+Ntr"]]| + [$["+VTI"] $["+Indép" "+Ind" "+Prés"] $["+Sg" "+Ntr"]]| + [$["+VII"] $["+Indép" "+Ind" "+Prés"] $["+Sg" "+Ntr"]]]; + +# Substituer la base au niveau abstrait par la forme de citation. +define FC [[[] <- TVrbe || _ TVrbe] + .o. $["+VAI" "+VAI"|"+VII" "+VII"|"+VTI" "+VTI"|"+VTA" "+VTA"] + .o. [[] <- [[Traits|">"] - TVrbe]] + .o. [[TraitsCitation + .o. Ortho] TVrbe]].i ?*; + +define Verbes FC .o. Ortho; +push Verbes diff --git a/tef/verbes/lexique.xfst b/tef/verbes/lexique.xfst @@ -0,0 +1,18 @@ +# ======= +# LEXIQUE +# ======= + +# Former le lexique à partir des fichiers *.lst. +# Les traits accidentels doivent être analysés en symboles uniques +# manuellement. Lorsqu’un trait est le préfixe d’un autre trait, ce dernier +# trait doit être analysé d’abord. C’est pourquoi la règle ciblant {+ua} est +# placée avant celle ciblant {+u}. +read regex [[@txt"tef/verbes/vii.lex" "+VII" | + @txt"tef/verbes/vai.lex" "+VAI" | + @txt"tef/verbes/vti.lex" "+VTI" | + @txt"tef/verbes/vta.lex" "+VTA"] + .o. [{+ua} -> "+ua"] + .o. [{+u} -> "+u"] + .o. [{+e} -> "+e"] + .o. [{+o} -> "+o"] + .o. [{+impers} -> "+impers"]].l; diff --git a/tef/verbes/morphemes.xfst b/tef/verbes/morphemes.xfst @@ -0,0 +1,108 @@ +# ========= +# MORPHÈMES +# ========= + +load defined tef/traits.def +load defined tef/morphemes.def + +define CombTraits @"tef/verbes/tractuel.fst"; + +# Les cases seront substituées par le nom de morphème approprié. Elles sont +# placées de chaque côté de la base. +define Cases ["[PPers]"|"[ThDec]"|"[ThDir]"|"[Obv]"| + "[SPers]"|"[NbLc]"|"[Tir]"|"[NbNLc]"]; +define Caser [ + [[..] -> "[PPers]" || + .#. _ ] + .o. [[..] -> "Base" + "[ThDec]" "[ThDir]" "[Obv]" + "[SPers]" "[NbLc]" "[Tir]" "[NbNLc]" || + \TAcc _ TAcc* TVrbe]]; + +# Combinaisons de morphèmes +define CombMorphemes CombTraits + .o. Caser + # Choisir le préfixe de personne + # Le préfixe de deuxième personne l’emporte sur le préfixe de première. + # Il participe aussi à la première personne du pluriel inclusive. + .o. ["[PPers]" -> "2+" || _ $["+2"] | $["+In"]] + .o. ["[PPers]" -> "1+" || _ $["+1"] - $["+In"]] + # Insérer le thème de décalage là où il le faut + # Ce thème a pour effet de décaler la troisième personne d’une position + # dans la suite +Ntr -> +Obv -> +Obv2 -> +Obv3. + # Présent aussi dans l’inverse mixte décalé des dialectes de l’ouest. + .o. ["[ThDec]" -> "+ThDec" || + _ $["+VTA"] $["+2"|"+1"] $["+Obv"] , + _ $["+VTA"] $["+Ntr"] $["+Obv2"] , + _ $["+VTA"] $["+Obv"] $["+Obv3"] , + _ $["+VTA"] $["+Ouest"] $["+Obv"] $["+2"|"+1"]] + # Choisir le thème + .o. ["[ThDir]" -> "+ThLc" || _ $["+VTA"] $["+2"] $["+1"]] + .o. ["[ThDir]" -> "+ThLcI" || _ $["+VTA"] $["+1"] $["+2"]] + .o. ["[ThDir]" -> "+ThMxt" || _ $["+VTA"] $["+1"|"+2"] $["+3"]] + .o. ["[ThDir]" -> "+ThI" || _ $["+VTA"] $["+3"] $["+1"|"+2"]] + .o. ["[ThDir]" -> "+ThNLc" || + _ $["+VTA"] [$["+Ntr"] $["+Obv"|"+Obv2"|"+Obv3"] | + $["+Obv"] $["+Obv2"|"+Obv3"] | + $["+Obv2"] $["+Obv3"]] , + _ $["+VTI"] $["+2"|"+1"]] + .o. ["[ThDir]" -> "+ThI" || + _ $["+VTA"] [$["+Obv3"] $["+Obv2"|"+Obv"|"+Ntr"] | + $["+Obv2"] $["+Obv"|"+Ntr"] | + $["+Obv"] $["+Ntr"]]] + .o. ["[ThDir]" -> "+ThAmu" || _ $["+VTI"] $["+3"]] + # Insérer le suffixe d’obviatif, là où le faut + .o. ["[Obv]" -> "+3Obv" || + _ $["+VTA"] [[$["+3"] $["+3"]] - $["+Ntr"]] .#.] + .o. ["[Obv]" -> "+3Obv" || + _ $["+VTA"] $["+Est"] $["+Obv"] $["+2"|"+1"] $["+Sg"]] + .o. ["[Obv]" -> "+3Obv" || + _ $[TVrbe - "+VTA"] $["+Obv"]] + # Choisir le suffixe de personne + .o. ["[SPers]" -> "+Lc" || + _ $["+VTA"] $[[$["+1"] & $["+2"]] | "+1" "+Pl"] , + _ $[TVrbe - "+VTA"] $["+2"|"+1"]] + .o. ["[SPers]" -> "+NLc" || + _ [$["+VTA"] - [$["+Ntr"] $["+2"|"+1"]]] .#.] + .o. ["[SPers]" -> "+NLc" || + _ $["+VTA"] $["+Est"] $["+Obv"] $["+2"|"+1"] $["+Sg"]] + .o. ["[SPers]" -> "+NLc" || + _ [$["+3"] - [$["+VTA"|"+VTI"] & $["+Prés"]]]] + .o. ["[SPers]" -> "+NLc" || + _ $["+VTI"] $["+Obv"]] + .o. ["+Lc" -> "+LcPass" || _ $["+Ind"|"+Dub"] $["+Pas"]] + .o. ["+NLc" -> "+NLcPass" || _ [$["+Ind"]|$["+VTA"] $["+Dub"]] $["+Pas"]] + .o. ["+NLcPass" -> [] || _ ?* "+Dub" [~$["+2"] & ~$["+1"]] .#.] + .o. ["+NLcPass" -> "+LcPass" || _ [$["+2"|"+1"] & $["+3"]]] + # Choisir le suffixe de nombre local + .o. ["[NbLc]" -> "+2Pl" || _ [$["+2" "+Pl"] - $["+Ex"]] .#.] + .o. ["[NbLc]" -> "+1Pl" || _ [$["+1" "+Pl"] | $["+Ex"]] .#.] + # Insérer le suffixe du premier tiroir + .o. ["[Tir]" -> "+IndirPrésLc" || _ $["+Indir"] $["+Prés"] $["+1"|"+2"]] + .o. ["[Tir]" -> "+IndirPrésNLc" || _ $["+Indir"] $["+Prés"] $["+3"]] + .o. ["[Tir]" -> "+IndirPassLc" || _ $["+Indir"] $["+Pas"] $["+1"|"+2"]] + .o. ["[Tir]" -> "+IndirPassNLc" || _ $["+Indir"] $["+Pas"] $["+3"]] + .o. ["[Tir]" -> "+DubPrésLc" || _ $["+Dub"] $["+Prés"] $["+1"|"+2"]] + .o. ["[Tir]" -> "+DubPrésNLc" || _ $["+Dub"] $["+Prés"] $["+3"]] + .o. ["[Tir]" -> "+DubPassLc" || _ $["+Dub"] $["+Pas"] $["+1"|"+2"]] + .o. ["[Tir]" -> "+DubPassNLc" || _ $["+Dub"] $["+Pas"] $["+3"]] + # Choisir le suffixe de nombre non local + .o. ["[NbNLc]" -> "+NtrPl" || _ $["+3" "+Pl" "+Ntr"]] + .o. ["[NbNLc]" -> "+ObvSg" || _ [$["+3" "+Sg"] - $["+Ntr"]] .#.] + .o. ["[NbNLc]" -> "+ObvPl" || _ [$["+3" "+Pl"] - $["+Ntr"]] .#.] + .o. ["+NtrPl" -> "+NtrPlPass" || _ $["+Pas"]] + .o. ["+ObvSg" -> "+ObvSgPass" || _ $["+Pas"]] + .o. ["+ObvPl" -> "+ObvPlPass" || _ $["+Pas"]] + # Idiosyncrasies + .o. [[..] -> "+2Pl" || "+LcPass" _ $["+Ind"] $["+2" "+Pl"] $["+Obv"]] + .o. ["+LcPass" -> [] || _ $["+Est"] $["+Obv"] $["+2"|"+1"] $["+Sg"]] + .o. ["+LcPass" -> [] || _ $["+Est"] $["+Dub"] $["+Obv"] $["+2" "+Pl"]] + .o. ["+LcPass" -> "+Lc" || _ $["+Est"] $["+Dub"] $["+Obv"] $["+2"|"+1"]] + .o. ["+NLc" -> "+Lc" || _ + $["+Ouest" "+Indép" "+Indir"] $["+Obv"] $["+2" "+Pl"]] + # Peut-être influence de « ń ». + .o. ["+DubPassLc" -> "+DubPassNLc" || + _ $["+Est"] $["+Obv"] $["+2"|"+1"] $["+Sg"]] + .o. [[Cases|TGrm|">"] -> []]; + +push CombMorphemes diff --git a/tef/verbes/orthographe.xfst b/tef/verbes/orthographe.xfst @@ -0,0 +1,14 @@ +# =========== +# ORTHOGRAPHE +# =========== + +load defined tef/traits.def + +define AltMorphemes @"tef/verbes/realisation.fst"; + +define Ortho AltMorphemes + .o. [ᵘ -> [] || _ u] + .o. [â -> a ,, î -> i ,, û -> u] + .o. [ᵘ -> u || _ ?]; + +push Ortho diff --git a/tef/verbes/realisation.xfst b/tef/verbes/realisation.xfst @@ -0,0 +1,94 @@ +# =========== +# RÉALISATION +# =========== + +load defined tef/phonologie.def +load defined tef/traits.def +load defined tef/morphemes.def + +define CombMorphemes @"tef/verbes/morphemes.fst"; + +define RealMorphemes CombMorphemes + # Préfxes de personnes + .o. ["2+" -> {tshit} "2+"] + .o. ["1+" -> {nit} "1+"] + # Thème de décalage + .o. ["+ThDec" -> {im} "+ThDec"] + # Thème de direction + .o. ["+ThLc" -> {i} "+ThLc"] + .o. ["+ThLcI" -> {iti} "+ThLcI"] + .o. ["+ThMxt" -> {a} "+ThMxt"] + .o. ["+ThI" -> {ikᵘ} "+ThI"] + .o. ["+ThNLc" -> {e} "+ThNLc"] + .o. ["+ThAmu" -> {amᵘ} "+ThAmu"] + # Suffixe d’obviation + .o. ["+3Obv" -> {iń} "+3Obv"] + # Suffixes de personne + .o. ["+Lc" -> {n} "+Lc"] + .o. ["+LcPass" -> {iti} "+LcPass"] + .o. ["+NLc" -> {u} "+NLc"] + .o. ["+NLcPass" -> {ipan} "+NLcPass"] + # Nombre local + .o. ["+2Pl" -> {au} "+2Pl"] + .o. ["+1Pl" -> {an} "+1Pl"] + # Tiroir + .o. ["+IndirPrésLc" -> {atak} "+IndirPrésLc"] + .o. ["+IndirPrésNLc" -> {itak} "+IndirPrésNLc"] + .o. ["+IndirPassLc" -> {ashapan} "+IndirPassLc"] + .o. ["+IndirPassNLc" -> {ishapan} "+IndirPassNLc"] + .o. ["+DubPrésLc" -> {atshen} "+DubPrésLc"] + .o. ["+DubPrésNLc" -> {itshen} "+DubPrésNLc"] + .o. ["+DubPassLc" -> {akupan} "+DubPassLc"] + .o. ["+DubPassNLc" -> {ikupan} "+DubPassNLc"] + # Nombre non local + .o. ["+NtrPl" -> {a} "+NtrPl" , + "+NtrPlPass" -> {a} "+NtrPlPass" || _ $["+VII"]] + .o. ["+NtrPl" -> {at} "+NtrPl" , + "+NtrPlPass" -> {at} "+NtrPlPass" || _ ~$["+VII"] .#.] + .o. ["+ObvSg" -> {a} "+ObvSg" , + "+ObvSgPass" -> {a} "+ObvSgPass" || _ ~$["+VII"] .#.] + .o. ["+ObvPl" -> {a} "+ObvPl" , "+ObvPlPass" -> {a} "+ObvPlPass"]; + +define AltMorphemes [[] <- TAcc] .o. RealMorphemes + # Base + .o. [{sh} -> {t} || _ "Base" ~$["+ThLc"] .#.] + .o. [[..] -> {a} || _ "Base" \Mrphm* ["+ThLcI"|"+ThI"] $["+u"]] + .o. [{u} -> {a} || _ "Base" \Mrphm* ["+ThLcI"|"+ThI"] $["+ua"]] + .o. [{ᵘ} -> [] || _ "+ThAmu" Mrphm* \Mrphm* "+3Obv"] + # Préfixes de personne + .o. [{it} -> [] || _ ["2+"|"1+"] [u|û]] + .o. [ {t} -> [] || _ ["2+"|"1+"] \Voy] + # Thème de décalage + .o. [{i} -> [] || Voy Mrphm* _ \Mrphm* "+ThDec"] + # Thème de direction + .o. [{i} -> [] || [n|ń] Mrphm* _ \Mrphm* "+ThLc"] + .o. [[i|a] -> [] || Voy Mrphm* _ + \Mrphm* ["+ThLc"|"+ThLcI"|"+ThI"|"+ThAmu"]] + .o. [{e} -> [] || [{ei}|{ai}] Mrphm* _ \Mrphm* "+ThNLc"] + # Suffixe d’obviatif + .o. [{i} -> [] || [Voy|n|ń] Mrphm* _ \Mrphm* "+3Obv" $[TVrbe - "+VTI"]] + # Suffixes de personne + .o. [\Mrphm+ -> [] || _ "+NLc" Mrphm* \Mrphm* ["+IndirPrésLc"|"+IndirPrésNLc"|"+IndirPassLc"|"+IndirPassNLc"|"+DubPrésLc"|"+DubPrésNLc"|"+DubPassLc"|"+DubPassNLc"]] + .o. [{n} -> [] || [n|ń] Mrphm* _ \Mrphm* "+Lc" TLex] + .o. [[VoyCourte|û] -> [] || _ "Base" \Mrphm+ "+NLc"] + .o. [{u} -> [] || {n} Mrphm* _ \Mrphm* "+NLc" $[TVrbe - "+VAI"]] + .o. [{i} -> [] || [Voy - [u|û]] Mrphm* _ \Mrphm* "+NLcPass"] + .o. [{i} -> [] || Voy Mrphm* _ \Mrphm* "+LcPass"] + # Tiroir + .o. [{a} -> [] || [Voy-[u|û]] Mrphm* _ \Mrphm* ["+IndirPrésLc"|"+IndirPassLc"|"+DubPrésLc"]] + .o. [{a} -> [] || {a} Mrphm* _ \Mrphm* ["+DubPassLc"]] + .o. [{i} -> [] || [Voy-[u|û]] Mrphm* _ \Mrphm* ["+IndirPrésNLc"|"+IndirPassNLc"|"+DubPrésNLc"|"+DubPassNLc"]] + .o. [{i} -> [] || _ Mrphm* Voy \Mrphm* "+DubPassLc"] + .o. [{a} -> {i} || {ń} Mrphm* _ \Mrphm* ["+IndirPrésLc"|"+IndirPassLc"|"+DubPrésLc"]] + .o. [{n} -> [] || _ ["+DubPrésLc"|"+DubPrésNLc"] [Mrphm|Traits]* .#.] + # Suffixes de nombre + .o. [{i} -> [] || _ Mrphm* \Mrphm* ["+2Pl"|"+1Pl"]] + .o. [{a} -> {i} || + [n|ń] Mrphm* _ \Mrphm* + ["+ObvSgPass"|"+ObvPlPass"|"+NtrPlPass" ?* "+VII"] , + [n|ń] ["+DubPrésNLc"|"+DubPrésLc"] Mrphm* _ ["+ObvSg"|"+ObvPl"|"+NtrPl"]] + # Retirer quelques traits + .o. [TLex -> []] + .o. [Mrphm -> []]; + +push AltMorphemes diff --git a/tef/verbes/tractuel.xfst b/tef/verbes/tractuel.xfst @@ -0,0 +1,67 @@ +# =============== +# NIVEAU TRACTUEL +# =============== + +load defined tef/traits.def +define Lexique @"tef/verbes/lexique.fst"; + +# Combinaison de traits lexicaux +define CombTraitsLex Lexique TDial; + +# Combinaison de traits relatifs aux tiroir +define CombTraitsTiroir TOrdre TMode TTemps; + +# Combinaison de traits relatifs aux participants +define CombTraitsPart TPers TNb (TIn) (TObv) + # Le contraste d’inclusion n’est compatible qu’avec la première + # personne du pluriel. + & ~[$[TIn] & ~[$["+1"] & $["+Pl"]]] + # Le contraste d’inclusion est obligatoire à la première personne du + # pluriel. + & ~[[$["+1"] & $["+Pl"]] & ~$[TIn]] + # Le contraste d’obviation n’est compatible qu’avec la troisième + # personne. + & ~[$[TObv] & ~$["+3"]] + # Le contraste d’obviation est obligatoire à la troisième personne. + & ~[$["+3"] & ~$[TObv]]; +define CombTraitsPart CombTraitsPart (">" CombTraitsPart); + +# Combinaison de traits +define CombTraits CombTraitsLex CombTraitsTiroir CombTraitsPart + # Seuls les VTA portent les traits de deux participants. + & ~[$[">"] & ~$["+VTA"]] + # Les VTA portent toujours les traits de deux participants. + & ~[$["+VTA"] & ~$[">"]] + # Les deuxième et troisième degrés d’obviation n’existent que chez les + # VTA. + & ~[$["+Obv2"|"+Obv3"] & ~$["+VTA"]] + # Les deux participants des VTA ne peuvent être de même personne. La + # deuxième personne du pluriel inclusive agit à la fois comme une + # première et comme une deuxième personne. + & ~[$["+2"] ">" $["+2"]] + & ~[$["+2"] ">" $["+In"] | $["+In"] ">" $["+2"]] + & ~[$["+1"] ">" $["+1"]] + & ~[[$["+3"] & $["+Ntr"]] ">" [$["+3"] & $["+Ntr"]]] + & ~[[$["+3"] & $["+Obv"]] ">" [$["+3"] & $["+Obv"]]] + & ~[[$["+3"] & $["+Obv2"]] ">" [$["+3"] & $["+Obv2"]]] + & ~[[$["+3"] & $["+Obv3"]] ">" [$["+3"] & $["+Obv3"]]] + # +Obv2 et +Obv3 ne se combinent pas avec des personnes locales. + & ~[$["+1"|"+2"] & $["+Obv2"|"+Obv3"]] + # Les combinaisons suivantes n’existent pas. + & ~[[$["+3"] & $["+Ntr"]] ">" [$["+3"] & $["+Obv3"]]] + & ~[[$["+3"] & $["+Obv2"]] ">" [$["+3"] & $["+Ntr"]]] + & ~[[$["+3"] & $["+Obv2"]] ">" [$["+3"] & $["+Obv3"]]] + & ~[[$["+3"] & $["+Obv3"]] ">" [$["+3"] & $["+Ntr"]]] + & ~[[$["+3"] & $["+Obv3"]] ">" [$["+3"] & $["+Obv"]]] + & ~[[$["+3"] & $["+Obv3"]] ">" [$["+3"] & $["+Obv2"]]] + # Les VII n’existent qu’à la troisième personne. + & ~[$["+VII"] & ~$["+3"]] + # Certaines racines sont spécifiques à l’Est. + & ~[$["+e"] & ~$["+Est"]] + # Certaines racines sont spécifiques à l’Ouest. + & ~[$["+o"] & ~$["+Ouest"]] + # Les verbes impersonnels n’existent qu’à la troisième personne du + # singulier. + & ~[$["+impers"] & ~[$["+3"] & $["+Sg"]]]; + +push CombTraits diff --git a/verbes/lexvai.lst b/tef/verbes/vai.lex diff --git a/tef/verbes/verbes.xfst b/tef/verbes/verbes.xfst @@ -0,0 +1,6 @@ +# ====== +# VERBES +# ====== + +define verbes @"tef/verbes/citation.fst"; +push verbes diff --git a/verbes/lexvii.lst b/tef/verbes/vii.lex diff --git a/verbes/lexvta.lst b/tef/verbes/vta.lex diff --git a/verbes/lexvti.lst b/tef/verbes/vti.lex diff --git a/verbes/verbes.xfst b/verbes/verbes.xfst @@ -1,430 +0,0 @@ -clear stack - -# ====== -# VERBES -# ====== - -# ---------- -# PHONOLOGIE -# ---------- - -# VOYELLES - -define VoyCourte [a|i|u]; -define VoyLongue [â|î|e|û]; -define Voy [VoyCourte|VoyLongue|ᵘ]; - -# CONSONNES - -define Cons [h|k|m|n|ń|p|s|t]; - -# LETTRES - -define Let [Voy|Cons]; - -# ------ -# TRAITS -# ------ -# -# Documentation: doc/traits.txt - -# Traits lexicaux -define TAcc ["+u"|"+ua"|"+e"|"+o"|"+impers"]; # Traits accidentels -define TVrbe ["+VII"|"+VAI"|"+VTI"|"+VTA"]; # Classes de verbes -define TDial ["+Est"|"+Ouest"]; # Dialecte -define TLex [TAcc|TVrbe|TDial]; - -# Traits grammaticaux -define TOrdre ["+Indép"]; # Ordre -define TMode ["+Ind"|"+Indir"|"+Dub"]; # Mode -define TTemps ["+Prés"|"+Pas"]; # Temps -define TPers ["+2"|"+1"|"+3"]; # Personne -define TNb ["+Sg"|"+Pl"]; # Nombre -define TIn ["+Ex"|"+In"]; # Inclusion -define TObv ["+Ntr"|"+Obv"|"+Obv2"|"+Obv3"]; # Obviation -define TGrm [TOrdre|TMode|TTemps|TPers|TNb|TIn|TObv]; - -define Traits [TLex|TGrm]; - -# Former le lexique à partir des fichiers *.lst. -# Les traits accidentels doivent être analysés en symboles uniques -# manuellement. Lorsqu’un trait est le préfixe d’un autre trait, ce dernier -# trait doit être analysé d’abord. C’est pourquoi la règle ciblant {+ua} est -# placée avant celle ciblant {+u}. -define Lexique [ - [@txt"verbes/lexvii.lst" "+VII" | - @txt"verbes/lexvai.lst" "+VAI" | - @txt"verbes/lexvti.lst" "+VTI" | - @txt"verbes/lexvta.lst" "+VTA"] - .o. [{+ua} -> "+ua"] - .o. [{+u} -> "+u"] - .o. [{+e} -> "+e"] - .o. [{+o} -> "+o"] - .o. [{+impers} -> "+impers"]].l; - -# Combinaison de traits lexicaux -define CombTraitsLex Lexique TDial; - -# Combinaison de traits relatifs aux tiroir -define CombTraitsTiroir TOrdre TMode TTemps; - -# Combinaison de traits relatifs aux participants -define CombTraitsPart TPers TNb (TIn) (TObv) - # Le contraste d’inclusion n’est compatible qu’avec la première - # personne du pluriel. - & ~[$[TIn] & ~[$["+1"] & $["+Pl"]]] - # Le contraste d’inclusion est obligatoire à la première personne du - # pluriel. - & ~[[$["+1"] & $["+Pl"]] & ~$[TIn]] - # Le contraste d’obviation n’est compatible qu’avec la troisième - # personne. - & ~[$[TObv] & ~$["+3"]] - # Le contraste d’obviation est obligatoire à la troisième personne. - & ~[$["+3"] & ~$[TObv]]; -define CombTraitsPart CombTraitsPart (">" CombTraitsPart); - -# Combinaison de traits -define CombTraits CombTraitsLex CombTraitsTiroir CombTraitsPart - # Seuls les VTA portent les traits de deux participants. - & ~[$[">"] & ~$["+VTA"]] - # Les VTA portent toujours les traits de deux participants. - & ~[$["+VTA"] & ~$[">"]] - # Les deuxième et troisième degrés d’obviation n’existent que chez les - # VTA. - & ~[$["+Obv2"|"+Obv3"] & ~$["+VTA"]] - # Les deux participants des VTA ne peuvent être de même personne. La - # deuxième personne du pluriel inclusive agit à la fois comme une - # première et comme une deuxième personne. - & ~[$["+2"] ">" $["+2"]] - & ~[$["+2"] ">" $["+In"] | $["+In"] ">" $["+2"]] - & ~[$["+1"] ">" $["+1"]] - & ~[[$["+3"] & $["+Ntr"]] ">" [$["+3"] & $["+Ntr"]]] - & ~[[$["+3"] & $["+Obv"]] ">" [$["+3"] & $["+Obv"]]] - & ~[[$["+3"] & $["+Obv2"]] ">" [$["+3"] & $["+Obv2"]]] - & ~[[$["+3"] & $["+Obv3"]] ">" [$["+3"] & $["+Obv3"]]] - # +Obv2 et +Obv3 ne se combinent pas avec des personnes locales. - & ~[$["+1"|"+2"] & $["+Obv2"|"+Obv3"]] - # Les combinaisons suivantes n’existent pas. - & ~[[$["+3"] & $["+Ntr"]] ">" [$["+3"] & $["+Obv3"]]] - & ~[[$["+3"] & $["+Obv2"]] ">" [$["+3"] & $["+Ntr"]]] - & ~[[$["+3"] & $["+Obv2"]] ">" [$["+3"] & $["+Obv3"]]] - & ~[[$["+3"] & $["+Obv3"]] ">" [$["+3"] & $["+Ntr"]]] - & ~[[$["+3"] & $["+Obv3"]] ">" [$["+3"] & $["+Obv"]]] - & ~[[$["+3"] & $["+Obv3"]] ">" [$["+3"] & $["+Obv2"]]] - # Les VII n’existent qu’à la troisième personne. - & ~[$["+VII"] & ~$["+3"]] - # Certaines racines sont spécifiques à l’Est. - & ~[$["+e"] & ~$["+Est"]] - # Certaines racines sont spécifiques à l’Ouest. - & ~[$["+o"] & ~$["+Ouest"]] - # Les verbes impersonnels n’existent qu’à la troisième personne du - # singulier. - & ~[$["+impers"] & ~[$["+3"] & $["+Sg"]]]; - -undefine Lexique -undefine CombTraitsLex -undefine CombTraitsTiroir -undefine CombTraitsPart - -# --------- -# MORPHÈMES -# --------- -# -# Documentation: doc/noms_de_morpheme.txt - -define MPPers ["2+"|"1+"]; # Préfixes de personne -define MThDec ["+ThDec"]; # Thème de décalage -define MThDir ["+ThLc"|"+ThLcI"|"+ThMxt"|"+ThI"| # Thèmes de direction - "+ThNLc"|"+ThAmu"]; -define MObv ["+3Obv"]; # Suffixe d’oviatif -define MSPers ["+Lc"|"+NLc"| # Suffixes de personne - "+LcPass"|"+NLcPass"]; -define MNbLc ["+2Pl"|"+1Pl"]; # Nombre local -define MTir ["+IndirPrésLc"|"+IndirPrésNLc"| # Suffixe de tiroir - "+IndirPassLc"|"+IndirPassNLc"| - "+DubPrésLc"|"+DubPrésNLc"| - "+DubPassLc"|"+DubPassNLc"]; -define MNbNLc ["+NtrPl"|"+ObvSg"|"+ObvPl"| # Nombre non local - "+NtrPlPass"|"+ObvSgPass"|"+ObvPlPass"]; - -define Mrphm ["Base"|MPPers|MThDec|MThDir|MObv|MSPers|MNbLc|MTir|MNbNLc]; - -# Les cases seront substituées par le nom de morphème approprié. Elles sont -# placées de chaque côté de la base. -define Cases ["[PPers]"|"[ThDec]"|"[ThDir]"|"[Obv]"| - "[SPers]"|"[NbLc]"|"[Tir]"|"[NbNLc]"]; -define Caser [ - [[..] -> "[PPers]" || - .#. _ ] - .o. [[..] -> "Base" - "[ThDec]" "[ThDir]" "[Obv]" - "[SPers]" "[NbLc]" "[Tir]" "[NbNLc]" || - \TAcc _ TAcc* TVrbe]]; - -# Combinaisons de morphèmes -define CombMorphemes CombTraits - .o. Caser - # Choisir le préfixe de personne - # Le préfixe de deuxième personne l’emporte sur le préfixe de première. - # Il participe aussi à la première personne du pluriel inclusive. - .o. ["[PPers]" -> "2+" || _ $["+2"] | $["+In"]] - .o. ["[PPers]" -> "1+" || _ $["+1"] - $["+In"]] - # Insérer le thème de décalage là où il le faut - # Ce thème a pour effet de décaler la troisième personne d’une position - # dans la suite +Ntr -> +Obv -> +Obv2 -> +Obv3. - # Présent aussi dans l’inverse mixte décalé des dialectes de l’ouest. - .o. ["[ThDec]" -> "+ThDec" || - _ $["+VTA"] $["+2"|"+1"] $["+Obv"] , - _ $["+VTA"] $["+Ntr"] $["+Obv2"] , - _ $["+VTA"] $["+Obv"] $["+Obv3"] , - _ $["+VTA"] $["+Ouest"] $["+Obv"] $["+2"|"+1"]] - # Choisir le thème - .o. ["[ThDir]" -> "+ThLc" || _ $["+VTA"] $["+2"] $["+1"]] - .o. ["[ThDir]" -> "+ThLcI" || _ $["+VTA"] $["+1"] $["+2"]] - .o. ["[ThDir]" -> "+ThMxt" || _ $["+VTA"] $["+1"|"+2"] $["+3"]] - .o. ["[ThDir]" -> "+ThI" || _ $["+VTA"] $["+3"] $["+1"|"+2"]] - .o. ["[ThDir]" -> "+ThNLc" || - _ $["+VTA"] [$["+Ntr"] $["+Obv"|"+Obv2"|"+Obv3"] | - $["+Obv"] $["+Obv2"|"+Obv3"] | - $["+Obv2"] $["+Obv3"]] , - _ $["+VTI"] $["+2"|"+1"]] - .o. ["[ThDir]" -> "+ThI" || - _ $["+VTA"] [$["+Obv3"] $["+Obv2"|"+Obv"|"+Ntr"] | - $["+Obv2"] $["+Obv"|"+Ntr"] | - $["+Obv"] $["+Ntr"]]] - .o. ["[ThDir]" -> "+ThAmu" || _ $["+VTI"] $["+3"]] - # Insérer le suffixe d’obviatif, là où le faut - .o. ["[Obv]" -> "+3Obv" || - _ $["+VTA"] [[$["+3"] $["+3"]] - $["+Ntr"]] .#.] - .o. ["[Obv]" -> "+3Obv" || - _ $["+VTA"] $["+Est"] $["+Obv"] $["+2"|"+1"] $["+Sg"]] - .o. ["[Obv]" -> "+3Obv" || - _ $[TVrbe - "+VTA"] $["+Obv"]] - # Choisir le suffixe de personne - .o. ["[SPers]" -> "+Lc" || - _ $["+VTA"] $[[$["+1"] & $["+2"]] | "+1" "+Pl"] , - _ $[TVrbe - "+VTA"] $["+2"|"+1"]] - .o. ["[SPers]" -> "+NLc" || - _ [$["+VTA"] - [$["+Ntr"] $["+2"|"+1"]]] .#.] - .o. ["[SPers]" -> "+NLc" || - _ $["+VTA"] $["+Est"] $["+Obv"] $["+2"|"+1"] $["+Sg"]] - .o. ["[SPers]" -> "+NLc" || - _ [$["+3"] - [$["+VTA"|"+VTI"] & $["+Prés"]]]] - .o. ["[SPers]" -> "+NLc" || - _ $["+VTI"] $["+Obv"]] - .o. ["+Lc" -> "+LcPass" || _ $["+Ind"|"+Dub"] $["+Pas"]] - .o. ["+NLc" -> "+NLcPass" || _ [$["+Ind"]|$["+VTA"] $["+Dub"]] $["+Pas"]] - .o. ["+NLcPass" -> [] || _ ?* "+Dub" [~$["+2"] & ~$["+1"]] .#.] - .o. ["+NLcPass" -> "+LcPass" || _ [$["+2"|"+1"] & $["+3"]]] - # Choisir le suffixe de nombre local - .o. ["[NbLc]" -> "+2Pl" || _ [$["+2" "+Pl"] - $["+Ex"]] .#.] - .o. ["[NbLc]" -> "+1Pl" || _ [$["+1" "+Pl"] | $["+Ex"]] .#.] - # Insérer le suffixe du premier tiroir - .o. ["[Tir]" -> "+IndirPrésLc" || _ $["+Indir"] $["+Prés"] $["+1"|"+2"]] - .o. ["[Tir]" -> "+IndirPrésNLc" || _ $["+Indir"] $["+Prés"] $["+3"]] - .o. ["[Tir]" -> "+IndirPassLc" || _ $["+Indir"] $["+Pas"] $["+1"|"+2"]] - .o. ["[Tir]" -> "+IndirPassNLc" || _ $["+Indir"] $["+Pas"] $["+3"]] - .o. ["[Tir]" -> "+DubPrésLc" || _ $["+Dub"] $["+Prés"] $["+1"|"+2"]] - .o. ["[Tir]" -> "+DubPrésNLc" || _ $["+Dub"] $["+Prés"] $["+3"]] - .o. ["[Tir]" -> "+DubPassLc" || _ $["+Dub"] $["+Pas"] $["+1"|"+2"]] - .o. ["[Tir]" -> "+DubPassNLc" || _ $["+Dub"] $["+Pas"] $["+3"]] - # Choisir le suffixe de nombre non local - .o. ["[NbNLc]" -> "+NtrPl" || _ $["+3" "+Pl" "+Ntr"]] - .o. ["[NbNLc]" -> "+ObvSg" || _ [$["+3" "+Sg"] - $["+Ntr"]] .#.] - .o. ["[NbNLc]" -> "+ObvPl" || _ [$["+3" "+Pl"] - $["+Ntr"]] .#.] - .o. ["+NtrPl" -> "+NtrPlPass" || _ $["+Pas"]] - .o. ["+ObvSg" -> "+ObvSgPass" || _ $["+Pas"]] - .o. ["+ObvPl" -> "+ObvPlPass" || _ $["+Pas"]] - # Idiosyncrasies - .o. [[..] -> "+2Pl" || "+LcPass" _ $["+Ind"] $["+2" "+Pl"] $["+Obv"]] - .o. ["+LcPass" -> [] || _ $["+Est"] $["+Obv"] $["+2"|"+1"] $["+Sg"]] - .o. ["+LcPass" -> [] || _ $["+Est"] $["+Dub"] $["+Obv"] $["+2" "+Pl"]] - .o. ["+LcPass" -> "+Lc" || _ $["+Est"] $["+Dub"] $["+Obv"] $["+2"|"+1"]] - .o. ["+NLc" -> "+Lc" || _ - $["+Ouest" "+Indép" "+Indir"] $["+Obv"] $["+2" "+Pl"]] - # Peut-être influence de « ń ». - .o. ["+DubPassLc" -> "+DubPassNLc" || - _ $["+Est"] $["+Obv"] $["+2"|"+1"] $["+Sg"]] - .o. [[Cases|TGrm|">"] -> []]; - -undefine Caser -undefine CombTraits - -# ----------- -# RÉALISATION -# ----------- -# -# Documentation: doc/realisation.txt - -define RealMorphemes CombMorphemes - # Préfxes de personnes - .o. ["2+" -> {tshit} "2+"] - .o. ["1+" -> {nit} "1+"] - # Thème de décalage - .o. ["+ThDec" -> {im} "+ThDec"] - # Thème de direction - .o. ["+ThLc" -> {i} "+ThLc"] - .o. ["+ThLcI" -> {iti} "+ThLcI"] - .o. ["+ThMxt" -> {a} "+ThMxt"] - .o. ["+ThI" -> {ikᵘ} "+ThI"] - .o. ["+ThNLc" -> {e} "+ThNLc"] - .o. ["+ThAmu" -> {amᵘ} "+ThAmu"] - # Suffixe d’obviation - .o. ["+3Obv" -> {iń} "+3Obv"] - # Suffixes de personne - .o. ["+Lc" -> {n} "+Lc"] - .o. ["+LcPass" -> {iti} "+LcPass"] - .o. ["+NLc" -> {u} "+NLc"] - .o. ["+NLcPass" -> {ipan} "+NLcPass"] - # Nombre local - .o. ["+2Pl" -> {au} "+2Pl"] - .o. ["+1Pl" -> {an} "+1Pl"] - # Tiroir - .o. ["+IndirPrésLc" -> {atak} "+IndirPrésLc"] - .o. ["+IndirPrésNLc" -> {itak} "+IndirPrésNLc"] - .o. ["+IndirPassLc" -> {ashapan} "+IndirPassLc"] - .o. ["+IndirPassNLc" -> {ishapan} "+IndirPassNLc"] - .o. ["+DubPrésLc" -> {atshen} "+DubPrésLc"] - .o. ["+DubPrésNLc" -> {itshen} "+DubPrésNLc"] - .o. ["+DubPassLc" -> {akupan} "+DubPassLc"] - .o. ["+DubPassNLc" -> {ikupan} "+DubPassNLc"] - # Nombre non local - .o. ["+NtrPl" -> {a} "+NtrPl" , - "+NtrPlPass" -> {a} "+NtrPlPass" || _ $["+VII"]] - .o. ["+NtrPl" -> {at} "+NtrPl" , - "+NtrPlPass" -> {at} "+NtrPlPass" || _ ~$["+VII"] .#.] - .o. ["+ObvSg" -> {a} "+ObvSg" , - "+ObvSgPass" -> {a} "+ObvSgPass" || _ ~$["+VII"] .#.] - .o. ["+ObvPl" -> {a} "+ObvPl" , "+ObvPlPass" -> {a} "+ObvPlPass"]; - -define AltMorphemes RealMorphemes - # Base - .o. [{sh} -> {t} || _ "Base" ~$["+ThLc"] .#.] - .o. [[..] -> {a} || _ "Base" \Mrphm* ["+ThLcI"|"+ThI"] $["+u"]] - .o. [{u} -> {a} || _ "Base" \Mrphm* ["+ThLcI"|"+ThI"] $["+ua"]] - .o. [{ᵘ} -> [] || _ "+ThAmu" Mrphm* \Mrphm* "+3Obv"] - # Préfixes de personne - .o. [{it} -> [] || _ ["2+"|"1+"] [u|û]] - .o. [ {t} -> [] || _ ["2+"|"1+"] \Voy] - # Thème de décalage - .o. [{i} -> [] || Voy Mrphm* _ \Mrphm* "+ThDec"] - # Thème de direction - .o. [{i} -> [] || [n|ń] Mrphm* _ \Mrphm* "+ThLc"] - .o. [[i|a] -> [] || Voy Mrphm* _ - \Mrphm* ["+ThLc"|"+ThLcI"|"+ThI"|"+ThAmu"]] - .o. [{e} -> [] || [{ei}|{ai}] Mrphm* _ \Mrphm* "+ThNLc"] - # Suffixe d’obviatif - .o. [{i} -> [] || [Voy|n|ń] Mrphm* _ \Mrphm* "+3Obv" $[TVrbe - "+VTI"]] - # Suffixes de personne - .o. [\Mrphm+ -> [] || _ "+NLc" Mrphm* \Mrphm* ["+IndirPrésLc"|"+IndirPrésNLc"|"+IndirPassLc"|"+IndirPassNLc"|"+DubPrésLc"|"+DubPrésNLc"|"+DubPassLc"|"+DubPassNLc"]] - .o. [{n} -> [] || [n|ń] Mrphm* _ \Mrphm* "+Lc" TLex] - .o. [[VoyCourte|û] -> [] || _ "Base" \Mrphm+ "+NLc"] - .o. [{u} -> [] || {n} Mrphm* _ \Mrphm* "+NLc" $[TVrbe - "+VAI"]] - .o. [{i} -> [] || [Voy - [u|û]] Mrphm* _ \Mrphm* "+NLcPass"] - .o. [{i} -> [] || Voy Mrphm* _ \Mrphm* "+LcPass"] - # Tiroir - .o. [{a} -> [] || [Voy-[u|û]] Mrphm* _ \Mrphm* ["+IndirPrésLc"|"+IndirPassLc"|"+DubPrésLc"]] - .o. [{a} -> [] || {a} Mrphm* _ \Mrphm* ["+DubPassLc"]] - .o. [{i} -> [] || [Voy-[u|û]] Mrphm* _ \Mrphm* ["+IndirPrésNLc"|"+IndirPassNLc"|"+DubPrésNLc"|"+DubPassNLc"]] - .o. [{i} -> [] || _ Mrphm* Voy \Mrphm* "+DubPassLc"] - .o. [{a} -> {i} || {ń} Mrphm* _ \Mrphm* ["+IndirPrésLc"|"+IndirPassLc"|"+DubPrésLc"]] - .o. [{n} -> [] || _ ["+DubPrésLc"|"+DubPrésNLc"] [Mrphm|Traits]* .#.] - # Suffixes de nombre - .o. [{i} -> [] || _ Mrphm* \Mrphm* ["+2Pl"|"+1Pl"]] - .o. [{a} -> {i} || - [n|ń] Mrphm* _ \Mrphm* - ["+ObvSgPass"|"+ObvPlPass"|"+NtrPlPass" ?* "+VII"] , - [n|ń] ["+DubPrésNLc"|"+DubPrésLc"] Mrphm* _ ["+ObvSg"|"+ObvPl"|"+NtrPl"]] - # Retirer quelques traits - .o. [TLex -> []] - .o. [Mrphm -> []]; - -undefine CombMorphemes - -# ----------- -# ORTHOGRAPHE -# ----------- - -define Ortho [[] <- TAcc] - .o. AltMorphemes - .o. [ᵘ -> [] || _ u] - .o. [â -> a ,, î -> i ,, û -> u] - .o. [ᵘ -> u || _ ?]; - -undefine AltMorphemes - -# ------------------ -# FORMES DE CITATION -# ------------------ - -define TraitsCitation [ - [$["+VTA"] $["+Indép" "+Ind" "+Prés"] $["+Sg" "+Ntr"] $["+Sg" "+Obv"]]| - [$["+VAI"] $["+Indép" "+Ind" "+Prés"] $["+Sg" "+Ntr"]]| - [$["+VTI"] $["+Indép" "+Ind" "+Prés"] $["+Sg" "+Ntr"]]| - [$["+VII"] $["+Indép" "+Ind" "+Prés"] $["+Sg" "+Ntr"]]]; - -# Substituer la base au niveau abstrait par la forme de citation. -define FC [[[] <- TVrbe || _ TVrbe] - .o. $["+VAI" "+VAI"|"+VII" "+VII"|"+VTI" "+VTI"|"+VTA" "+VTA"] - .o. [[] <- [[Traits|">"] - TVrbe]] - .o. [[TraitsCitation - .o. Ortho] TVrbe]].i ?*; - -define Verbes FC .o. Ortho; -push Verbes - -# --------- -# NETTOYAGE -# --------- - -undefine Ortho -undefine TraitsCitation -undefine FC - -# Supprimer les symboles inutiles -substitute symbol ! for +1Pl -substitute symbol ! for +2Pl -substitute symbol ! for +3Obv -substitute symbol ! for +DubPassLc -substitute symbol ! for +DubPassNLc -substitute symbol ! for +DubPrésLc -substitute symbol ! for +DubPrésNLc -substitute symbol ! for +IndirPassLc -substitute symbol ! for +IndirPassNLc -substitute symbol ! for +IndirPrésLc -substitute symbol ! for +IndirPrésNLc -substitute symbol ! for +Lc -substitute symbol ! for +LcPass -substitute symbol ! for +NLc -substitute symbol ! for +NLcPass -substitute symbol ! for +NtrPl -substitute symbol ! for +NtrPlPass -substitute symbol ! for +ObvPl -substitute symbol ! for +ObvPlPass -substitute symbol ! for +ObvSg -substitute symbol ! for +ObvSgPass -substitute symbol ! for +ThAmu -substitute symbol ! for +ThDec -substitute symbol ! for +ThI -substitute symbol ! for +ThLc -substitute symbol ! for +ThLcI -substitute symbol ! for +ThMxt -substitute symbol ! for +ThNLc -substitute symbol ! for +u -substitute symbol ! for +ua -substitute symbol ! for 1+ -substitute symbol ! for 2+ -substitute symbol ! for Base -substitute symbol ! for [NbLc] -substitute symbol ! for [NbNLc] -substitute symbol ! for [Obv] -substitute symbol ! for [PPers] -substitute symbol ! for [SPers] -substitute symbol ! for [SPers] -substitute symbol ! for [ThDec] -substitute symbol ! for [ThDir] -substitute symbol ! for [Tir] -substitute symbol ! for â -substitute symbol ! for î -substitute symbol ! for û -substitute symbol a for !