Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parRogier Remond Modifié depuis plus de 9 années
1
Structures de contrôle Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) www.zegour.uuuq.com email: d_zegour@esi.dzd_zegour@esi.dz
2
Structures de contrôle : Objectif Il s’agit de traduire les structures TANTQUE, POUR et SI-SINON en opération de bas niveau avec uniquement les branchements conditionnels et inconditionnels
3
Sémantique des structures de contrôle : Quadruplés Quadruplé relatif au branchement conditionnel ‘si exp aller à Et1 sinon aller à Et2 fsi’ B : pointeur dans TABOB vers le résultat de exp C : Et1 (pointeur dans table des quadruplés: TABQUAD) D : Et2 (pointeur dans TABQUAD) Quadruplé relatif au branchement inconditionnel ‘Aller à Et1’ B : Et1 (pointeur dans TABQUAD) C et D non utilisé (‘Br’, B, C, D ) (‘B’, B, C, D )
4
Structures de contrôle : Déclarations Sep dans {:, Un, Une, Des} Cste désigne une constante numérique entière Chaîne : chaîne de caractères Idf désigne un identificateur Opr dans {, >=, =, <> }; Opa dans { +, -, Ou } Opm dans { *, /, Et }; Sign dans {+, -}
5
Structures de contrôle : Déclarations [ ~Soit|Soient~ ] Debut Fin [;] ;{ [~Soit|Soient~] ;}* [Sep ] Idf {, Idf}* Entier | Booleen | Chaine | Car
6
Structures de contrôle : Instructions { ; }* Idf := | Lire ( Idf {, Idf }* ) | Ecrire ( {, }* ) | Tantque [ : ] Fintantque | Si [:] [Sinon ] Fsi | Pour Idf:=, [, ][:] Finpour
7
Structures de contrôle : Expressions [ Opr ] [Sign] { Opa }* {Opm }* Idf | Cste | ( ) | Non | Vrai | Faux | Chaine
8
Sémantique de la boucle ‘Tantque’ : Fonctions sémantiques Tantque [ : ] Fintantque F1F2 F3 Soit Ptquad le pointeur du dernier quadruplé généré. Sauvegarder Ptquad+1 dans Sauv. F1 Soit Temp le résultat de (emplacement dans TABOB). Si son type n’est pas booléen : Erreur. Générer le quadruplet (‘B’, Temp, Ptquad+2, X ). Sauvegarder son pointeur dans Sauv2 F2 Générer le quadruplet (‘Br’, Sauv,, ). Remplacer X par Ptquad + 1 dans le quadruplé Sauv2 F3
9
Sémantique de la boucle ‘Tantque’ : Exemple Soit i,s, n des entiers; debut lire(n); i :=1; s := 0; tq i <= n s := s+i;i := i +1; ftq; ecrire(s) fin ‘0’ ‘1’ TABCONS 0 1 En fin de compilation, programme source = table des quadruplés + TABOB + TABCONS + LONGZDD ‘L’‘E’0 ‘L’‘E’1 ‘L’‘E’2 ‘C’‘E’0 ‘C’‘E’1 ‘X’‘B’3 ‘X’‘E’4 ‘X’‘E’5 0 1 2 TABOB 6 LONGZDD 3 4 (Quadruplés pour le ‘Tantque’) … ‘<=’035 ‘B’5813 ‘+E’106 ‘:=‘16 ‘+E’047 ‘:=‘07 ‘Br’6 … 5 6 7 6 13 TABQUAD 8
10
Sémantique de la boucle ‘Pour’ : Fonctions sémantiques Pour Idf:=, [, ][:] Finpour F1F2F3 Si Idf n’est pas déclaré : Erreur. Si le type de Idf n’est entier : Erreur. Soit Ptidf son pointeur dans TABOB F1 Soit Temp le résultat de (emplacement dans TABOB). Si son type n’est pas entier : Erreur. Générer le quadruplet (‘:=’, Ptidf, 0, Temp ). F2 Soit Temp2 le résultat de (emplacement dans TABOB). Si son type n’est pas entier : Erreur F3 F4 F6 F5
11
Sémantique de la boucle Pour : Fonctions sémantiques Pour Idf:=, [, ][:] Finpour F1F2F3 Soit Temp3 le résultat de (emplacement dans TABOB). Si son type n’est pas entier : Erreur. F4 F6 F5
12
Sémantique de la boucle Pour : Fonctions sémantiques Pour Idf:=, [, ][:] Finpour F1F2F3 Cas où le pas existe : créer constante ‘0’; soit Ptcons son pointeur dans TABOB. Générer un temporaire booléen; soit Tb son pointeur dans TABOB. Générer le quadruplé (‘ =‘, Ptidf1, temp2,, Tb). Génerer le quadruplé (Br, Ptquad+3,,). Générer le quadruplé (‘<=‘, Ptidf1, temp2,, Tb). Générer le quadruplé(‘B’,Tb, Ptquad + 2, X). Sauvegarder son pointeur dans Sauv2. F5 F4 F6 F5
13
Sémantique de la boucle Pour : Fonctions sémantiques Pour Idf:=, [, ][:] Finpour F1F2F3 F4 F6 F5 Cas où le pas existe : Générer le quadruplé (‘+E‘, ptidf1, temp3, Ptidf). Générer le quadruplé(‘Br’, Sauv,,). Remplacer X par Ptquad + 1 dans le quadruplé Sauv2. F6
14
Sémantique de la boucle Pour : Exemple Soit i, s des entiers; debut s := 0; pour i := 1, 12, 3 s := s + i fpour; ecrire(s); fin ‘0’ ‘1’ ’12’ ‘3’ TABCONS 0 1 En fin de compilation, programme source = table des quadruplés + TABOB + TABCONS + LONGZDD ‘L’‘E’0 ‘L’‘E’1 ‘C’‘E’0 ‘C’‘E’1 ‘C’‘E’2 ‘C’‘E’3 ‘X’‘B’2 ‘X’‘B’3 ‘X’‘E’4 0 1 2 TABOB 5 LONGZDD 3 4 Quadruplés pour le ‘Pour’ … ‘:=’03 ‘<’526 ‘B’668 ‘>=‘047 ‘Br’8 ‘<=‘047 ‘B’71014 ‘+E’108 ‘:=‘18 ‘+E’050 ‘Br’3 … 5 6 7 2 3 13 3 8 4 5 6 7 8 9 10 11 12
15
Sémantique de la conditionnelle ‘Si-Sinon’ : Fonctions sémantiques Si [:] [Sinon ] Fsi F1 F2F3 Soit Temp le résultat de (emplacement dans TABOB). Si son type n’est pas booléen : Erreur.Générer le quadruplé (‘B’, Temp, Ptquad+2, X). Sauvegarder son pointeur dans Sauv F1 Générer le quadruplé (‘Br’, Y,,). Sauvegarder son pointeur dans Sauv2. Remplacer X par Ptquad + 1 dans le quadruplé Sauv. F2 Cas ou la partie ‘sinon’ existe : Remplacer Y par Ptquad + 1 dans le quadruplé Sauv2. Cas ou la partie ‘sinon’ n’existe pas : Remplacer X par Ptquad + 1 dans le quadruplé Sauv. F3
16
Sémantique de la conditionnelle ‘Si-Alors- Sinon’ : Exemple Soit a un entier; debut lire(a); si a = 0 : ecrire('nul') sinon si a >0 ecrire('positif') sinon ecrire('négatif') fsi fin ‘0’ ‘nul’ ’positif’ ‘négatif’ TABCONS 0 1 En fin de compilation, programme source = table des quadruplés + TABOB + TABCONS + LONGZDD ‘L’‘E’0 ‘C’‘E’0 ‘X’‘B’1 ‘C’‘S’1 ‘X’‘B’2 ‘C’‘S’2 ‘C’ 3 0 1 2 TABOB 3 LONGZDD 3 4 Quadruplés pour le ‘Si’ … ‘=’012 ‘B’246 ‘Ecr’11 ‘Br‘11 ‘>’014 ‘B‘4810 ‘Ecr’21 ‘Br’11 ‘Ecr‘31 … 5 6 2 3 2 3 4 5 6 7 8 9 10 0 3 4 5 TABCOMP
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.