• Aucun résultat trouvé

Transducteurs d’arbres d’arité non bornée

Jusqu’à présent, tous les arbres considérés étaient d’arité bornée, chaque noeud d’un même label ayant toujours un même nombre de fils. En se limitant à ce format, les transducteurs bénéficient d’une structure plus simple. Mais chacune de ces règles, étant de taille fixée par l’étiquette du noeud considéré, ces modèles se détachent des cas réels. En effet, la plupart des arbres de données se trouvant dans les cas pratiques sont d’arité non bornée. Deux principaux moyens s’offrent à nous pour traiter ce genre de données.

Nous pouvons nous ramener à des arbres d’arité bornée à l’aide d’enco- dages tels que le codage curryfié, plus adapté aux machines ascendantes, et le codage frère-fils pour les descendantes. Le principal problème est qu’en exécutant des transducteurs, sur ces encodages, l’expressivité s’exprime plus difficilement en fonction de l’arbre de base. Des codages comme celui guidé par les schémas permettent de rester plus proche de l’arbre d’entrée et n’a été que récemment introduit.

L’autre possibilité, que nous allons développer dans la suite, est l’utilisation ddes transducteurs de mots imbriqués, travaillant sur la représentation linéaire d’arbres. Nous reprendrons ici les automates de mots imbriqués auxquels nous associeront une sortie structurée ou non.

2.4.1 Transducteurs de mots imbriqués en mots

Les transducteurs de mots imbriqués en mots, introduits dans un premier temps par Raskin et Servais (2008) sous le nom de « visibly pushdown », permettent de passer de mots imbriqués en mots imbriqués. La définition, que nous donnons ici, et que nous utiliserons dans de futurs chapitres, n’effectue aucun contrôle sur la sortie et permet de produire tout type de mots sans vérifier une possible bonne imbrication.

Les transducteurs de mots imbriqués en mots correspondent à un NWA où les règles sont enrichies d’un chaîne de sortie qui sera produite au fur et à mesure de l’exécution du transducteur.

Exemple 36. Si nous reprenons l’exemple 10 pour produire un fichier html, qui reprend uniquement les noms d’une liste, il suffit de modifier chaque règles en y ajoutant la sortie correspondante. Si, au lieu d’annoter chaque ouverture et fermeture de noeud par l’état atteint, nous y annotons la sortie produite, la production finale correspondra à la concaténation de chaque partie de cette sortie en parcourant l’arbre en profondeur.

book pers name addr pers name addr ⟨html⟩⟨ul⟩ γb ⟨li⟩ γp ⟨name⟩ γn ⟨/name⟩ ε ε ⟨/li⟩ ⟨li⟩ ⟨name⟩ ⟨/name⟩ ε ε ⟨/li⟩ ⟨/ul⟩⟨/html⟩ γp γa γn γa 0ÐÐÐÐÐÐÐÐÐÐ→ 1op book/⟨html⟩⟨ul⟩∶γb 1ÐÐÐÐÐÐÐ→ 2op pers/⟨li⟩∶γp 2ÐÐÐÐÐÐÐÐÐÐ→ 3op name/⟨name⟩∶γn 3ÐÐÐÐÐÐÐÐÐÐ→ 4cl name/⟨/name⟩∶γn 4ÐÐÐÐÐ→ 3op addr/∶γa 3ÐÐÐÐÐ→ 5cl addr/∶γa 5ÐÐÐÐÐÐÐ→ 1cl pers/⟨/li⟩∶γp 1ÐÐÐÐÐÐÐÐÐÐÐ→ 6cl book/⟨/ul⟩⟨/html⟩∶γb

Figure 2.18 – Exemple de transduction de mots imbriqués en mots Définition 41. Un transducteur de mots imbriqués en mots ou NW2W M est un défini par un t-uplet d’ensembles finis M =(Σ, ∆, Q, Γ, init, fin, rul) qui défini une transduction d’un alphabet d’entrée Σ, à un alphabet de sortie ∆, utilisant des états Q comprenant un ensemble d’états initiaux init et d’états finaux dans fin, des symboles de piles Γ permettant de contrôler la bonne imbrication de l’entrée utilisés pour définir des règles Q× ˆΣ×Γ×∆∗×Q ∈ rul.

