Chapitre 6
Chapitre 6
Chapitre 6
Analyse semantique
2011-2012
1 / 22
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
Analyse semantique
2011-2012
2 / 22
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,...
Analyse semantique
2011-2012
3 / 22
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
Analyse semantique
2011-2012
4 / 22
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
Analyse semantique
2011-2012
5 / 22
4S 2
nba nbc
a c
3S 2 1S 0
b a c a
1S 0 0S 0
0S 0
Analyse semantique
2011-2012
7 / 22
Analyse semantique
2011-2012
11 / 22
T.val =4 F.val =4
F.val =5
Chiffre.vallex =4
Chiffre.vallex =5
2011-2012
12 / 22
Analyse semantique
2011-2012
14 / 22
,
id2
id3
Analyse semantique
2011-2012
15 / 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
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.
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
Analyse semantique
2011-2012
21 / 22
de type Controle
de type Controle
debut
fin
id
D id := E
entier
Var
id : T reel
; nbr id
:=
E id
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
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
; nbr id
:=
E E.t:= reel id
Analyse semantique
2011-2012
22 / 22