Vous êtes sur la page 1sur 24

Chapitre VI de type Analyse semantique et controle

erale Presentation gen par la Syntaxe Denition Dirigee de type Controle

Yousra Bendaly Hlaoui (ISITCOM)

Analyse semantique

2011-2012

1 / 22

erale Presentation gen

erale Presentation gen


es fondamentales du langage source a ` traduire Certaines propriet ` laide de la seule grammaire car elles ne peuvent etre decrites a dependent du contexte. Par exemple
on ne peut pas utiliser dans une instruction une variable qui na pas e declar au prealable, et ee on ne peut pas declarer deux fois une meme variable

de lanalyse semantique Le role est donc de verier ces contraintes. eral en meme ` Elle se fait en gen temps que lanalyse syntaxique, a ees dans les regles ` laide dactions semantiques inser de productions
par la Syntaxe (DDS). Denitions Dirigees

Yousra Bendaly Hlaoui (ISITCOM)

Analyse semantique

2011-2012

2 / 22

par la Syntaxe Denition Dirigee

par la Syntaxe Denition Dirigee

par la syntaxe (DDS) est un formalisme Une denition dirigee ` une production dune regle ` permettant dassocier des actions a de grammaire. Chaque symbole de de la grammaire (terminal ou non-terminal) ` possede un ensemble dattributs(c.a.d variables). ` ` Chaque regle de production de la grammaire possede un ` ensemble de regles semantiques qui permettent de calculer la aux symboles apparaissant dans la valeur des attributs associes production. ` Une regle semantique est une suite dinstructions algorithmiques
Elle peut contenir des affectations, des si-sinon, des instructions d afchage,...

Yousra Bendaly Hlaoui (ISITCOM)

Analyse semantique

2011-2012

3 / 22

par la Syntaxe Denition Dirigee

par la Syntaxe Denition Dirigee

Denition 1 par la syntaxe (DDS), la donnee On appelle denition dirigee ` dune grammaire et de son ensemble de regles semantiques. On notera X.a lattribut a du symbole X. Sil y a plusieurs symboles X dans une production :
on notera X(0) celui qui est en partie gauche. ` gauche de la partie droite. on notera X(1) celui qui est le plus a ` ` gauche de la partie droite. on notera X(2) celui qui est le deuxieme a ... ` droite de la partie droite. on notera X(n) celui qui est le plus a

Yousra Bendaly Hlaoui (ISITCOM)

Analyse semantique

2011-2012

4 / 22

par la Syntaxe Denition Dirigee

par la Syntaxe Denition Dirigee


Exemple 1 Soit la grammaire : S aSb|aS |cSacS |
Attributs : nba : calcul du nombre de a et nbc : calcul du nombre de c une DDS permettant de calculer ces attributs pourrait etre :
Production ` Regles semantiques S (0) .nba := S (1) .nba + 1 S aSb S (0) .nbc := S (1) .nbc S (0) .nba := S (1) .nba + 1 S aS
(0)

S (0) .nbc := S (1) .nbc S .nba := S (1) .nba + S (2) .nba + 1

S cSacS

S (0) .nbc := S (1) .nbc + S (2) .nbc + 2 S (0) .nba := 0 et S (0) .nbc := 0 //Le resultat nal est dans S .nba et S .nbc

S S S

Yousra Bendaly Hlaoui (ISITCOM)

Analyse semantique

2011-2012

5 / 22

par la Syntaxe Denition Dirigee

par la Syntaxe Denition Dirigee


Exemple 1 - Suite On peut dessiner un arbre syntaxique avec la valeur des deux attributs pour chaque symbole non terminal.
Calcul du nombre de a et de c pour acaacabb

4S 2

nba nbc

a c

3S 2 1S 0

b a c a
1S 0 0S 0

0S 0

Yousra Bendaly Hlaoui (ISITCOM)

Analyse semantique 2011-2012 6 / 22

par la Syntaxe Denition Dirigee

par la Syntaxe Denition Dirigee


Denition 2 un arbre syntaxique sur les On appelle arbre syntaxique decor e nuds duquel on rajoute la valeur de chaque attribut. pour levaluation Dans une DDS, il ny a aucun ordre impose des attributs Il ny a aucun ordre specique pour lexecution des actions semantiques Exemple 2 edent Reprenons lexemple prec avec une autre DDS qui ne ferait pas intervenir dattributs mais utiliserait de simples variables

Yousra Bendaly Hlaoui (ISITCOM)

Analyse semantique

2011-2012

7 / 22

par la Syntaxe Denition Dirigee

par la Syntaxe Denition Dirigee


Exemple 2 - Suite
Production S aSb S aS ` Regles semantiques nba++ nba++ nba++ S cSacS nbc+=2 S

