Sémantique des expressions arithmétiques pour le langage Z minimal

14
Sémantique des expressions arithmétiques pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) http://zegour.esi.dz/ email: [email protected]

description

Sémantique des expressions arithmétiques pour le langage Z minimal. Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) http://zegour.esi.dz/ email: [email protected]. Sémantique des expressions arithmétiques pour le langage Z minimal: Introduction. - PowerPoint PPT Presentation

Transcript of Sémantique des expressions arithmétiques pour le langage Z minimal

Page 1: Sémantique des expressions arithmétiques pour le langage Z minimal

Sémantique des expressions arithmétiques pour le langage Z minimal

Pr ZEGOUR DJAMEL EDDINE

Ecole Supérieure d’Informatique (ESI)

http://zegour.esi.dz/

email: [email protected]

Page 2: Sémantique des expressions arithmétiques pour le langage Z minimal

Sémantique des expressions arithmétiques pour le langage Z minimal: Introduction

Nous considérons plutôt les expressions arithmétiques et relationnelles

Arithmétiques du genre (A+B)/C,

Relationnelles du genre (A+B) > C

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.

Page 3: Sémantique des expressions arithmétiques pour le langage Z minimal

Sémantique des expressions arithmétiques pour le langage Z minimal: Quadruplés

Opérateurs binaires :

Oper = Op || Type , Op dans {+, -, *, /} et Type = ‘E’ pour EntierB, C : pointeurs dans TABOB vers les opérandesD : pointeur dans TABOB sur l’objet qui va contenir le résultat

Opérateurs unaires :

Oper = Op || Type , Op dans {+, -} et Type = ‘U’ (Entier pris par défaut )B : pointeur dans TABOB vers l’opérandeC : 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: Sémantique des expressions arithmétiques pour le langage Z minimal

Sémantique des expressions arithmétiques pour le langage Z minimal: Quadruplés

Opérateurs binaires :

Oper = Op , Op dans {<, <=, >, >=, =, <>}

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

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

(Oper, B, C , D )

Page 5: Sémantique des expressions arithmétiques pour le langage Z minimal

Sémantique des expressions arithmétiques pour le langage Z minimal: Syntaxe

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

 

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

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

 

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

 

 

Cste désigne une constante numérique entièreIdf désigne un identificateurOpr dans { <, <=, >, >=, =, <> }; Opa dans { +, - }Opm dans { *, / }; Sign dans {+, -};

Page 6: Sémantique des expressions arithmétiques pour le langage Z minimal

Sémantique des expressions arithmétiques pour le langage Z minimal : Définition sémantique Une expression est une suite d’opérandes et d’opérateurs.

Les opérandes sont des variables et/ou des constantes.

La priorité des opérateurs est définie par la grammaire.

Pas de conversion, toute incompatibilité de type entraîne une erreur.

Le compilateur crée des variables temporaires pour ranger les résultats intermédiaires.

Le compilateur ne fait pas les optimisations ( Réduction du nombre de variables temporaires utilisées).

Page 7: Sémantique des expressions arithmétiques pour le langage Z minimal

Sémantique des expressions arithmétiques pour le langage Z minimal: Fonctions sémantiques<Exp> <Exps>[ Opr <Exps> ] <Exps> [Sign ]<Terme>

{ Opa <Terme> }*

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

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

F1 F2

F4F3

F5 F6

F7 F8

F9 F10

Page 8: Sémantique des expressions arithmétiques pour le langage Z minimal

Sémantique des expressions arithmétiques pour le langage Z minimal: Fonctions sémantiques

F1

F2

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

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

<Facteur>

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

Page 9: Sémantique des expressions arithmétiques pour le langage Z minimal

Sémantique des expressions arithmétiques pour le langage Z minimal: Fonctions sémantiques

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

F4

Récupérer le résultat de <Facteur> dans Temp2 (emplacement dans TABOB). Vérifier la compatibilité 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> }*F3 F4

Page 10: Sémantique des expressions arithmétiques pour le langage Z minimal

Sémantique des expressions arithmétiques pour le langage Z minimal: Fonctions sémantiques

F5

F6

Sauvegarder l’opérateur unaire dans une variable Op

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

<Exps>

<Exps> [Sign ]<Terme>F5 F6

Page 11: Sémantique des expressions arithmétiques pour le langage Z minimal

Sémantique des expressions arithmétiques pour le langage Z minimal: Fonctions sémantiques

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

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

{ Opa <Terme> }* F7 F8

<Exps>

Page 12: Sémantique des expressions arithmétiques pour le langage Z minimal

Sémantique des expressions arithmétiques pour le langage Z minimal: Fonctions sémantiques

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

F10

Récupérer le résultat de <Exps> 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).

<Exp>

<Exp> <Exps>[ Opr <Exps> ]F9 F10

Page 13: Sémantique des expressions arithmétiques pour le langage Z minimal

Sémantique des expressions arithmétiques pour le langage Z minimal : Exemple

SOIT

A , B , C DES ENTIERS ;

Res UN ENTIER ; DEBUT

A := 3 ; B := 5 ; C := 12 ;

Res := ( ( A+B ) / C)+(B-C ) ;

FIN

‘3’

‘5’

’12’

TABCONS

0

1

2

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

‘L’ ‘E’ 0

‘L’ ‘E’ 1

‘L’ ‘E’ 2

‘L’ ‘E’ 3

‘C’ ‘E’ 0

‘C’ ‘E’ 1

‘C’ ‘E’ 2

‘X’ ‘E’ 4

‘X’ ‘E’ 5

‘X’ ‘E’ 6

‘X’ ‘E’ 7

0

1

2

TABOB

8

LONGZDD

3

4

Quadruplés pour l’expression

‘+E’ 0 1 7

‘/E’ 7 2 8

‘-E’ 1 2 9

‘+E’ 8 9 10

5

6

7

8

9

10

Page 14: Sémantique des expressions arithmétiques pour le langage Z minimal

Sémantique des expressions arithmétiques pour le langage Z minimal : Implémentations

Modules sur la table des objets:

Génération de variables temporairesNew_temp (type) Indice dans la table des objet où l’objet est rangé , -1 si Échec

Vérification de la compatibilitéError_exp(Opérateur, Opérande1, Opérande2)

Détecte les erreurs sémantiques dans les expressions Retrouve les types de Operande1et Opérande2 Vérifie la compatibilité entre les types et la compatibilité entre Opérateur et type

Table des constantes: Nous supposons dans un premier temps : une table par procédure compilée

Mise_en_tabcons (constante) indice dans la table, -1 si echec