• Aucun résultat trouvé

Les expressions régulières : Exercice n°1 :

N/A
N/A
Protected

Academic year: 2022

Partager "Les expressions régulières : Exercice n°1 :"

Copied!
11
0
0

Texte intégral

(1)

Centre Universitaire de Bordj Bou Arreridj Année Universitaire : 2007/2008 Département de l’informatique

Spécialité : Ingénieur en informatique " 4ième année"

Module : Compilation

Les expressions régulières : Exercice n°1 :

Décrire les langages dénotés par les expressions régulières suivantes : a- 0(0/1)*0

b- aab(a/b)*(bb/aa)*

c- a(a/b)*b d- ((ε/b)a*)*

e- ((aa)*a f- (a/b)*(c/d)*

Exercice N° 2

Soit l’expression régulière (a/ab)(c/bc)

Donner deux expressions régulières décrivant le même langage Exercice N°3

Donner une expression régulière décrivant : a- Les mots sur {a,b,c} qui commencent par b

b- Les mots sur {a,b,c} qui contiennent exactement 3 a c- Les mots sur {a,b,c} qui contiennent au moins 3a d- Les mots sur {a,b,c} qui contiennent au plus 3a

e- Les mots sur {a,b,c} qui contiennent le facteur babb au moins 2 fois f- Les mots sur {a,b,c} qui ne contiennent pas 2a consécutifs

g- Les mots sur {a,b,c} qui ne contiennent pas le facteur ab Exercice N° 4

Donner une expression régulière décrivant:

a- Les nombres entiers multiples de 5.

b- Les nombres binaires.

c- Les nombres hexadécimaux.

d- Toutes les chaines de 0 et de 1 avec un nombre pair de 0 et un nombre impair de 1

SI TU VEUX TU PEUX

Qui ne veut pas quand il peut, ne peut pas quand il veut

(2)

Département de l’informatique

Spécialité : Ingénieur en informatique " 4ième année"

Module : Compilation

Les automates finis Exercice N° 1 :

Soit l’automate δ a b c

0 0,1 3

1 2,4

2 3 0,4

3 3

4 1

Les mots : abc, baabc, aabcbcab, abcabcca appartiennent- ils au langage reconnu par l’automate ? Exercice N°2 : On considère l’AFN suivant :

Donner une expression régulière correspondant au langage qu’il reconnait

Exercice N°3 : construire les automates finis non déterministes reconnaissant les expressions régulières suivantes :

a- (a|b)*a(a|b) b- a(b/ c)*

c- Les mots sur {0,1}tels que chaque 1est suivi immédiatement d’un 0 Exercice N°5 : Déterminiser l’AFN suivant : q0={0} et F{3}

(3)

Exercice N°6 : donnez le langage reconnu par cet AFN puis déterminisez-le et minimisez-le si nécessaire

De la discussion jaillit la lumière

(4)

Département de l’informatique

Spécialité : Ingénieur en informatique " 4ième année"

Module : Compilation

Analyse syntaxique descendante

Exercice N° 1 :Soit la grammaire G suivante : Z  XYZ / d

Y  c /ϵ X  Y / a

Calculez les ensembles Premier et Suivant.

Exercice N° 2 :Considérer la grammaire G suivante : S a/b/(T)

T T,S/S

1. La grammaire est elle LL(1) ?

2. Eliminer la récursivité à gauche et factoriser si nécessaire.

3. Monter que la grammaire obtenue en 2 est LL(1) , donner sa table d’analyse.

4. Expliciter le comportement de l’analyseur sur le mot(a,(b,a),a).

Exercice N° 3 : soit la grammaire des expressions booléennes : A A ou B / B

B B et C / C

C non C/(A)/ vrai / faux

1. Eliminer la récursivité à gauche et factoriser si nécessaire.

2. Donner sa table d’analyse de la nouvelle grammaire. Est-elle LL(1) ? ,

3. Expliciter le comportement de l’analyseur sur le mot : non (vrai ou faux) et vrai Exercice N° 4 : Soit la grammaire G suivante :

S  SxXS / y X  ySX / x /y / ϵ

1 : Eliminez la récursivité à gauche et factorisez si nécessaire.

2 : Donnez la table d’analyse de la nouvelle grammaire Est-elle LL(1). ?

Quand on veut chercher un abri, il faut choisir l’ombre d’un grand arbre

(5)

Centre Universitaire de Bordj Bou Arreridj Année Universitaire : 2007/2008 Département de l’informatique

Spécialité : Ingénieur en informatique " 4ième année"

Module : Compilation

Analyse syntaxique ascendante

Exercice N° 1

Soit la grammaire suivante : S  BB

B  aB / b

1. Construire la table d’analyse SLR pour cette grammaire, Est-elle SLR ? 2.Explicitez le comportement de l’analyseur sur la chaine aabaab

Exercice N° 2

Soit la grammaire :

S -> A | xb A -> aAb | B B -> x

Trouvez les tables Action, Goto et l’automate LR(1) de cette grammaire.

Analyser la chaine axbb Exercice N°3

Considérer la grammaire : S AS /b

A SA /a

1. La grammaire est-elle SLR(1) ? si oui construire la table d’analyse SLR(1) 2. Cette grammaire est-elle LR(1), LALR(1)

Exercice N° 4

Soit G la grammaire suivante : SaAd / bBd/ aBe / bAe

Ac Bc

1. Cette grammaire est-elle LR(1)?

2. Cette grammaire est-elle LALR(1)?

3. Cette grammaire est-elle SLR(1)?

“With money you can buy a clock but not time, with money you can buy a book but not knowledge”

(6)

Département de l’informatique

Spécialité : Ingénieur en informatique " 4ième année"

Module : Compilation

Analyse par précédence d’opérateurs

Exercice N° 1 :Considérons la grammaire:

S  (L) /a L  S,S / S

-soit la table de relations de précédence d’opérateurs pour cette grammaire : a ( ) , #

a > > >

( < < = <

) > > >

, < < > >

# < <

1. en utilisant les relations de précédence , analyser la chaine : (a,(a,a)) Exercice N° 2 : Considérons la grammaire:

exprb -> exprb ou termeb| termeb termeb -> termeb et facteurb| facteurb

facteurb -> non facteurb / (exprb) / vrai / faux

- Construire les relations de précédence pour cette grammaire.

- Analyser la chaine non ( vrai ou faux), en utilisant les relations de précédence.

Utilisation des grammaires ambiguë :

Exercice N°3 : Considérer la grammaire : E E sub E sup / E sub E/ E sup E/{E} / c

1- Construire la tables d’analyse SLR( 1) pour cette grammaire.

2- En donnant à sub et sup des priorités égales et en les faisant associatifs à droite, résoudre les conflits d’actions qui apparaissent dans la table SLR(1).

Exercice N° 4 : considérer la grammaire des expressions booléennes suivantes : EE and E / E or E/ not E / (E)/ id

1-Cette grammaire est-elle ambiguë? Pourquoi ?

2-Construire la tables d’analyse SLR( 1) pour cette grammaire.

3-Si l’ordre croissant de précédence des opérateurs est or ;not, and( or< not < and) et si les opérateurs or et and sont associatifs à gauche , résoudre les conflits d’actions qui apparaissent dans la table SLR(1).

« the pessimist sees difficulty in every opportunity, the optimist sees the opportunity in every difficulty »,

(7)

Centre Universitaire de Bordj Bou Arreridj Année Universitaire : 2007/2008 Département de l’informatique

Spécialité : Ingénieur en informatique " 4ième année"

Module : Compilation

Exercice 1 :

Considérons la grammaire : E L

L LB\B B 0 \ 1

Cette grammaire engendre des chaines binaires.

Calculer le nombre décimal représenté par la chaine - En utilisant des attributs hérités

- En utilisant des attributs synthétisés.

-pour permettre le calcul des nombres réels nous remplaçons la première règle par la suivante : E L.L \ L

Utiliser des attributs synthétisés pour calculer le nombre décimal représenté par la chaine binaire ( par exemple 1011.101 représente le nombre 11.625)

- Donner un arbre décoré pour 1011.101 Exercice 2 :

Soit la grammaire suivante E  E + T | T

T  nb.nb | nb

Cette grammaire engendre des expressions arithmétiques formées de constantes entières et réelles.

et de l’opérateur + Lorsque l’on additionne ,entiers, le résultat est un entier,sinon c’est un réel.

- Ecrire une définition dirigée par la syntaxe DDS qui détermine le type de chaque sous_

expression.

- Donner un arbre syntaxique décoré pour la chaine 5+6.1+3

Exercice 3 : Soit la grammaire G1 suivante engendrant des listes à la schème, d’axiome L, d’alphabet terminal {a, ( , ) } et dont les règles sont :

L −→ ( S ) | a S −→ L S |

Question 2 : La grammaire G1 est-elle SLR(1) ? Justifier.

Question 3 : Détailler le déroulement de l’analyseur SLR(1) pour la grammaire G1 sur l’entrée

"( a ( ) ) $".

Question 4 : Décorer la grammaire G1 d’actions sémantiques permettant de déterminer si une liste contient au moins une occurrence de la liste vide. Par exemple, la réponse doit être positive pour les listes ( )ou ( a ( a ( ) ) a ( a ) ) ; elle est négative pour ( a ( a ( a a) ) a ( a ) ).

« La simplicité est le fruit d’un long travail »,

(8)

Département de l’informatique

Spécialité : Ingénieur en informatique " 4ième année"

Module : Compilation

Exercice 1 : Ecrire une expression de type pour les types suivants :

a) Un tableau de pointeurs vers des réels, dont les indices sont compris entre 1 et 100.