` Cette DDS pose un gros probleme : ou ` initialiser les variables ?


` Si on le fait dans laction semantique de la regle S , rien ne ` executer nous oblige a cette initialisation AVANT les actions dincrementation des variables Pareil si on rajoute une production S S

Cette DDS nest valable : il faut utiliser des attributs


Yousra Bendaly Hlaoui (ISITCOM) Analyse semantique 2011-2012 8 / 22

par la Syntaxe Denition Dirigee

par la Syntaxe Denition Dirigee


Nous distinguons deux types dattributs selon leur fac on de es et les herit es calcul : les synthetis Denition 3 pour le non e lorsquil est calcule Un attribut est dit synthetis terminal de la partie gauche en fonction des attributs des symboles de la partie droite. la valeur dun attribut en un nud se Calcul : sur larbre decor e, ` dire que le calcule en fonction des attributs de ses ls. Cest a calcul de lattribut se fait des feuilles vers la racine. Utilisation Utilisation :
ees sont utilises intensivement en pratique : Les attributs synthetis yacc/bison lors dune analyse ascendante mais pas Ils sont facilement evalu es lors dune analyse descendante
Yousra Bendaly Hlaoui (ISITCOM) Analyse semantique 2011-2012 9 / 22

par la Syntaxe Denition Dirigee

par la Syntaxe Denition Dirigee


Exemple 3 edent, Dans lexemple prec nba et nbc sont des attributs es. synthetis Denition 4 nayant que des attributs synthetis es est Une grammaire attribuee dite S-attribuee. Exemple 4 de lexemple suivante specie La denition S-attribuee une contenant une calculatrice de bureau lisant une ligne dentree de chiffres, de parentheses, ` expression arithmetique composee ` de ligne n, puis des operateurs + et *, et suivie dun caractere imprime la valeur de lexpression.
Yousra Bendaly Hlaoui (ISITCOM) Analyse semantique 2011-2012 10 / 22

par la Syntaxe Denition Dirigee

par la Syntaxe Denition Dirigee


Exemple 4 - Suite e val de type entier a ` Cette denition associe lattribut synthetis chacun des non-terminaux E, T et F.
Production E E +T E T T T F T F F (E ) F chiffre E En ` Regle semantique E (0) .val := E (1) .val + T (0) .val E (0) .val := T (0) .val T (0) .val := T (1) .val F (0) .val T (0) .val := F (0) .val F (0) .val := E (0) .val F (0) .val := chiffre.vallex Imprimer(E.val)

Yousra Bendaly Hlaoui (ISITCOM)

Analyse semantique

2011-2012

11 / 22

par la Syntaxe Denition Dirigee

pour 3*5+4n Arbre syntaxique decor e


E n

E.val =19 E.val =15 T.val =15 T.val =3 F.val =3 Chiffre.vallex =3


Yousra Bendaly Hlaoui (ISITCOM) Analyse semantique

T.val =4 F.val =4

F.val =5

Chiffre.vallex =4

Chiffre.vallex =5

2011-2012

12 / 22

par la Syntaxe Denition Dirigee

par la Syntaxe Denition Dirigee


Denition 5 a ` partir des attributs e lorsquil est calcule Un attribut est dit herit du non terminal de la partie gauche, et eventuellement des attributs dautres symboles de la partie droite. la valeur dun attribut a ` un nud se calcule en Sur larbre decor e, ` ` : le calcul de lattribut se fonction des attributs des freres et du pere fait de la racine vers les feuilles. Denition 6 nayant que des attributs herit es et telle Une grammaire attribuee ` que ces attributs ne dependent pas des attributs des freres droits L-attribuee est appelee peuvent etre Les attributs dune grammaire L-attribuee facilement lors dune analyse descendante. evalu es
Yousra Bendaly Hlaoui (ISITCOM) Analyse semantique 2011-2012 13 / 22

par la Syntaxe Denition Dirigee

par la Syntaxe Denition Dirigee


es Exemple 5 - attributs herit par le non-terminal D dans la DDS Une declaration engendree entier ou reel, suivi dune liste suivante consiste un mot cle didenticateurs.
Production DT L T entier el T re ` Regle semantique L(0) .typeh := T (0) .type T (0) .type := entier el T (0) .type := re L(1) .typeh := L(0) .typeh L L , id AjouterType(id.entree,L.typeh) L id AjouterType(id.entree,L.typeh)

Yousra Bendaly Hlaoui (ISITCOM)

Analyse semantique

2011-2012

14 / 22

par la Syntaxe Denition Dirigee

e Arbre syntaxique avec un attribut herit


D

T.type =rel rel

L.typeh =rel L.typeh =rel

,
id2

id3

L.typeh =rel id1

Yousra Bendaly Hlaoui (ISITCOM)

Analyse semantique

2011-2012

15 / 22

par la Syntaxe Denition Dirigee

par la syntaxe Schema de traduction dirige


Denition 7 par la Syntaxe STDS est une Un Schema de Traduction Dirige DDS dans laquelle lordre dexecution des actions semantiques est impose. Exemple S {nba := 0}S S a{nba := 0}S Dans un STDS si lon a :S X {uneaction} Y ee apres ` que le sous-arbre syntaxique issu de X laction est execut e parcouru en profondeur et avant que celui issu de Y ne le aura et soit. yacc/bison permet de faire des STDS de G S-attribuees.
Yousra Bendaly Hlaoui (ISITCOM) Analyse semantique 2011-2012 16 / 22

