Expressions logiques Pr ZEGOUR DJAMEL EDDINE Ecole Suprieure

  • Slides: 14
Download presentation
Expressions logiques Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) http: //zegour. esi. dz/

Expressions logiques Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) http: //zegour. esi. dz/ email: d_zegour@esi. dz

Sémantique des expressions logiques: Introduction Les expressions logiques sont traitées de la même façon

Sémantique des expressions logiques: Introduction Les expressions logiques sont traitées de la même façon que les expressions arithmétiques n Ou est considéré comme + et – Et est considéré comme * et / n n Objectif : découper l’expression en opérations élémentaires. (Expression devient un programme) n Il s’agit de générer les quadruplés. n Il s’agit d’insérer Les fonctions sémantiques quelque part dans les règles syntaxiques. n Aucune optimisation n’est considérée

Sémantique des expressions logiques : Quadruplés Opérateurs binaires : (Oper, B, C , D

Sémantique des expressions logiques : Quadruplés Opérateurs binaires : (Oper, B, C , D ) 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, B, C , D ) 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

Expressions logiques : Déclarations Sep dans {: , Une, Des} Cste désigne une constante

Expressions logiques : Déclarations Sep dans {: , Une, Des} Cste désigne une constante numérique entière Idf désigne un identificateur Opr dans { <, <=, >, >=, =, <> } Opa dans { +, -, } Ou Opm dans { *, /, } Et Sign dans {+, -}

Expressions logiques : Déclarations <Algo Z> <Ps> <S> [ ~Soit|Soient~ <Ps> ] Debut <Lis>

Expressions logiques : Déclarations <Algo Z> <Ps> <S> [ ~Soit|Soient~ <Ps> ] Debut <Lis> Fin [; ] <Li>[Sep <Typ> ] <Li> Idf {, Idf}* <Typ> Entier | Booleen <S>; { [~Soit|Soient~] <S>; }*

Expressions logiques : Instructions < Lis > <Inst> < Inst > { ; <

Expressions logiques : Instructions < Lis > <Inst> < Inst > { ; < Inst > }* Idf : = <Exp> | Lire ( Idf {, Idf }* ) | Ecrire (<Exp> {, <Exp>}* ) |

Expressions logiques : Expressions <Exp> <Exps> <Terme> <Facteur> <Exps>[ Opr <Exps>] [Sign] <Terme> {

Expressions logiques : Expressions <Exp> <Exps> <Terme> <Facteur> <Exps>[ Opr <Exps>] [Sign] <Terme> { Opa <Terme> }* <Facteur>{Opm <Facteur>}* Idf | Cste | ( <Exp>) | Non <Facteur> | Vrai | Faux

Sémantique des expressions logiques : déclaration des variables booléennes Pour chaque Identificateur déclaré comme

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, , )

Sémantique des expressions logiques : Fonctions sémantiques <Exp> <Exps>[ Opr <Exps> ] <Terme> F

Sémantique des expressions logiques : Fonctions sémantiques <Exp> <Exps>[ Opr <Exps> ] <Terme> F 6 Opm=‘ET’ Opa=‘OU’ F 7 F 8 { Opa <Terme> }* <Terme> F 4 F 5 <Facteur>{Opm <Facteur> }* <Facteur> F 1 Idf | Cste | ( <Exp>) F 2 Vrai F 3 | Faux Non <Facteur> | F 3

Sémantique des expressions logiques : Fonctions sémantiques <Facteur> Idf | Cste | ( <Exp>)

Sémantique des expressions logiques : Fonctions sémantiques <Facteur> Idf | Cste | ( <Exp>) F 1 F 2 F 3 Non <Facteur> | ~Vrai | Faux~ F 1 Vérifier que l’identificateur Idf est déclaré, sinon Erreur. Soit Pt 1 son emplacement dans TABOB. Retourner (Pt 1) F 2 Générer une variable temporaire dans TABOB. Soit Ptx son emplacement dans TABOB. Générer le quadruplet (‘Non’, pt 1, , Ptx). Retourner (Ptx). F 3 Si la constante n’existe pas la mettre dans TABCONS et TABOB. Soit Pt 1 son emplacement dans TABOB. Retourner (Pt 1) <Facteur>

Sémantique des expressions logiques : Fonctions sémantiques <Terme> F 4 F 5 <Facteur>{Opm <Facteur>

Sémantique des expressions logiques : Fonctions sémantiques <Terme> F 4 F 5 <Facteur>{Opm <Facteur> }* F 4 Sauvegarder l’opérateur dans une variable Op et le résultat de <Facteur> dans Temp 1 (emplacement dans TABOB) F 5 Récupérer le résultat de <Facteur> dans Temp 2 (emplacement dans TABOB). Vérifier l’incompatibilité des types de Temp 1 et Temp 2. Générer une variable temporaire dans TABOB. Soit Ptx son emplacement dans TABOB. Générer le quadruplet (Op, Temp 1, Temp 2, Ptx). Retourner (Ptx). <Terme>

Sémantique des expressions logiques : Fonctions sémantiques <Exps> <Terme> F 6 Sauvegarder le résultat

Sémantique des expressions logiques : Fonctions sémantiques <Exps> <Terme> F 6 Sauvegarder le résultat de <Terme> dans Temp 1 (emplacement dans TABOB). Retourner (Temp 1) <Exps>

Sémantique des expressions logiques : Fonctions sémantiques { Opa <Terme> }* F 7 F

Sémantique des expressions logiques : Fonctions sémantiques { Opa <Terme> }* F 7 F 8 Sauvegarder l’opérateur dans une variable Op Récupérer le résultat de <Terme> dans Temp 2 (emplacement dans TABOB). Vérifier l’incompatibilité des types de Temp 1 et Temp 2. Générer une variable temporaire dans TABOB. Soit Ptx son emplacement dans TABOB. Générer le quadruplet (Op, Temp 1, Temp 2, Ptx). Retourner (Ptx). <Exps> (suite)

Sémantique des expressions logiques : Exemple soit a , b, c des booleens; debut

Sémantique des expressions logiques : Exemple soit a , b, c des booleens; debut 0 ‘Faux’ 0 ‘L’ ‘B’ 0 1 ‘Vrai’ 1 ‘L’ ‘B’ 1 TABCONS 2 ‘L’ ‘B’ 2 3 ‘C’ ‘B’ 0 4 ‘C’ ‘B’ 1 5 ‘X’ ‘B’ 4 6 ‘X’ ‘B’ 5 7 ‘X’ ‘B’ 6 a: =faux; b: =vrai; c: = faux; ecrire( non(a ou b) et c) fin … 6 LONGZDD ‘OU’ 0 ‘NON’ 5 ‘ET’ 6 1 5 6 2 7 TABOB … Quadruplés pour l’expression En fin de compilation, programme source = table des quadruplés + TABOB + TABCONS + LONGZDD