b) Un tableau à deux dimensions dont les lignes sont indicées de 0 à 9 et les colonnes de -10 à 10.

c) Les fonctions dont le domaine est les fonctions des entiers vers des pointeurs vers des entiers, et dont le codomaine est les structures composées d’un entier et d’un caractère.

Exercice 2 : La grammaire ci-dessous définit des listes de listes. L’interprétation des symboles est la même que celle du cours, avec l’ajout du type liste , qui indique une liste d’éléments dont le type T est placé après.

P D ; E

D D ; D| id : T

T liste de T| caractère | entier E ( L) | littéral | nb| id

L E, L | E

Ecrire des règles de traduction similaires à celles vue en cours permettant de déterminer le type des expressions ( E ) et celui des listes ( L).

Exercice 3 : A l’aide du schéma de traduction vue en cours , calculer les types des expressions dans les fragments de programmes ci –dessous . Expliciter le type à chaque nœud de l’arbre syntaxique :

C : caractère ; i :entier ; C mod i mod 3

P : ^ entier ; a : tableau [ 10] d’entier ; a[ p^]

Exercice 4 : soit la déclaration suivante :

Type modele= pointeur ( tableau ( 10, pointeur(entier))) modele1= tableau ( 10, pointeur(entier))

Var X : modele

Y : pointeur( modele1)