de type Controle

de type Controle
Exemple 10 - Suite il faut verier Si le langage source est un langage type la dans les phrases du pertinence des types des objets manipules langage Exemple
En C on ne peut pas additionner un double et un char ou multiplier un int et un struct ` un double Certaines operations sont possibles : affecter un int a ` un int via des conversions implicites ou un char a

Yousra Bendaly Hlaoui (ISITCOM)

Analyse semantique

2011-2012

17 / 22

de type Controle

de type Controle
vericateur de type ` ` Un systeme de types est un ensemble de regles qui permettent dassigner des types aux diverses composantes dun programme. ` Un vericateur de types est une implantation dun systeme de types. Une verication des types faite par le compilateur est appelee ` lexecution statique tandis quune verication faite a par le dynamique. La verication programme lui-meme est appelee en temps a ` lexecution. dynamique ajoute une penalit e ` sil elimine Un systeme de types statique est bien fonde le besoin de verier les types dynamiquement en effectuant toutes les ` la compilation. verications a si le compilateur est en mesure de Un langage est fortement type correct) quil ne causera jamais garantir (pour un programme juge ` lexecution. derreurs de types a
Yousra Bendaly Hlaoui (ISITCOM) Analyse semantique 2011-2012 18 / 22

de type Controle

de type Controle
vericateur de type Considerons la syntaxe suivante pour nos programmes : P D ; E D D ; D | id : T T char | integer | array [ num ] of T | T E literal | num | id | E mod E | E [ E ]| E Les expressions de types que nous utiliserons pour faire la verication des types des programmes incluent les types de base char, integer et type error ainsi que les tableaux et les pointeurs.

Yousra Bendaly Hlaoui (ISITCOM)

Analyse semantique

2011-2012

19 / 22

de type Controle

de type Controle
Exemple er e par la grammaire suivante : Considerons le langage gen P D debut I n T.type)} D Var id : T ; D {ajoutertype(id.entree, T.type)} D Var id : T ; {ajoutertype(id.entree, T entier {T.type := entier} T reel {T.type := reel} I id := E ; I {Si compatible(cherchertype(id.entree), E.type) alors vide sinon erreurdetype} I id := E ; {Si compatible(cherchertype(id.entree), E.type) alors vide sinon erreurdetype} |1 } E id {E.type := cherchertype(id.entree) E nb {E.type := entier} E nbr {E.type := reel}
Yousra Bendaly Hlaoui (ISITCOM) Analyse semantique 2011-2012 20 / 22

de type Controle

de type Controle
Exemple Analysons le programme suivant : Var a : entier; Var b : reel; debut b := 2.23; a := b; fin

Yousra Bendaly Hlaoui (ISITCOM)

Analyse semantique

2011-2012

21 / 22

de type Controle

de type Controle

debut

fin

Var Var a : entier; Var b : reel; debut b := 2.23; a := b; fin

id

D id := E

entier

Var

id : T reel

; nbr id

:=

E id

Yousra Bendaly Hlaoui (ISITCOM)

Analyse semantique

2011-2012

22 / 22

de type Controle

de type Controle

P Mots cls debut fin var Var Var a : entier; Var b : reel; debut b := 2.23; a := b; fin id : T ; D id := E ; D debut I fin N 1 2 3 I lexm e a b type entier reel

entier

Var

id : T reel

; nbr id

:=

E id

Yousra Bendaly Hlaoui (ISITCOM)

Analyse semantique

2011-2012

22 / 22

de type Controle

de type Controle

P Mots cls debut fin var Var Var a : entier; Var b : reel; debut b := 2.23; a := b; fin id : T.t:= T entier entier Var ; D id := E E.t:= reel ; I I.t:=erreur_de_type D debut I.t:= I vide fin N 1 2 3 lexme a b type entier reel

id : T T.t:= rel reel

; nbr id

:=

E E.t:= reel id

Yousra Bendaly Hlaoui (ISITCOM)

Analyse semantique

2011-2012

22 / 22

Vous aimerez peut-être aussi