tef-innu

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

commit 0ddcc88004bde73cdb7e2cb885c6cd707e4ceaea
parent 8b2fe93e86125f4b85ab69af6e30b2568bcb6ca8
Auteur: Loïc Daignault-Pichette <loic@asteride.xyz>
Date:   Fri, 21 Nov 2025 15:14:54 -0500

[chm] Ajouter les noms indépendants

Les combinaisons de nombre et d’obviation sont supportés. Aucun test
systématique n’a été fait.

Diffstat:
Anoms/lexan.lst | 7+++++++
Anoms/lexin.lst | 11+++++++++++
Anoms/noms.xfst | 115+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3 fichiers modifiés, 133 insertions(+), 0 suppressions(-)

diff --git a/noms/lexan.lst b/noms/lexan.lst @@ -0,0 +1,7 @@ +ańik +ashtish +maikan +atikᵘ +atimᵘ +ishkueu +apui diff --git a/noms/lexin.lst b/noms/lexin.lst @@ -0,0 +1,11 @@ +massin +akup +assikᵘ +ush+ush +miush+ush +putai +utei +mei +uau+vf +minapui+apui +nipishapui+apui diff --git a/noms/noms.xfst b/noms/noms.xfst @@ -0,0 +1,115 @@ +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