Z : pointeur ( tableau ( 10, pointeur(entier))) O : pointeur(modele)

Lesquelles des variables ci- dessus sont structurellement équivalentes ? Lesquelles équivalentes par noms ?

Exercice 5: Exprimer le type des fonctions suivantes, à l’aide de variables de type :

a- La fonction Ref qui prend en argument un objet d’un type quelconque et retourne un pointeur vers cet objet.

b- Une fonction qui prend en argument un tableau d’éléments d’un type quelconque indicé par des entiers, et retourne un tableau dont les éléments sont des pointeurs vers les éléments du tableau donné.

" Le savoir que l'on ne complète pas chaque jour diminue tous les jours. "

(9)

Centre Universitaire de Bordj Bou Arreridj Année Universitaire : 2007/2008 Département de l’informatique

Spécialité : Ingénieur en informatique " 4ième année"

Module : Compilation

Exercice 1 : Représentation de code Traduire l’expression a * -(b + c)|(a + b) en a) un arbre abstrait

b) une notation postfixèe c) du code à 3 adresses

Exercice 2 : traduire en code postfixé et donner le DAG le programme suivant : A := b* c + b* -c

Exercice 3 : traduire en code postfixé le programme suivant : If ( j<= 100) then sum := sum + j ; j := j+1 else j:=100-j Exercice 4: traduire en code postfixé le programme suivant : Sum := 0 ;

