14
Sémantique des déclarations 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 déclarations pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) email: [email protected][email protected]

Embed Size (px)

Citation preview

Page 1: Sémantique des déclarations pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Sémantique des déclarations 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 déclarations pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Sémantique des déclarations pour le langage Z minimal: Introduction

L’analyseur sémantique = ensemble de fonctions sémantiques déduites à partir de la définition du langage

Rôle des fonctions sémantiques : générer une forme intermédiaire en tenant compte des concepts prédéfinis(organisation de la mémoire, attribution des adresses, tables de compilation, … )

Il s’agit d’une forme très proche du langage machine : Quadruplets, Triplets, …

Les fonctions sémantiques sont insérées quelque part dans les règles syntaxiques.

Page 3: Sémantique des déclarations pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Sémantique des déclarations pour le langage Z minimal: Quadruplets

Le programme source est transformé et découpé en opérations élémentaires très proches du langage machine

Opération élémentaire = Quadruplet

Quadruplet = (A, B, C, D)

A : Code Opération

B, C, D : Paramètres de l’opération

Les paramètres de l’opération sont des pointeurs vers les tables de

compilation

Page 4: Sémantique des déclarations pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Sémantique des déclarations pour le langage Z minimal: Résultats de la phase sémantique

Quadruplés

Tables de compilation

+ =Forme intermédiaire

Page 5: Sémantique des déclarations pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Sémantique des déclarations pour le langage Z minimal: Analyse sémantique

Analyse syntaxique

Fonctions sémantiques

+ =Analyse sémantique

Page 6: Sémantique des déclarations pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Sémantique des déclarations pour le langage Z minimal: Quadruplés pour déclarations

Comme l’allocation des variables est dynamique,

Pour chaque déclaration de variable nous devons générer le quadruplet (A, B, C, D)

tel que

A est de la forme ‘D’+’type’ (Type est le type de la variable)

B : pointeur dans TABOB vers l’objet

C et D non utilisés

Pour le langage minimal, un seul type de quadruplé :

(‘DE’, B, , )

Page 7: Sémantique des déclarations pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Sémantique des déclarations pour le langage Z minimal: le problème

Où insérer les fonctions sémantiques dans l’analyseur syntaxique

pour faire les vérifications qu’il faut

et

générer pour chaque déclaration de variable le quadruplé correspondant à une déclaration ?

Page 8: Sémantique des déclarations pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Sémantique des déclarations pour le langage Z minimal: Syntaxe des déclarations

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

 

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

 

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

<Li> Idf {, Idf}*

<Typ> Entier

Sep dans { :, Un, Une, Des }

Page 9: Sémantique des déclarations pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Sémantique des déclarations pour le langage Z minimal: Définition sémantique

La partie déclaration consiste à définir l’ensemble des variables utilisées dans le programme source

Pour le langage Z minimal, seules les variables entières sont autorisées

Un identificateur ne doit pas désigner deux variables différentes

Le type peut ne pas être donné. Par défaut c’est Entier (Règle<S>)

Page 10: Sémantique des déclarations pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Sémantique des déclarations pour le langage Z minimal: Fonctions sémantiques

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

 

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

 

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

<Li> Idf {, Idf }*

<Typ> Entier

Sep dans { :, Un, Une, Des }

F1 F1

F3 F4F2

Page 11: Sémantique des déclarations pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Sémantique des déclarations pour le langage Z minimal: Fonctions sémantiques

F1Vérifier que l’identificateur Idf n’est pas déclaré, sinon Erreur (non dans L et non dans la table des symboles)

Sauvegarder l’identificateur Idf dans une liste L

< LI >

<Li> Idf {, Idf }*F1 F1

Page 12: Sémantique des déclarations pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Sémantique des déclarations pour le langage Z minimal: Fonctions sémantiques

F4

Pour chaque Idf dans L :

- 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é (‘D’+Type, Pt, , )

Par défaut le type est Entier. Initialiser donc une variable, soit Type, avec ‘E’ ( ‘Entier’)

F3Si le type est spécifié modifier la valeur de la variable Type avec le type spécifié

F2

< S >

<S> <Li>[Sep <Typ> ] F2 F3 F4

Page 13: Sémantique des déclarations pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Sémantique des déclarations pour le langage Z minimal : Exemple

Soit

A, B, C des Entiers;

Debut

A := 3;

B := 5;

C := 12;

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

‘C’ ‘E’ 0

‘C’ ‘E’ 1

‘C’ ‘E’ 2

0

1

2

TABOB

3

LONGZDD

0

1

2

Quadruplés pour les déclarations

‘DE’ 0

‘DE’ 1

‘DE’ 2

3

4

5

Page 14: Sémantique des déclarations pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Sémantique des déclarations pour le langage Z minimal : Implémentation

Module sur la table des quadruplés:

New_quadruple (P1,P2,P3,P4) Indice dans la table des quadruplés où le quadruplé est créé, -1 si Échec

Définir une limite pour la table des quadruplés

LimitQuad = une valeur arbitraire