tef-innu

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

commit bc24af64f4ac4563a1f54f999161057c779a3e05
parent 5c3174521de2dda70e6ccd58cd52a499715b5604
Auteur: Loïc Daignault-Pichette <loic@asteride.xyz>
Date:   Thu,  4 Dec 2025 13:59:22 -0500

[inf] Séparer automatiquement les symboles

Diffstat:
M.gitignore | 1+
MMakefile | 19+++++++++++--------
Abin/lexalexs | 15+++++++++++++++
Mtef/noms/lexique.xfst | 7+------
Mtef/verbes/lexique.xfst | 13++-----------
5 fichiers modifiés, 30 insertions(+), 25 suppressions(-)

diff --git a/.gitignore b/.gitignore @@ -2,5 +2,6 @@ *.att *.ext *.def +*.lexs web tmp diff --git a/Makefile b/Makefile @@ -7,7 +7,7 @@ # ------------------ .SUFFIXES: -.SUFFIXES: .xfst .var .def .fst .att .ext +.SUFFIXES: .xfst .var .def .lex .fst .att .ext .lexs .xfst.fst: foma -e "source $<" -e "save stack $@" -s @@ -17,6 +17,8 @@ foma -e "load $<" -e "write att $@" -s .att.ext: bin/extension.py "$<" | sort > "$@" +.lex.lexs: + bin/lexalexs <"$<" >"$@" # ------ # DÉFAUT @@ -28,7 +30,7 @@ tous: tef/mots.fst web # VERBES # ------ -tef/verbes/lexique.fst: tef/phonologie.def tef/verbes/lexique.lex +tef/verbes/lexique.fst: tef/phonologie.def tef/verbes/lexique.lexs 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 @@ -40,7 +42,7 @@ tef/verbes/verbes.fst: tef/traits.def tef/verbes/realisation.fst # NOMS # ---- -tef/noms/lexique.fst: tef/noms/lexique.lex +tef/noms/lexique.fst: tef/noms/lexique.lexs 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 \ @@ -76,9 +78,10 @@ web: tef/mots.ext net: find . \ - -name '*.fst' -o \ - -name '*.def' -o \ - -name '*.att' -o \ - -name '*.ext' -o \ - -name 'web' | \ + -name '*.fst' -o \ + -name '*.def' -o \ + -name '*.att' -o \ + -name '*.ext' -o \ + -name '*.lexs' -o \ + -name 'web' | \ xargs rm -r diff --git a/bin/lexalexs b/bin/lexalexs @@ -0,0 +1,15 @@ +#!/bin/sh +# +# lexalexs -- Séparer les symboles d’un fichier lex. + +awk ' + BEGIN { FS = "+" } + { + gsub(/./, "& ", $1) + sub(/ $/, "", $1) + for (i=2 ; i<=NF; i++) + sub(/^/, "+", $i) + print + print "" + } +' diff --git a/tef/noms/lexique.xfst b/tef/noms/lexique.xfst @@ -3,9 +3,4 @@ # ======= # Former le lexique à partir des fichiers *.lst. -read regex [@txt"tef/noms/lexique.lex" - .o. [{+A} -> "+A"] - .o. [{+I} -> "+I"] - .o. [{+ush} -> "+ush"] - .o. [{+vf} -> "+vf"] - .o. [{+apui} -> "+apui"]].l; +read regex [@txts"tef/noms/lexique.lexs"]; diff --git a/tef/verbes/lexique.xfst b/tef/verbes/lexique.xfst @@ -10,14 +10,5 @@ load defined tef/phonologie.def # 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/lexique.lex" | - Lettre+ "+Absent" ["+VII"|"+VAI"|"+VTI"|"+VTA"]] - .o. [{+VII} -> "+VII"] - .o. [{+VAI} -> "+VAI"] - .o. [{+VTI} -> "+VTI"] - .o. [{+VTA} -> "+VTA"] - .o. [{+ua} -> "+ua"] - .o. [{+u} -> "+u"] - .o. [{+e} -> "+e"] - .o. [{+o} -> "+o"] - .o. [{+impers} -> "+impers"]].l; +read regex [@stxt"tef/verbes/lexique.lexs" | + Lettre+ "+Absent" ["+VII"|"+VAI"|"+VTI"|"+VTA"]];