FST - D´epartement G´enie Informatique Ens.: M.T. Bennani Ann´ee : 2012-2013

publicité
Ens.: M.T. Bennani
FST - Département Génie Informatique
Travaux dirigés en théorie de compilation
Année : 2012-2013
Série N1 - Analyse lexicale
1. Construction des AFDs
Soit un alphabet formé de deux lettre ”a” et ”b”. Transformer les AFND suivants en AFD.
(a) Le premier automate est :
a,b
q0
a
b
q2
q1
a
(b) Le deuxième automate est :
b
q0
a
q1
b
q2
a
b
q3
a
(c) Le troisième automate est :
q0
b
a q1
a
a
q2
a
a,b
q3
b
q4
q5
2. Algorithme Maximal Munch
Soient les trois Tokens définis par les expressions régulières du listing ci-dessous.
a∗b
( a | b)∗b
c∗
printf (”1”);
printf (”2”);
printf (”3”);
Quelles sont les sorties produites en appliquant l’algorithme maxiaml munch pour :
(a) aaabccabbb
(b) cbbbbac
(c) cbabc
3. Limites de la résolution de conflits
Nous avons introduit dans le cours que l’algorithme Maximal Munch associé à la définition
d’un critère de priorité sur les expressions régulières permettent de résoudre la résolution de
conflits.
(a) Expliquer ce principe avec un exemple différent de celui introduit dans le cours.
(b) Soient les trois Tokens définis par les expressions régulières du listing ci-dessous.
TDs en théorie de compilation
aa
a
ab
TD1
Année universitaire : 2012-2013
printf (”1”);
printf (”2”);
printf (”3”);
Quelles sont les sorties produites lorsqu’on applique l’algorithme maxiaml munch pour la
chaine ”aab”?
4. Lenteur des scanners
Soient les Tokens définis par les expressions régulières du listing ci-dessous
” photo ”
” photosynthese ”
” . | \ n”
{ p r i n t f ( ”PHOTO” ) ; }
{ p r i n t f ( ”PHOTOSYNTHESE” ) ; }
{ p r i n t f ( ”X” ) ; }
(a) Quelles sont les sorties produites pour l’entrée ”photosynthetiser” ?
(b) Déduire le nombre de caractères scannés.
(c) Soient les deux Tokens définis par les expressions régulières du listing ci-dessous
a ∗b
a
{ printf (”1”); }
{ printf (”2”); }
Supposons le langage défini par L={a{n}, où n > 1}. Quel est le nombre de caractères
scannés ?
5. Analyseurs inversés
L’algorithme d’analyse introduit dans le cours est basé sur une lecture de gauche à droite d’une
entrée. L’objectif de cet exercice est de réaliser un analyseur qui réalise la lecture de droite à
gauche.
(a) Modifier l’algorithme permettant de convertir l’expression régulière en AFND dans le but
d’accpeter les chaı̂nes inversées.
(b) Génerer un ensemble d’expressions régulières et une chaine de caractères où l’analyse de
gauche à droite donne des Tokens différent de l’analyse de droite à gauche.
Page 2
Téléchargement