14
Expressions logiques Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) www.zegour.uuuq.com email: [email protected]

Expressions logiques Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) email: [email protected][email protected]

Embed Size (px)

Citation preview

Page 1: Expressions logiques Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Expressions logiques

Pr ZEGOUR DJAMEL EDDINE

Ecole Supérieure d’Informatique (ESI)

www.zegour.uuuq.com

email: [email protected]

Page 2: Expressions logiques Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Sémantique des expressions logiques: Introduction

Les expressions logiques sont traitées de la même façon que les expressions arithmétiques

Ou est considéré comme + et – Et est considéré comme * et /

Objectif : découper l’expression en opérations élémentaires. (Expression devient un programme)

Il s’agit de générer les quadruplés.

Il s’agit d’insérer Les fonctions sémantiques quelque part dans les règles syntaxiques.

Aucune optimisation n’est considérée

Page 3: Expressions logiques Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Sémantique des expressions logiques : Quadruplés

Opérateurs binaires :

Oper= Op || Type , Op dans {Ou, Et } et Type = ‘B’ pour Booléen

B, C : pointeurs dans TABOB vers les opérandes

D : pointeur dans TABOB sur l’objet qui va contenir le résultat

Opérateurs unaires :

Oper dans {Non}

B : pointeur dans TABOB vers l’opérande

C : non utilisé

D : pointeur dans TABOB sur l’objet qui va contenir le résultat

(Oper, B, C , D )

(Oper, B, C , D )

Page 4: Expressions logiques Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Expressions logiques : Déclarations

Sep dans {:, Un, Une, Des}

Cste désigne une constante numérique entière

Idf désigne un identificateur

Opr dans { <, <=, >, >=, =, <> }

Opa dans { +, -, }

Opm dans { *, /, }

Sign dans {+, -}

Ou

Et

Page 5: Expressions logiques Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Expressions logiques : Déclarations

<Algo Z> [ ~Soit|Soient~ <Ps> ] Debut <Lis> Fin [;]

 

<Ps> <S>;{ [~Soit|Soient~] <S>;}*

 

<S> <Li>[Sep <Typ> ]

<Li> Idf {, Idf}*

<Typ> Entier |Booleen

Page 6: Expressions logiques Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Expressions logiques : Instructions

< Lis > < Inst > { ; < Inst > }*

 

<Inst> Idf := <Exp> |

  Lire ( Idf {, Idf }* ) |

  Ecrire (<Exp> {,<Exp>}* ) |

Page 7: Expressions logiques Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Expressions logiques : Expressions

<Exp> <Exps>[ Opr <Exps>]

 

<Exps> [Sign] <Terme> { Opa <Terme> }*

<Terme> <Facteur>{Opm <Facteur>}*

 

<Facteur> Idf | Cste | ( <Exp>) |

 

 Non <Facteur> | Vrai | Faux

Page 8: Expressions logiques Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Sémantique des expressions logiques : déclaration des variables booléennes

Pour chaque Identificateur déclaré comme BOOLEEN :

- Le mettre dans la table des symboles

- Lui attribuer une adresse relative et le mettre dans la table des objets (soit Pt son emplacement)

- Générer le quadruplé (‘DB’, Pt, , )

Page 9: Expressions logiques Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Sémantique des expressions logiques : Fonctions sémantiques

<Exp> <Exps>[ Opr <Exps> ] <Exps> <Terme>

{ Opa <Terme> }*

<Terme> <Facteur>{Opm <Facteur> }* 

<Facteur> Idf | Cste | ( <Exp>)

Non <Facteur> | Vrai | Faux  

F1

F2

F5F4

F6

F7 F8

F3 F3

Opm=‘ET’

Opa=‘OU’

Page 10: Expressions logiques Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Sémantique des expressions logiques : Fonctions sémantiques

F1

F2

Vérifier que l’identificateur Idf est déclaré, sinon Erreur. Soit Pt1 son emplacement dans TABOB. Retourner (Pt1)

Générer une variable temporaire dans TABOB. Soit Ptx son emplacement dans TABOB.Générer le quadruplet (‘Non’, pt1, , Ptx). Retourner (Ptx).

<Facteur>

<Facteur> Idf | Cste | ( <Exp>)

Non <Facteur> | ~Vrai | Faux~

F1

F2 F3

F3 Si la constante n’existe pas la mettre dans TABCONS et TABOB. Soit Pt1 son emplacement dans TABOB. Retourner (Pt1)

Page 11: Expressions logiques Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Sémantique des expressions logiques : Fonctions sémantiques

F4Sauvegarder l’opérateur dans une variable Op et le résultat de <Facteur> dans Temp1 (emplacement dans TABOB)

F5

Récupérer le résultat de <Facteur> dans Temp2 (emplacement dans TABOB). Vérifier l’incompatibilité des types de Temp1 et Temp2. Générer une variable temporaire dans TABOB. Soit Ptx son emplacement dans TABOB.Générer le quadruplet (Op, Temp1, Temp2, Ptx). Retourner (Ptx).

<Terme>

<Terme> <Facteur>{Opm <Facteur> }*F4 F5

Page 12: Expressions logiques Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Sémantique des expressions logiques : Fonctions sémantiques

F6Sauvegarder le résultat de <Terme> dans Temp1 (emplacement dans TABOB). Retourner (Temp1)

<Exps>

<Exps> <Terme> F6

Page 13: Expressions logiques Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Sémantique des expressions logiques : Fonctions sémantiques

F7Sauvegarder l’opérateur dans une variable Op

Récupérer le résultat de <Terme> dans Temp2 (emplacement dans TABOB). Vérifier l’incompatibilité des types de Temp1 et Temp2. Générer une variable temporaire dans TABOB. Soit Ptx son emplacement dans TABOB.Générer le quadruplet (Op, Temp1, Temp2, Ptx). Retourner (Ptx).

F8

<Exps> (suite)

{ Opa <Terme> }* F7 F8

Page 14: Expressions logiques Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Sémantique des expressions logiques : Exemple

soit a , b, c des booleens;

debut

a:=faux;b:=vrai;c:= faux;

ecrire( non(a ou b) et c)

fin

‘Faux’

‘Vrai’

TABCONS

0

1

En fin de compilation, programme source = table des quadruplés + TABOB + TABCONS + LONGZDD

‘L’ ‘B’ 0

‘L’ ‘B’ 1

‘L’ ‘B’ 2

‘C’ ‘B’ 0

‘C’ ‘B’ 1

‘X’ ‘B’ 4

‘X’ ‘B’ 5

‘X’ ‘B’ 6

0

1

2

TABOB6

LONGZDD

3

4

Quadruplés pour l’expression

‘OU’ 0 1 5

‘NON’ 5 6

‘ET’ 6 2 7

5

6

7