0% ont trouvé ce document utile (0 vote)
207 vues4 pages

Corrigé TD6: Automates et Analyseurs Lexicaux

Le document présente trois exercices sur la construction d'automates finis déterministes et la vérification lexicale à l'aide d'algorithmes. Les exercices portent sur la définition d'expressions régulières, la construction d'automates pour la reconnaissance de nombres et de chaînes de caractères vérifiant certaines propriétés.

Transféré par

ayoub
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
207 vues4 pages

Corrigé TD6: Automates et Analyseurs Lexicaux

Le document présente trois exercices sur la construction d'automates finis déterministes et la vérification lexicale à l'aide d'algorithmes. Les exercices portent sur la définition d'expressions régulières, la construction d'automates pour la reconnaissance de nombres et de chaînes de caractères vérifiant certaines propriétés.

Transféré par

ayoub
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Université de Technologie de Compiègne

NF11 - TD6 : Corrigé

Exercice 1
1. Soit c = [1 − 9] et l = [a − zA − Z]. Ci-dessous les expressions régulières :

Id → l(l|c) ∗
Cst → c +
Op →< | > | <= | >= | <> | = | + | −

On ne définit pas un modèle particulier pour les mots clés. On les traite a
priori comme des identificateurs. On recherche, en état d’acceptation, à l’aide
de l’exécution de code, si un "identificateur" fait partie d’une table prédéfinie.
2. L’automate est donné par le digramme de transition suivant :

Exercice 2
1. Soit C = [1−9], l’automate est donné par le diagramme de transition suivant :

1
2. On commence d’abord par construire une table de transition (voir Table 1)
de l’automate où on fait apparaitre des situations d’erreurs. Ces situations
d’erreurs seront codées par des entiers négatifs :
— -1 : Caractère non autorisé
— -2 : "+" ou "-" non attendu
— -3 : "E" non attendu
— -4 : "." non attendu

Table 1 – Transition
+,- C E . Autre
0 2 1 -3 -4 -1
1 -2 1 5 3 -1
2 -2 1 -3 -4 -1
3 -2 4 -3 -4 -1
4 -2 4 5 -4 -1
5 6 7 -3 -4 -1
6 -2 7 -3 -4 -1
7 -2 7 -3 -4 -1

L’algorithme de l’analyseur lexical est donné par Algorithme 1. Cet algorithme


utilise la Table 1.

1 Analyseur lexical EX2


1 Début Algorithme
2 E n t i e r : E<−0
3 caractère c
4 c<− l i r e ( )
5 Tant que ( c<>$ e t E>=0)
6 E<−T r a n s i t i o n [ E ] [ c ]
7 c<− l i r e ( )
8 Fin Tant que
9 S i (E<0)
10 A f f i c h e r _ E r r e u r (E)
11 s i n o n s i F i n a l (E)
12 A f f i c h e r ( " La c h a î n e e s t v a l i d e " ) ;
13 sinon
14 A f f i c h e r ( " Chaîne i n c o m p l è t e " ) ;
15 Fin

Exercice 3
1. Les conditions 3 et 4 sont très difficile à les modéliser par l’automate, par contre
leur vérification peut être faîte d’une manière efficace au niveau de l’algorithme
de l’analyseur lexical. On utilisera un automate pour la vérification des deux
premières conditions.
On note par c et v l’ensemble des consonnes et des voyelles, respectivement.
L’automate est donné par le diagramme de transition suivant :

2
2. On construit une table de transition de l’automate où on fait apparaitre des
situations d’erreurs. Ces situations d’erreurs seront codées par des entier né-
gatifs. Voir Table 2.
— -1 : Caractère non autorisé
— -2 : Les consonnes sont séparées par des voyelles (pas de consonnes consé-
cutives).
— -3 : Plusieurs voyelles (au maximum 3) peuvent se suivre

Table 2 – Transition
v c Autre
0 2 1 -1
1 2 -2 -1
2 4 1 -1
3 -3 1 -1
4 3 1 -1

Enfin, l’algorithme de l’analyseur lexical est donné par Algorithme 2. Cet al-
gorithme utilise la Table 2.

3
2 Analyseur lexicale EX3
1

2 Début Algorithme
3 E n t i e r : E<−0
4 caractère c
5 c<− l i r e ( )
6 d<−c
7 l <−0
8 Tant que ( c<>$ e t E>=0)
9 E<−T r a n s i t i o n [ E ] [ c ]
10 l++
11 f <−c
12 c<− l i r e ( )
13 Fin Tant que
14 S i (E<0) a l o r s
15 A f f i c h e r _ E r r e u r (E)
16 s i n o n S i ( l <2 ou l >8) a l o r s
17 A f f i c h e r ( " E r r e u r : l a l o n g u e u r de l a c h a î n e
18 doit ê t r e comprise entre 2 et 8 " ) ;
19 s i n o n S i ( cons ( d)= v r a i e t d=f ) a l o r s
20 A f f i c h e r ( " Une c h a î n e ne peut pas commencer
21 e t s e t e r m i n e r par une même consonne " ) ;
22 sinon
23 A f f i c h e r ( " La c h a î n e e s t v a l i d e " ) ;
24 Fin S i
25 Fin

Vous aimerez peut-être aussi