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:
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