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:
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"]];