tef-innu

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

commit b752ecab2ce5d9996b2f024e3befa216af97feba
parent b9013f5d01c371ea2e4ce6cdb327372d65f1fea6
Auteur: Loïc Daignault-Pichette <loic@asteride.net>
Date:   Sat,  1 Aug 2026 12:42:30 -0400

[chm] Supprimer le générateur de site statique

Diffstat:
MMakefile | 12++----------
Rbin/lexalexs -> bin/lexalexs.sh | 0
Dbin/statef.py | 250-------------------------------------------------------------------------------
3 fichiers modifiés, 2 insertions(+), 260 suppressions(-)

diff --git a/Makefile b/Makefile @@ -18,13 +18,13 @@ .att.ext: bin/extension.py "$<" | sort > "$@" .lex.lexs: - bin/lexalexs <"$<" >"$@" + bin/lexalexs.sh <"$<" >"$@" # ------ # DÉFAUT # ------ -tous: mots web +tous: mots # ------ # VERBES @@ -70,14 +70,6 @@ tef/mots.fst: tef/mots_prod.fst tester: tef/mots.ext ech.tsv bin/rapport.py tef/mots.ext ech.tsv | less -# ------------- -# INTERFACE WEB -# ------------- - -web: tef/mots.ext - mkdir -p web - bin/statef.py tef/mots.ext web - # --------- # NETTOYAGE # --------- diff --git a/bin/lexalexs b/bin/lexalexs.sh diff --git a/bin/statef.py b/bin/statef.py @@ -1,250 +0,0 @@ -#!/usr/bin/env python3 - -import sys -import os - -# Lire un fichier -def lire(fichier): - - # Séparer le deux champs d’une ligne - def sep(ligne): - return ligne.split("\t")[0:2] - - def convpers(pers): - dico = {('1', 'Pl', 'Ex', '>', '2', 'Pl') : "1pe->2p", - ('1', 'Pl', 'Ex', '>', '2', 'Sg') : "1pe->2s", - ('1', 'Pl', 'Ex', '>', '3', 'Pl', 'Ntr') : "1pe->3p", - ('1', 'Pl', 'Ex', '>', '3', 'Pl', 'Obv') : "1pe->4p", - ('1', 'Pl', 'Ex', '>', '3', 'Sg', 'Ntr') : "1pe->3s", - ('1', 'Pl', 'Ex', '>', '3', 'Sg', 'Obv') : "1pe->4s", - ('1', 'Pl', 'Ex') : "1pe", - ('1', 'Pl', 'In', '>', '3', 'Pl', 'Ntr') : "1pi->3p", - ('1', 'Pl', 'In', '>', '3', 'Pl', 'Obv') : "1pi->4p", - ('1', 'Pl', 'In', '>', '3', 'Sg', 'Ntr') : "1pi->3s", - ('1', 'Pl', 'In', '>', '3', 'Sg', 'Obv') : "1pi->4s", - ('1', 'Pl', 'In') : "1pi", - ('1', 'Sg', '>', '2', 'Pl') : "1s->2p", - ('1', 'Sg', '>', '2', 'Sg') : "1s->2s", - ('1', 'Sg', '>', '3', 'Pl', 'Ntr') : "1s->3p", - ('1', 'Sg', '>', '3', 'Pl', 'Obv') : "1s->4p", - ('1', 'Sg', '>', '3', 'Sg', 'Ntr') : "1s->3s", - ('1', 'Sg', '>', '3', 'Sg', 'Obv') : "1s->4s", - ('1', 'Sg') : "1s", - ('2', 'Pl', '>', '1', 'Pl', 'Ex') : "2p->1pe", - ('2', 'Pl', '>', '1', 'Sg') : "2p->1s", - ('2', 'Pl', '>', '3', 'Pl', 'Ntr') : "2p->3p", - ('2', 'Pl', '>', '3', 'Pl', 'Obv') : "2p->4p", - ('2', 'Pl', '>', '3', 'Sg', 'Ntr') : "2p->3s", - ('2', 'Pl', '>', '3', 'Sg', 'Obv') : "2p->4s", - ('2', 'Pl') : "2p", - ('2', 'Sg', '>', '1', 'Pl', 'Ex') : "2s->1pe", - ('2', 'Sg', '>', '1', 'Sg') : "2s->1s", - ('2', 'Sg', '>', '3', 'Pl', 'Ntr') : "2s->3p", - ('2', 'Sg', '>', '3', 'Pl', 'Obv') : "2s->4p", - ('2', 'Sg', '>', '3', 'Sg', 'Ntr') : "2s->3s", - ('2', 'Sg', '>', '3', 'Sg', 'Obv') : "2s->4s", - ('2', 'Sg') : "2s", - ('3', 'Pl', 'Ntr', '>', '1', 'Pl', 'Ex') : "3p->1pe", - ('3', 'Pl', 'Ntr', '>', '1', 'Pl', 'In') : "3p->1pi", - ('3', 'Pl', 'Ntr', '>', '1', 'Sg') : "3p->1s", - ('3', 'Pl', 'Ntr', '>', '2', 'Pl') : "3p->2p", - ('3', 'Pl', 'Ntr', '>', '2', 'Sg') : "3p->2s", - ('3', 'Pl', 'Ntr', '>', '3', 'Pl', 'Obv') : "3p->4p", - ('3', 'Pl', 'Ntr', '>', '3', 'Pl', 'Obv2') : "3p->5p", - ('3', 'Pl', 'Ntr', '>', '3', 'Sg', 'Obv') : "3p->4s", - ('3', 'Pl', 'Ntr', '>', '3', 'Sg', 'Obv2') : "3p->5s", - ('3', 'Pl', 'Ntr') : "3p", - ('3', 'Pl', 'Obv', '>', '1', 'Pl', 'Ex') : "4p->1pe", - ('3', 'Pl', 'Obv', '>', '1', 'Pl', 'In') : "4p->1pi", - ('3', 'Pl', 'Obv', '>', '1', 'Sg') : "4p->1s", - ('3', 'Pl', 'Obv', '>', '2', 'Pl') : "4p->2p", - ('3', 'Pl', 'Obv', '>', '2', 'Sg') : "4p->2s", - ('3', 'Pl', 'Obv', '>', '3', 'Pl', 'Ntr') : "4p->3p", - ('3', 'Pl', 'Obv', '>', '3', 'Pl', 'Obv2') : "4p->5p", - ('3', 'Pl', 'Obv', '>', '3', 'Pl', 'Obv3') : "4p->6p", - ('3', 'Pl', 'Obv', '>', '3', 'Sg', 'Ntr') : "4p->3s", - ('3', 'Pl', 'Obv', '>', '3', 'Sg', 'Obv2') : "4p->5s", - ('3', 'Pl', 'Obv', '>', '3', 'Sg', 'Obv3') : "4p->6s", - ('3', 'Pl', 'Obv') : "4p", - ('3', 'Pl', 'Obv2', '>', '3', 'Pl', 'Obv') : "4p->4p", - ('3', 'Pl', 'Obv2', '>', '3', 'Sg', 'Obv') : "4p->4s", - ('3', 'Sg', 'Ntr', '>', '1', 'Pl', 'Ex') : "3s->1pe", - ('3', 'Sg', 'Ntr', '>', '1', 'Pl', 'In') : "3s->1pi", - ('3', 'Sg', 'Ntr', '>', '1', 'Sg') : "3s->1s", - ('3', 'Sg', 'Ntr', '>', '2', 'Pl') : "3s->2p", - ('3', 'Sg', 'Ntr', '>', '2', 'Sg') : "3s->2s", - ('3', 'Sg', 'Ntr', '>', '3', 'Pl', 'Obv') : "3s->4p", - ('3', 'Sg', 'Ntr', '>', '3', 'Pl', 'Obv2') : "3s->5p", - ('3', 'Sg', 'Ntr', '>', '3', 'Sg', 'Obv') : "3s->4s", - ('3', 'Sg', 'Ntr', '>', '3', 'Sg', 'Obv2') : "3s->5s", - ('3', 'Sg', 'Ntr') : "3s", - ('3', 'Sg', 'Obv', '>', '1', 'Pl', 'Ex') : "4s->1pe", - ('3', 'Sg', 'Obv', '>', '1', 'Pl', 'In') : "4s->1pi", - ('3', 'Sg', 'Obv', '>', '1', 'Sg') : "4s->1s", - ('3', 'Sg', 'Obv', '>', '2', 'Pl') : "4s->2p", - ('3', 'Sg', 'Obv', '>', '2', 'Sg') : "4s->2s", - ('3', 'Sg', 'Obv', '>', '3', 'Pl', 'Ntr') : "4s->3p", - ('3', 'Sg', 'Obv', '>', '3', 'Pl', 'Obv2') : "4s->5p", - ('3', 'Sg', 'Obv', '>', '3', 'Pl', 'Obv3') : "4s->6p", - ('3', 'Sg', 'Obv', '>', '3', 'Sg', 'Ntr') : "4s->3s", - ('3', 'Sg', 'Obv', '>', '3', 'Sg', 'Obv2') : "4s->5s", - ('3', 'Sg', 'Obv', '>', '3', 'Sg', 'Obv3') : "4s->6s", - ('3', 'Sg', 'Obv') : "4s", - ('3', 'Sg', 'Obv2', '>', '3', 'Pl', 'Obv') : "5p->4p", - ('3', 'Sg', 'Obv2', '>', '3', 'Sg', 'Obv') : "5p->4s"} - - return dico[pers] - - # Analyser la description abstraite - def descabstr(desc): - resultat = [None, None, None, None, None] - liste = "+>".join(desc.split(">")).split("+") - resultat[0] = liste[0] # Forme de citation - liste = liste[1:] - resultat[1] = liste[0] # Classe de verbe - liste = liste[1:] - resultat[2] = liste[0] # Dialecte - liste = liste[1:] - if liste[0] == "Indép": - liste[0] = "Indépendant" - if liste[1] == "Ind": - liste[1] = "indicatif" - if liste[1] == "Indir": - liste[1] = "indirect" - if liste[1] == "Dub": - liste[1] = "dubitatif" - if liste[2] == "Prés": - liste[2] = "présent" - if liste[2] == "Pas": - liste[2] = "passé" - resultat[3] = " ".join(liste[:3]) # Tiroir - resultat[4] = convpers(tuple(liste[3:])) - return resultat - - info = {} - - for ligne in fichier: - champs = sep(ligne.strip()) - desc = descabstr(champs[0]) - if desc[1] not in info: - info[desc[1]] = {} - if desc[0] not in info[desc[1]]: - info[desc[1]][desc[0]] = {} - if desc[3] not in info[desc[1]][desc[0]]: - info[desc[1]][desc[0]][desc[3]] = {} - if desc[4] not in info[desc[1]][desc[0]][desc[3]]: - info[desc[1]][desc[0]][desc[3]][desc[4]] = ["-", "-"] - if desc[2] == "Est": - i = 0 - else: - i = 1 - info[desc[1]][desc[0]][desc[3]][desc[4]][i] = champs[1] - - return info - -def page_verbe(info, nom, classe): - - ordre = { - "VII": ["3s", "4s", "3p", "4p"], - "VAI": ["1s", "2s", "3s", "4s", "1pe", "1pi", "2p", "3p", "4p"], - "VTI": ["1s", "2s", "3s", "4s", "1pe", "1pi", "2p", "3p", "4p"], - "VTA": ["1s->2s", "1s->3s", "1s->4s", "1s->2p", "1s->3p", "1s->4p", - "2s->1s", "2s->3s", "2s->4s", "2s->1pe", "2s->3p", "2s->4p", - "3s->1s", "3s->2s", "3s->4s", "3s->5s", - "3s->1pe", "3s->1pi", "3s->2p", "3s->4p", "3s->5p", - "1pe->2s", "1pe->3s", "1pe->4s", "1pe->3p", - "1pe->4p", "1pe->2p", - "1pi->3s", "1pi->4s", "1pi->3p", "1pi->4p", - "2p->1s", "2p->3s", "2p->4s", "2p->1pe", "2p->3p", "2p->4p", - "3p->1s", "3p->2s", "3p->4s", "3p->5s", - "3p->1pe", "3p->1pi", "3p->2p", "3p->4p", "3p->5p", - "4p->1s", "4p->2s", "4p->3s", "4p->4s", "4p->5s", "4p->6s", - "4p->1pe", "4p->1pi", "4p->2p", "4p->3p", - "4p->4p", "4p->5p", "4p->6p", - "4s->1s", "4s->2s", "4s->3s", "4s->5s", "4s->6s", - "4s->1pe", "4s->1pi", "4s->2p", "4s->3p", "4s->5p", "4s->6p", - "5p->4s", "5p->4p"]} - - def tableau(info, titre, ordre): - texte = "<table>\n" - texte = texte + f"<caption><b>{titre}</b></caption>\n" - for pers in ordre: - formes = ["-", "-"] - if pers in info: - formes[0] = info[pers][0] - formes[1] = info[pers][1] - texte = texte + "<tr>\n" - texte = texte + f"<td>{pers}</td><td>" - if formes[0] == formes[1]: - texte = texte + f"{formes[0]}" - else: - texte = texte + f"{formes[0] + "/" + formes[1]}" - texte = texte + "</td></tr>\n" - texte = texte + "</table>\n" - return texte - - texte = "<!DOCTYPE html>\n" +\ - "<html>\n" +\ - "<head>\n" +\ - f"<title>{nom}</title>\n" +\ - "<meta charset=\"UTF-8\">\n" +\ - "<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0\">\n" +\ - "<style>\n" +\ - "body { margin: auto; text-align: center; }\n" +\ - ".horiz { display: flex; justify-content: space-around; " +\ - "flex-flow: row wrap; }\n" +\ - "ul { list-style-type:none; padding: 0; margin: 0; }\n" +\ - "table { padding: 1rem; }\n" +\ - "</style>\n" +\ - "</head>\n" +\ - "<body>\n" - texte = texte + f"<h1>{nom}</h1>\n" - texte = texte + "<p><a href=\".\">Liste de verbes</a></p>\n" +\ - "<div class=\"horiz\">" - for t in info: - texte = texte + "<div>" + tableau(info[t], t, ordre[classe]) + "</div>" - texte = texte + "</div></body>\n</html>\n" - - return texte - -def pages_verbe(info, dst): - for classe in info: - for verbe in info[classe]: - with open(os.path.join(dst, classe + "_" + verbe + ".html"), "w") as f: - f.write(page_verbe(info[classe][verbe], verbe, classe)) - -def index(info, dst): - texte = "<!DOCTYPE html>\n" +\ - "<html>\n" +\ - "<head>\n" +\ - "<title>Verbes innus</title>\n" +\ - "<meta charset=\"UTF-8\">\n" +\ - "<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0\">\n" +\ - "<style>\n" +\ - "body { max-width: 760px; margin: auto; text-align: center; }\n" +\ - ".horiz { display: flex; justify-content: space-around; " +\ - "flex-flow: row wrap;}\n" +\ - "ul { list-style-type:none; padding: 0; margin: 0; }\n" +\ - "table { padding: 1rem; }\n" +\ - "</style>\n" +\ - "</head>\n" +\ - "<body>\n" +\ - "<h1>Verbes innus</h1>\n" +\ - "<div class=\"horiz\">\n" - for classe in info: - texte = texte + f"<div>\n<h2>{classe}</h2>\n<ul>\n" - for verbe in info[classe]: - texte = texte + f"<li><a href=\"{classe + "_" + verbe + ".html"}\">{verbe}</a></li>\n" - texte = texte + "</ul>\n</div>\n" - texte = texte + "</div></body>\n</html>\n" - with open(os.path.join(dst, "index.html"), "w") as f: - f.write(texte) - -if __name__ == "__main__": - dst = sys.argv[2] - with open(sys.argv[1], "r") as f: - info = lire(f) - print(info["VII"]["nipiu"]) - print(info["VII"]["nipiun"]) - index(info, dst) - pages_verbe(info, dst)