Définition Étant donné un ensemble fini de mots E, on appelle arbre lexical associé à E un automate fini ainsi conçu :
Questions
|
Exemple ensemble E = { le, leur, lui, ses } Alphabet : { e, i, l, r, s, u }États : { "", l, s, le, lu, se, leu, lui, ses, leur } État initial : "" États terminaux : { le, leur, lui, ses} Transitions
|
x
vx
et un certain suffixe v
(peut-être vide). x
= 'r' et v = "e"]x
n'est
plus préfixe de E.x
tombe dans la poubelle !<transition source="0" lettre="x" but="1" >
L
, D
(comme digit), S
(comme
space)A
, pour écrire les valeurs
d'attributs, à savoir "n'importe quoi d'autre", |
'
pour noter la
réunion ensembliste, et non le symbole mathématique '∪
'.L(L|D)*
"(L|D|S|A|=|>)*"
L(L|D)*S*=S*
"(L|D|S|A|=|>)*"
S+
) après
le premier nom.[jean-francois:cours12/Automates/XML] jfp%
xmllint Ex1.xml
Ex1.xml:14: parser error : attributes construct error
<transition
source="0"lettre="x"but="1" />
^
Ex1.xml:14: parser error : Couldn't find end of Start Tag transition
line 14
<transition
source="0"lettre="x"but="1" />
^
[jean-francois:cours12/Automates/XML] jfp%
(S+L(L|D)*S*=S*"(L|D|S|A|=|>)*")*
.<L(L|D)*(S+L(L|D)*S*=S*"(L|D|S|A|=|>)*")*S*>
.Voici schématiquement la succession tout au long de l'expression régulière :
< L (L|D)*(S+ L (L|D)* S* = S* " (L|D|S|A|=|>)*" )* S* >
0 1 2 2 3 5 5 6 7 7 8 8 9 3 4
<
',
elle va à un nouvel état 1, qui marque "on a lu le '<
'
initial".L
,
elle va à un nouvel état 2, qui marque "on a lu l'initiale du nom".L
et par D
,
pour finir de lire le nom, et on en sort par S
ou par '>
'.S
indique la fin du nom, et soit le début
d'une liste d'attributs-valeurs, soit un ou plusieurs S
avant le chevron final. >
' correspond au choix du mot vide
simultanément dans les deux étoiles qui suivent le nom de la balise
(celle de la liste des attributs-valeurs et celle des S
avant le chevron final). Elle conduit tout droit à un nouvel état 4,
terminal.S
, on va en 4
par '>
' le chevron final, et dans un nouvel état
5 par L
, qui est alors l'initiale du nom du premier
attribut.L
et par D
,
pour finir de lire le nom de l'attribut courant, et on en sort par S
ou par '=
'.S
, c'est pour lire une suite de S
en attente de '=
', on doit donc aller en un nouvel état 6.=
', on va en un nouvel état 7, à
partir duquel on lira la valeur de l'attribut dont on vient d'analyser
le nom.S
, et on en
sort par '=
', qui conduit à 7.S
. La lecture du guillement fait
passer à un nouvel état 8.L
, D
, S
, A, '=
'
et '>
', et en sortant par le guillemet '"
'
qui clôt la lecture de la valeur."
' conduit à un nouvel état 9 d'où on
partira pour lire soit un nouveau couple attribut-valeur, soit le
chevron fermant.>
' le chevron final
conduit à l'état terminal 4.S
qui indique soit la suite
de la liste d'attributs-valeurs, soit un ou plusieurs S
avant le chevron final. On est alors exactement dans la même situation
que dans l'état 3. Minimalité oblige, on va donc en 3