J := 1 ;

while ( j<= 100) do begin sum := sum + j ; j := j+1 end Exercice 5 :soit les instructions C suivantes :

X =1 ; Y= a*b +c ; X= x+1 ;

Y= a/ (b+c) – d / e +f

Produire le code à trois adresses implantant ces instructions.

Exercice 6: soit le fragment de code C suivant : z =0 ;

Do { x++ ; if ( y<10){ z= z+2 * x ; h= 5 ;}

Else h= -5;

Y+=h; } while ( x<= 50 && z<=5 * y );

Ecrire le code à trois adresses

Exercice 7 : Traduire l’expression –( a +b ) * ( c + d) + ( a+b+c) en a) Quadruplets ;

b) Triplets ;

c) Triplets indirects

Exercice 8 : traduire en quadruplets l’expression booléenne suivantes : a=b or b>c and not ( d >a)

Exercice 9: en utilisant les schéma de traduction vus en cours, traduire le programme suivant en quadruplets:

While a < c and b <c do If a=1 then c:= c + 1

Else while a <= d do a:= a +2;

La beauté est une demi-faveur donnée par dieu ; L’intelligence en est entière.

(10)

Département de l’informatique

Spécialité : Ingénieur en informatique " 4ième année"

Module : Compilation

Exercice N° 1 : Soit le fragment de code suivant : t1= t0

t2= 4 t3= t1*t1

Appliquer une séquence de transformations sur ce code de façon à minimiser la taille de code résultant Exercice N2 : Considérer la procédure suivante de multiplication de matrices :

Pour i :=1 à n faire

Pour j :=1 à n faire

Pour k := 1 à n faire c[i,j] :=c[i,j]+ a[i,k] * b[k,j]

1- Supposons que la taille des éléments des tableaux soit égales à 4 octets, produire le code à trois adresses pour ce programme.

2- Déterminer le graphe de flow de contrôle 3- déterminer les boucles du graphe

4- Déplacer le code invariant à l’extérieur des boucles.

5- Réduire la force des opérateurs dans chaque boucle

6- Eliminer les sous expressions communes pour chaque bloc de base.

Exercice N3 :

1- Calculer les ensembles Gen(b) et Kill(b) pour chacun des blocs du programme.

2- Calculer les In(b) et Out(b) pour chacun des blocs du programme.

3- Supprimer les calculs redondants (sous-expressions communes).

« De votre expérience, faite la différence » t4= t2*2

t5= t0 ^ 2 t6= t5 + t3 t7= t4 + t6

(11)

Références

Documents relatifs

Entrée(s) et sortie sont de type booléen, c'est à dire prennent leurs valeurs dans {true, false}. Utilisés principalement dans les instructions

Dans la table suivante, on fournit dans la case (i, j) la valuation i-adique de i dans la factorielle de j (ou val i (j!), pour i

The proceedings included the following presentations and discussions: an introduction to collection of road traffic injury data; progress in international road safety efforts;

Our feature construction and classification approach can be considered a simplification of the approach we used in the PAN 2017 AP shared task [11], since the winners of the PAN

[r]

Using a malaria vaccine. Harte and his group investigated whether specific monoclonal IgM antibodiescould be used to enhance the response to a blood-stagemurine malaria vacci ne,

The good news is that I’ve passed my BEM exam, and now I study at “El Ibrahim ” secondary school.. I like it but I have already been in trouble because I hate P.E

Note that either the si clause or the result clause may begin a sentence, but the same tenses remain specific to each clause ('Qu'est-ce que vous ferez demain si vous trouvez l'amour