Comme remarqué précédemment, notre définition n’autorisant pas les règles ayant ε pour entrée, un NW2W peut être vu comme un NWA où chaque sor- tie est égale à ε et peut servir à définir le domaine d’entrée d’un NW2W. Il partage avec les autres transducteurs la notion de partie gauche gch, d’une partie droite dt, et d’une production prod. Travaillant avec des mots imbri- qués, l’entrée d’une règle r n’est plus un label mais une action act(r), et elle contient en plus un symbole de pile pile(r).

La sortie ne modifiant pas l’exécution du transducteur, la notion de dé- terminisme est identique à celle des NWAs. On note dNW2Ws les NW2Ws déterministes. L’exécution peut être décrite par un système de configurations identiques à celles des NWAs, auxquelles on ajoute la chaîne de sortie pro- duite progressivement. Une configuration est définie sur ˆΣ× Q × Γ∗× ∆∗ de

sorte qu’une étape de transduction se traduit par : q _ a/w

∶γ

ÐÐÐÐ→ q′∈ rul

(u, q, S, v) → (u′, q, S, w ⋅ w′)

u′ , qet Sétant obtenus de la même manière que dans les NWAs.

Un mot JM K transforme un mot imbriqué u en un mot w s’il existe un état initial q0∈ init et une séquence d’instructions qui, à partir de C = (u, q0, ε, ε),

nous amène à C′ =(ε, q

f, ε, w) tel que qf ∈ fin. Dans ce cas, le couple (u, w)

appartient à la relation JM K. Nous pouvons considérer l’entrée comme la li- néarisation d’un arbre non bornée et étendre la définition de JM K directement aux arbres que l’entrée représente. Pour tout arbre t ∈ Tu

Σ et mot w ∈ ∆∗,

(t, w) = JM K ssi (linear(t), w) ∈ JM K. Si l’on se limite aux dNW2Ws, JM K peut être vu comme une fonction partielle.

À partir de cette définition, nous pouvons définir pour tout dNW2W M , et pour chacun de ses état q, une fonction partielle JM Kq∶TΣ∗ → ∆∗ représentant

la production possible et l’état atteint à partir d’un état du transducteur pour une forêt donnée en paramètre. Ainsi, JM Kq(t1, . . . , tk) = (w, q′) si et

seulement si à partir d’une configuration(linear(t1, . . . , tk), q, ε, ε) on atteint

la configuration (ε, q′, ε, w).

Nous pouvons aussi limiter les transducteurs à un parcours descendant, comme les dNWAs↓pour les automates, en limitant les symboles de piles aux

états. On appelle cette sous-classe les dNW2Ws↓.

En se limitant aux dT2Ws sans copie et sans réordenancement on re- marque que la relation qui les lient aux dNW2Ws↓ est la même que la rela-

tion liant les dNWAs↓ et les dtas. Plus formellement, les propositions 2 et

1 peuvent être réécrites de la manière suivante, les preuves marchant de la même manière que précédemment, en ajoutant de la production.

Proposition 14. Tout dT2W M sans copie ni réordenancement peut être converti en un dNW2W↓ N tel que JN K = JM K en temps O(∣M ∣ ∗ n) où

n = max(ar(x) ∣ x ∈ Σ).

Preuve. (esquisse) Comme évoqué précédemment, cette preuve repose sur celle de la proposition 1, la possibilité de produire de M ne modifiant pas la structure des transducteurs mais les annotant d’une sortie pouvant être rattaché aux opérations d’ouvertures et fermetures de N . Hormis l’ajout d’un alphabet de sortie, et une modification des règles de la manière suivante, rien ne change de la construction de l’ancienne preuve.

q0 ∈ initM r = q0(a) → u0⋅ q1⋅ . . . ⋅ qk⋅ uk∈ rulM oÐÐÐÐ→ ⟨r, 0⟩op a/uo∶f ⟨r, k⟩ cl a/ε∶f ÐÐÐ→ f r = q(a) → u0⋅ q1⋅ . . . ⋅ qj⋅ uj⋅ . . . ⋅ qk⋅ uk∈ rulM r′= q j(b) → v0⋅ p1. . . pm⋅ vm 1 ≤ j ≤ k ⟨r, j − 1⟩ op b/vo∶⟨r,j⟩ ÐÐÐÐÐÐ→ ⟨r′, 0⟩ ⟨r′, m⟩ÐÐÐÐÐÐ→ ⟨r, j⟩cl b/uj∶⟨r,j⟩

