Académique Documents
Professionnel Documents
Culture Documents
Analyse lexicale
Master Informatique Fondamentale - M1
Compilation
Generalites, Analyse lexicale
Paul Feautrier
ENS de Lyon
Paul.Feautrier@ens-lyon.fr
perso.ens-lyon.fr/paul.feautrier
24 janvier 2007
1 / 34
Generalites
Analyse lexicale
A quoi sert un compilateur
Les compilateurs les plus utilises (gcc, javac, ... sont des
logiciels libres.
On distingue :
liste de productions,
Les deux plus connus sont Lex (pour les grammaires reguli`eres) et Yacc
(pour un sous ensemble des grammaires hors contexte).
pattern matching
match x with
None -> ...
| SubExpression e -> ... (List.fst e.args) ...
| _ -> ()
Un mot est accepte par lautomate sil existe un chemin etiquete par les
lettres du mot allant de letat initial `a un etat terminal.
Un etat est accessible sil existe un chemin passant par cet etat et allant
de letat initial `a un etat terminal. On peut eliminer les etats non
accessibles.
A lalphabet (dentre).
i Q letat initial.
Q A Q la relation de transition.
E E|E
La syntaxe est abstraite parce que lon suppose que les termes sont
des arbres et non des chanes de caract`eres.
a.(a + b)
= |(X.X
).
23 / 34
Generalites
Analyse lexicale
Equivalence, I
Etant donne un automate ni, trouver lexpression rationelle
equivalente.
Si p = q
k
, alors p = e
k
.(e
1
q
1
| . . . |e
n
q
n
).
e*
e
25 / 34
Generalites
Analyse lexicale
Exemple, I
a.(a|b)
3
7
2
1
5 6
4
a
a
b
A
S
I
T
a
a
b
a
b
b a
I = {1}, I .a {2, 3, 5} = A, A.a {4, 7, 2, 3, 5} = S
A.b {6, 7, 2, 3, 5} = T, S.a S, S.b T
T.a S, T.b T
Lautomate resultant nest pas minimal.
28 / 34
Generalites
Analyse lexicale
Minimisation : Equivalence de Nerode
a
a.L
k1
(p.a)
De plus, la decomposition est unique. Il sen suit
p
k
q p
k1
q &
a
p.a
k1
q.a
31 / 34
Generalites
Analyse lexicale
Calcul de lequivalence de Nerode, II
Lequivalence
0
divise lensemble des etat en 2, les
terminaux et les non terminaux.
Connaissant
k1
on peut calculer
k
par la formule
ci-dessus.
Si
k
=
k1
on a atteint un point xe.
On ne calcule p
k
q que si p
k1
q.
On ne calcule pas p
k
q si on peut le deduire par transitivite
de couples deja calcules (algorithme de Fisher-aller).
32 / 34
Generalites
Analyse lexicale
Lex, ex, ocamllex