Vous êtes sur la page 1sur 2

Techniques de compilation

4ème année G. Informatique


Ecole Nationale des TD 1 Prof. Redouane Ezzahir
Sciences Appliquées Agadir
Université Ibn Zohr

Ex. 1 — Démontrez, à l’aide de la définition inductive des langages réguliers, que les deux
langages suivants sont réguliers (l’alphabet considéré est Σ = {0, 1}):
1. L’ensemble des mots composés d’un nombre arbitraire de 1, suivis de 01, suivis d’un
nombre arbitraire de 0.
2. L’ensemble des nombres binaires impairs.

Ex. 2 — Langages non réguliers


1. Démontrez que tout langage fini est régulier.
2. Le langage L = 0n 1n |n = 0, 1, 2, ... est-il régulier? Expliquez.

Ex. 3 — Caractériser les langages reconnus par les ER suivantes :


•E1 : (a + b)* −E2 : (a + b)(a + b + 0 + 1)∗ −E3 : (aa)*b(bb)*
•E4 : 0(0 + 1)*0 −E5 : ((e + 0)1*)* −E6 : 0*10*10*

Ex. 4 — Donner une expression rationnelle pour :


1. Le langage contenant les mots contenant un nombre pair de 0 et un nombre impair de 1.
2. Le langage ne contenant pas de mot avec le facteur 011

Ex. 5 — Simplifier les expressions rationnelles suivantes:


•E1 : (a*b*)*(a*b*)* −E2 : ab((ab*)* +(ba*)*)ba −E3 : (a* + b*)*
•E4 : (aa*ba + aaba + aba + ba) −E5 : ((a + aaaa)*b*)*

Ex. 6 — Donnez une expression régulière (définis sur l’alphabet = {0, 1}) qui accepte chacun
des langages suivants :
1.Toutes les chaînes qui se terminent par 00.
2.Toutes les chaînes dont le 10ème symbole, compté à partir de la fin de la chaîne, est un 1.
3.Ensemble de toutes les chaînes dans lesquelles chaque paire de 0 apparaît devant une paire
de 1.
4.Ensemble de toutes les chaînes ne contenant pas 101.
5.Tous les nombres binaires divisibles par 4

Ex. 7 — Determiniser les automates suivants :

automate 1 automate 2

1
Ex. 8 — Construire un automate reconnaissant l’expression rationnelle (a+b)*aa(a+b)*, le
déterminiser si nécessaire.
Ex. 9 — Determiniser et minimiser l’automate suivant :

Ex. 10 — Donner, pour chacun des langages suivants, un automate qui le reconnaît.
•L1 = { a*bb*}, L2 = { aa*bb*}
•L3 = { mots dans {a,b}* commençant par n b, n > = 0, finissant par un nombre pair de a}
•L4 = { mots dans {a,b}* commençant par ab et finissant par bb}
•L5 = { mots engendres par aa*bb* de longueur impaire}
•L6 = { mots dans {a,b}* n’ayant pas aa comme facteur}
•L7 = { mots dans {a,b}* de longueur paire} L8 = { mots dans {0,1}* dont l’écriture en
base 2 est un multiple de 3}

Ex. 11 — A quelle phase de la compilation peut-on détecter les erreurs suivantes?


•Identificateur mal formé en java ?
•Conflit de type sin("a")
•Variable non déclarée
•Commentaire non fermé
•Parenthèse non fermée
•Begin non fermé
•Mot réservé (if par exemple) utilisé comme identificateur
•Non-conformité entre le nombre de paramètres formels et effectifs

Vous aimerez peut-être aussi