Proposition 15. Pour tout dNW2W↓ N nous pouvons construire en temps

O(∣Σ∣2 ∣Q

N∣2) un dT2Ws sans copie et sans réordonnancement M tel que

JM K ={(fcns(t), u) ∣ (t, u) ∈ JNK}.

Preuve. (esquisse) La preuve marche de la même manière que celle de la pro- position 2, les règles du transducteur dT2W sont cette fois si générées de la manière suivante : q0∈ initN q2∈ finN q0 op a/w∶q2 ÐÐÐÐÐ→ q1∈ rulN q0(a) → w ⋅ ⟨q1, a, q2⟩ ⋅ q# q cl a/w∶q ′ ÐÐÐÐÐ→ q′∈ rul N ⟨q, a, q′⟩(#) → w b ∈ Σ p ∈ QN q op a/u∶q2 ÐÐÐÐ→ q1∈ rulN ⟨q, b, p⟩(a) → u ⋅ ⟨q1, a, q2⟩ ⋅ ⟨q2, b, p⟩ true q#(#) → ε

De ces deux propriétés nous obtenons directement le corollaire suivant. Corollaire 3. L’équivalence des dNW2Ws↓ sans copie et sans réordonnance-

ment peut être réduit en temps polynomial à l’équivalence des dT2Ws et vice versa.

2.4.2 Transducteurs de mots imbriqués en mots imbri-

qués

Le modèle des transducteurs de flux d’arbres noté NW2NW, de mots imbriqués en mots imbriqués, a été proposé par Alur et D’Antoni (2012). Il permet de produire, à partir d’une linéarisation d’arbre, non plus un arbre mais une linéarisation d’arbres également. Dans cela, il s’approchent plus du modèle de transformation xslt sur lequel on reviendra plus précisément. Il faut remarquer qu’ici, la définition de mots imbriqués diffère ce celle introduite dans cette thèse, le modèle y autorisant des symboles internes, correspondant aux possibles valeurs textuelles.

Ce modèle se limite à un unique passage sur la linéarisation, pouvant donc être vue comme un flux d’informations et calcul en temps linéaire la sortie, à l’aide d’un nombre fini d’états, d’une pile, en effectuant des opérations de concaténation et d’insertion dans les mots imbriqués dans la sortie.

Le principal intérêt de ce modèle vient de son expressivité fortement lié avec le modèle logique des transformations MSO-définissables comme nous le montre Alur et D’Antoni (2012). En effet, le théorème 11 de cet article montre que toute transformation de mots imbriqué définissable par un NW2NW est aussi MSO-définissable. Les observations faite à la suite des Propositions 12 et 13 montre que toute transformation MSO-définissable l’est aussi par un NW2NW si on considère les transformations MSO-définissables d’arbres bi- naires à arbres binaires.

Ce modèle a aussi de bonnes propriétés, telle que la clôture par compo- sition, évoqué dans le théorème 7. Le théorème 18 montre que l’inclusion de l’image de sortie d’un NW2NW dans le langage, reconnu par un NWA, est décidable en temps polynomial.

L’équivalence de deux NW2NW est décidable, et comme le montre le Théorème 20 en temps NExpTime.

Transformations XML

Il est important de rappeler que la modélisation de transformations doit répondre avant tout à un besoin pratique. En effet, pouvoir formaliser la repré- sentation, manipulation ou toute autre opération sur des données structurées, tel que le xml évoqué précédemment, est indispensable pour la gestion des informations transitants sur les différents outils informatiques. Nous allons présenter dans ce chapitre le langage xslt, permettant de représenter et d’ef- fectuer la transformation de données xml vers xml. Le choix d’xslt repose sur le fait que ce langage de transformation utilise principalement la structure des données, ce qui nous intéresse ici. Il a de plus comme but de rester le plus général possible. Il ne se limite pas à une tâche précise, ou à un type de données particulier.

Après avoir brièvement présenté ce qu’est le langage xslt, à travers sa syntaxe et quelques exemples pour en dévoiler les principaux mécanismes, nous montrerons le lien entre les transformations exprimables par xslt et les transducteurs précédemment décrits. Pour cela, nous parlerons des divers fragments de xslt étudiés par la communauté, le modèle global étant trop expressif pour pouvoir être comparé aux modèles théoriques classiques. Nous nous attarderons particulièrement sur les macro-transducteurs d’arbres et la manière dont on peut les exprimer dans le langage xslt.