COMPILATION
NOTION DE LA GRAMMAIRE
1ÈRE
PARTIE: DÉFINITION DE LA SYNTAXE
2ÈME
PARTIE: TRADUCTION DIRIGÉE PAR LA SYNTAXE
EMSI - 3ÈME
IIR
2
Notion de la Grammaire (1)
I- Définition de la syntaxe
1. La grammaire,
2. Arbre syntaxique,
3. Ambigüité d'une grammaire,
4. Associativité d'une grammaire,
5. Priorité d'une grammaire,
II- Traduction dirigée par la syntaxe
6. Définition,
7. Notation post fixée,
8. Définition dirigée par la syntaxe (DDS),
9. Schéma de traduction.
Compilation EMSI 3ème année IIR
Notion de grammaire (2)
Un langage de programmation peut être défini par:
1- La syntaxe du langage (la description de ses programmes).
2- La sémantique du langage (la signification des programmes)
 Pour spécifier la syntaxe d’un langage, nous
utilisons une grammaire hors contexte (notation BNF)
BNF: Backus Naur Form
3
I- Définition de la syntaxe
1- La grammaire:
La grammaire décrit d’une manière hiérarchique les
constructions du langage.
Elle est constituée d'une suite de règles.
Exemple1: soit l’instruction conditionnelle en PASCAL:
"if (exp) then instr else instr"
Pour spécifier cette instruction, nous utilisons une règle
structurelle appelée: production
instr if (exp) then instr else instr
4
1- La grammaire (1)
1/ instr if ( exp ) then instr else instr
if ( exp ) then instr
autre
2/ exp terme operel terme
terme
3/ terme id nb
Les terminaux sont: if,(,),then,else,operel,id,nb
Les non-terminaux sont: instr, exp , terme
L’ axiome est le non-terminal: instr
veut dire produit ou peut avoir la forme
5
1- La grammaire (2)
 Les éléments en rouge sont des unités lexicales ou terminaux.
 Les éléments définis à gauche des flèches sont appelés des non-terminaux.
 Nous avons 3 règles de grammaire.
 Chaque alternative dans une règle de grammaire est appelée: production
 Le premier symbole non-terminal de la grammaire est appelé axiome .
Nous disons que nous avons défini un langage par une
grammaire
6
7
1- La grammaire (3)
Définition:
Une grammaire hors contexte est constituée de:
 un ensemble de terminaux,
 un ensemble de non-terminaux,
 un ensemble de productions,
 un symbole de départ appelé axiome
1- La grammaire (4)
Exemple 2:
Soit les expressions composées de chiffres 0, 1,..., 9 et des signes ‘+’ et ‘-’.
La grammaire qui décrit la syntaxe de ce langage est donnée par:
1ère
forme:
liste liste + liste liste – liste chiffre
chiffre 0 1 2 …… 9
2ème
forme:
liste chiffre + liste chiffre – liste chiffre
chiffre 0 1 2 …… 9
3ème
forme:
liste liste + chiffre liste – chiffre chiffre
chiffre 0 1 2 …… 9
Les terminaux sont : + , - , 0 , 1, …. , 9
Les non-terminaux: liste et chiffre
L’axiome est liste
8
2- Arbre syntaxique (1)
Un arbre syntaxique décrit d’une manière hiérarchique les
constructions d’un langage et possède 4 propriétés:
 la racine de l’arbre est l’axiome de la grammaire,
 chaque feuille est un terminal de la grammaire,
 chaque nœud est un non-terminal,
 si A est le non-terminal d’un nœud intérieur et si les fils de ce nœud
sont de gauche à droite X1, X2, …., Xn alors :
A X1…. Xn est une production de la grammaire.
Les Xi sont des terminaux et des non-terminaux.
9
2- Arbre syntaxique (2)
Exemple: L’arbre syntaxique de l’expression " 9 – 5 + 2 " d’après la grammaire précédente.
1ère
forme:
liste liste + liste liste – liste chiffre
chiffre 0 1 2 …… 9 liste
liste + liste
liste - liste chiffre
chiffre chiffre 2
9 5
10
2- Arbre syntaxique (3)
Exemple: L’arbre syntaxique de l’expression "9 – 5 + 2" d’après la grammaire précédente.
2ème
forme :
liste chiffre + liste chiffre – liste chiffre
chiffre 0 1 2 …… 9 liste
chiffre - liste
9 chiffre + liste
5 chiffre
2
Cette grammaire est récursive à droite
11
2- Arbre syntaxique (4)
Exemple: L’arbre syntaxique de l’expression "9 – 5 + 2" d’après la grammaire précédente.
3ème
forme:
liste liste + chiffre liste – chiffre chiffre
chiffre 0 1 2 …… 9 liste
liste + chiffre
liste - chiffre 2
chiffre 5
9
Cette grammaire est récursive à gauche
12
3- Ambiguïté d’une grammaire
Une grammaire est dite ambigüe si elle peut donner plus d’un arbre syntaxique pour
la même phrase.
Exemple: "9-5+2"
1ère
forme: liste liste
liste + liste liste - liste
liste - liste chiffre chiffre liste + liste
chiffre chiffre 2 9 chiffre chiffre
9 5 5 2
Nous devons éviter l’utilisation d’une grammaire ambigüe, donc la 1ère
forme est à éviter.
Question: quel est le choix, de la grammaire, le plus approprié ( la 2ème
forme ou la 3ème
forme)?
13
4- Associativité des opérateurs (1)
La 2ème
forme favorise le + par rapport au - :
9-5+2 sera interprétée comme 9-(5+2)= 9-7=2
La 3ème
forme favorise le – par rapport au + :
9-5+2 sera interprétée comme (9-5)+2=4+2=6
Par convention: nous considérons l’interprétation de la 3ème
forme.
Définition:
Soit un opérande entouré de 2 opérateurs, s’il est traité en priorité par celui qui est à
sa gauche (à sa droite), on dit que cet opérateur est associatif à gauche (à droite).
Convention:
Dans la plus part des langages de programmation, les 4 opérateurs
arithmétiques «+,-,*,/» sont associatifs à gauche.
14
4- Associativité des opérateurs (2)
Autres types d'associativité :
- L'opérateur d'affectation est associatif à droite:
a = b = c est interprétée comme a=(b=c)
- Les opérateurs de relation ne sont pas associatifs:
en effet, les langages de programmation n'autorisent pas:
if (a < b < c)
Pour le cas du langage C, par exemple il faut écrire:
if (a<b && b<c)
15
5- Priorité des opérateurs (1)
Soit l'expression: 9 + 5 * 2
L'associativité ne résout pas le problème !
L'interprétation sera :
(9 + 5) * 2 (1)
ou 9 + (5 * 2) ! (2)
 Par convention, on favorise la 2ème
interprétation.
Nous considérons par convention que les opérateurs * et / sont prioritaires par rapport à
+ et -
Remarques:
- Pour deux opérateurs arithmétiques qui ont le même niveau de priorité,
on favorise l'associativité gauche.
- S'ils n'ont pas la même priorité, on favorise la priorité.
16
5- Priorité des opérateurs (2)
Question:
Construire une grammaire pour les expressions arithmétiques
constituées des chiffres, des expressions parenthèsées et des 4 opérateurs
arithmétiques +, -, * et / en tenant compte de l’associativité gauche des
opérateurs et de la priorité.
17
5- Priorité des opérateurs (3)
Question:
Construire une grammaire pour les expressions arithmétiques
constituées des nombres, des expressions parenthesées et des 4 opérateurs
arithmétiques +, -, * et / en tenant compte de l’associativité gauche des
opérateurs et de la priorité.
Réponse:
Nous définissons 3 non terminaux pour les 3 niveaux de priorités: E, T et F
La grammaire est:
E E + T E - T T
T T * F T / F F
F nb (E)
18
5- Priorité des opérateurs (4)
Exemple: arbre syntaxique de nb * (nb + nb)
E Lecture: En profondeur d'abord,
gauche-droite
T
T * F
F ( E )
nb E + T
T F
F nb
nb
19
Exercices : L'arbre syntaxique
20
Exemples: Soit la grammaire
Donnez les arbres syntaxiques de: E E + T | E – T | T
- "nb" T T * F | T / F | F
- "nb+nb" F nb | (E)
- "nb-nb+nb"
- "nb*nb"
- "nb+nb*nb"
- "(nb+nb)*nb"
Exercices : Les grammaires
Exercice 1:
1- Donnez une grammaire qui accepte les entiers non signés,
2- Donnez l'arbre syntaxique de: "2023".
21
Exercices : les grammaires
Exercice 2:
1- Donnez une grammaire qui accepte les entiers binaires,
2- Donnez l'arbre syntaxique de: "1011".
22
Exercices : les grammaires
Exercice 3:
1- Donner une grammaire qui accepte les déclarations des types simples en Java,
2- Donner un arbre syntaxique d'après cette grammaire pour la déclaration:
"float id, id, id;"
3- Donner une grammaire qui accepte les déclarations des types simples en Pascal,
4- Donner un arbre syntaxique d'après cette grammaire pour la déclaration:
"id, id, id : real;"
23
Exercices : les grammaires
Exercice 4: soit la grammaire du langage Lisp
- Soit la grammaire :
S (L) | a
L L , S | S
1- Quels sont les terminaux, les non terminaux et l'axiome ?
2- Donner les arbres syntaxiques des phrases suivantes :
(a,a) et (a,(a,a))
24
25
Notion de la Grammaire
II- Traduction dirigée par la syntaxe
1. Définition,
2. Notation post fixée,
3. Définition dirigée par la syntaxe (DDS),
4. Schéma de traduction.
II- La traduction dirigée par la syntaxe (TDS)
1- Définition:
C’est la traduction d’un langage guidée par une grammaire hors contexte à laquelle
on associe des règles sémantiques.
Il y’a 2 notations pour introduire les règles sémantiques qui donnent un sens aux
constructions d'un langage:
 La définition dirigée par la syntaxe (DDS), où les règles sémantiques
calculent les valeurs des attributs associés aux symboles de la grammaire.
 Le schéma de traduction, où les règles sémantiques prennent la forme
d’actions insérées dans la partie droite des productions de la grammaire.
26
II- La traduction dirigée par la syntaxe (TDS)
2- Notation post fixée:
Soit E une expression:
- si E est une variable ou une constante, la notation post fixée de E est elle-même.
- si E est une expression de la forme infixée E1 op E2, sa notation post fixée est
E'1 E'2 op, avec E'1 et E'2 les notations post fixées de E1 et E2.
- si E est une expression de la forme (E1) , sa notation post fixée est celle de E1.
Exemple: notation infixéenotation post fixée
9 – 2 9 2 –
(9 – 5) + 2 9 5 – 2 +
9 – (5 + 2) 9 5 2 + –
27
II- La traduction dirigée par la syntaxe (TDS)
3- La définition dirigée par la syntaxe (DDS):
Une DDS d’un langage de programmation est constituée par:
- la grammaire qui spécifie la syntaxe du texte d’entrée.
- les règles sémantiques qui calculent les valeurs des attributs
associés aux symboles d’une construction du langage.
Exemples d’attributs:
type, adresse mémoire, portée d'une variable....
28
II- La traduction dirigée par la syntaxe (TDS)
Exemple 1: traduction d’une expression arithmétique d’une notation infixée en
notation post fixée.
Soit la grammaire: E pour expression, T pour Terme et c pour chiffre.
E E + T
E E – T
E T
T c
c 0
c 1
. .
. .
c 9
29
II- La traduction dirigée par la syntaxe (TDS)
À la production: E E1 + T , on associe une règle sémantique:
E.t = E1.t T.t ‘+’ veut dire concaténé.
La DDS: la grammaire et les règles sémantiques
la grammaire et les règles sémantiques
E E1 + T {E.t = E1.t T.t '+'}
E E1 - T {E.t = E1.t T.t '–'}
E T {E.t = T.t }
T c {T.t = c.t}
c 0 {c.t = '0'}
................... ..............
c 9 {c.t = '9'}
30
II- La traduction dirigée par la syntaxe (TDS)
La notation post fixée de "2-5+9"
L’arbre syntaxique décoré
E.t = 2 5 – 9 +
E1.t = 2 5 – + T.t = 9
E1.t = 2 - T.t = 5 c.t = 9 le sens du calcul
T.t = 2 c.t = 5 9
c.t = 2 5
2
31
II- La traduction dirigée par la syntaxe (TDS)
Exemple 2:
Soit un robot commandé pour se déplacer d’une suite de pas dans l’espace à 2 dimensions.
1- La grammaire qui engendre une séquence de pas:
2- D.D.S qui calcule la position finale du robot à partir d’une position initiale et d’une
séquence de pas.
32
II- La traduction dirigée par la syntaxe (TDS)
4- Le schéma de traduction:
C’est une grammaire dans la quelle on insère les règles
sémantiques, appelées actions, dans la partie droite des productions.
Exemple: Un schéma de traduction qui traduit une expression infixée en une
notation post fixée.
33
II- La traduction dirigée par la syntaxe (TDS)
Exemple: Traduction des expressions arithmétiques d’une notation infixée en
notation post fixée.
Le schéma de traduction (grammaire + règles sémantiques):
E E + T {imprime ‘+’}
E E – T {imprime ’-’}
E T { }
T c { }
c 0 {imprime ’0’}
c 1 {imprime ’1’}
c . .
. . .
c 9 {imprime ’9’}
34
II- La traduction dirigée par la syntaxe (TDS)
L’arbre syntaxique décoré de "2-5+9"
Lecture des feuilles rouges en profondeur d'abord, gauche-droite.
E
E + T { imprime ‘+’}
E - T { imprime ‘-’} c { }
T { } c { } 9 { imprime ‘9’}
c { } 5 { imprime ‘5’}
2 { imprime ‘2’}
35
II- La traduction dirigée par la syntaxe (TDS)
Exercice 1:
1- Donnez une grammaire qui accepte les entiers non signés,
2- Donnez une définition dirigée par la syntaxe qui calcule le nombre de
chiffres d'un entier.
3- Donnez l'arbre syntaxique décoré de: "2023".
36
II- La traduction dirigée par la syntaxe (TDS)
Exercice 2:
1- Donnez une grammaire qui accepte les entiers binaires,
2- Donnez une définition dirigée par la syntaxe qui calcule le nombre de '0' et
le nombre de '1' dans un nombre binaire.
3- Donnez l'arbre syntaxique décoré de: "1110".
37
II- La traduction dirigée par la syntaxe (TDS)
Exercice 3:
1- Donner une grammaire qui accepte les déclarations des types simples en Java,
2- Donner un arbre syntaxique d'après cette grammaire pour la déclaration:
"float id, id, id;"
3- Donnez une définition dirigée par la syntaxe qui calcule le nombre de
variables déclarées.
4- Donnez l'arbre syntaxique décoré de: "float id, id, id;".
38
II- La traduction dirigée par la syntaxe (TDS)
Exercice 4:
- Soit la grammaire :
S (L) | a
L L , S | S
1- Quels sont les terminaux, les non terminaux et l'axiome ?
2- Donner les arbres syntaxiques des phrases suivantes :
(a,a) et (a,(a,a))
3- Donnez une définition dirigée par la syntaxe qui calcule le nombre de 'a'.
4- Donnez l'arbre syntaxique décoré de:(a,(a,a))
39
II- La traduction dirigée par la syntaxe (TDS)
Exercice 5:
- Soit la grammaire :
E E + T | E - T | T
T T * F | T / F | F
F (E) | nb
1- Donner un schéma de traduction qui traduit une expression d'une notation
infixée en notation préfixée.
2- Appliquer ce schéma de traduction à la phrase suivante :
nb + nb * nb
pour produire l'arbre syntaxique décoré.
3- Donner une définition dirigée par la syntaxe (dds) qui fait la même
traduction et appliquer cette dds à la phrase précédente.
40

Notions de la Grammaire engineering info

  • 1.
    COMPILATION NOTION DE LAGRAMMAIRE 1ÈRE PARTIE: DÉFINITION DE LA SYNTAXE 2ÈME PARTIE: TRADUCTION DIRIGÉE PAR LA SYNTAXE EMSI - 3ÈME IIR
  • 2.
    2 Notion de laGrammaire (1) I- Définition de la syntaxe 1. La grammaire, 2. Arbre syntaxique, 3. Ambigüité d'une grammaire, 4. Associativité d'une grammaire, 5. Priorité d'une grammaire, II- Traduction dirigée par la syntaxe 6. Définition, 7. Notation post fixée, 8. Définition dirigée par la syntaxe (DDS), 9. Schéma de traduction. Compilation EMSI 3ème année IIR
  • 3.
    Notion de grammaire(2) Un langage de programmation peut être défini par: 1- La syntaxe du langage (la description de ses programmes). 2- La sémantique du langage (la signification des programmes)  Pour spécifier la syntaxe d’un langage, nous utilisons une grammaire hors contexte (notation BNF) BNF: Backus Naur Form 3
  • 4.
    I- Définition dela syntaxe 1- La grammaire: La grammaire décrit d’une manière hiérarchique les constructions du langage. Elle est constituée d'une suite de règles. Exemple1: soit l’instruction conditionnelle en PASCAL: "if (exp) then instr else instr" Pour spécifier cette instruction, nous utilisons une règle structurelle appelée: production instr if (exp) then instr else instr 4
  • 5.
    1- La grammaire(1) 1/ instr if ( exp ) then instr else instr if ( exp ) then instr autre 2/ exp terme operel terme terme 3/ terme id nb Les terminaux sont: if,(,),then,else,operel,id,nb Les non-terminaux sont: instr, exp , terme L’ axiome est le non-terminal: instr veut dire produit ou peut avoir la forme 5
  • 6.
    1- La grammaire(2)  Les éléments en rouge sont des unités lexicales ou terminaux.  Les éléments définis à gauche des flèches sont appelés des non-terminaux.  Nous avons 3 règles de grammaire.  Chaque alternative dans une règle de grammaire est appelée: production  Le premier symbole non-terminal de la grammaire est appelé axiome . Nous disons que nous avons défini un langage par une grammaire 6
  • 7.
    7 1- La grammaire(3) Définition: Une grammaire hors contexte est constituée de:  un ensemble de terminaux,  un ensemble de non-terminaux,  un ensemble de productions,  un symbole de départ appelé axiome
  • 8.
    1- La grammaire(4) Exemple 2: Soit les expressions composées de chiffres 0, 1,..., 9 et des signes ‘+’ et ‘-’. La grammaire qui décrit la syntaxe de ce langage est donnée par: 1ère forme: liste liste + liste liste – liste chiffre chiffre 0 1 2 …… 9 2ème forme: liste chiffre + liste chiffre – liste chiffre chiffre 0 1 2 …… 9 3ème forme: liste liste + chiffre liste – chiffre chiffre chiffre 0 1 2 …… 9 Les terminaux sont : + , - , 0 , 1, …. , 9 Les non-terminaux: liste et chiffre L’axiome est liste 8
  • 9.
    2- Arbre syntaxique(1) Un arbre syntaxique décrit d’une manière hiérarchique les constructions d’un langage et possède 4 propriétés:  la racine de l’arbre est l’axiome de la grammaire,  chaque feuille est un terminal de la grammaire,  chaque nœud est un non-terminal,  si A est le non-terminal d’un nœud intérieur et si les fils de ce nœud sont de gauche à droite X1, X2, …., Xn alors : A X1…. Xn est une production de la grammaire. Les Xi sont des terminaux et des non-terminaux. 9
  • 10.
    2- Arbre syntaxique(2) Exemple: L’arbre syntaxique de l’expression " 9 – 5 + 2 " d’après la grammaire précédente. 1ère forme: liste liste + liste liste – liste chiffre chiffre 0 1 2 …… 9 liste liste + liste liste - liste chiffre chiffre chiffre 2 9 5 10
  • 11.
    2- Arbre syntaxique(3) Exemple: L’arbre syntaxique de l’expression "9 – 5 + 2" d’après la grammaire précédente. 2ème forme : liste chiffre + liste chiffre – liste chiffre chiffre 0 1 2 …… 9 liste chiffre - liste 9 chiffre + liste 5 chiffre 2 Cette grammaire est récursive à droite 11
  • 12.
    2- Arbre syntaxique(4) Exemple: L’arbre syntaxique de l’expression "9 – 5 + 2" d’après la grammaire précédente. 3ème forme: liste liste + chiffre liste – chiffre chiffre chiffre 0 1 2 …… 9 liste liste + chiffre liste - chiffre 2 chiffre 5 9 Cette grammaire est récursive à gauche 12
  • 13.
    3- Ambiguïté d’unegrammaire Une grammaire est dite ambigüe si elle peut donner plus d’un arbre syntaxique pour la même phrase. Exemple: "9-5+2" 1ère forme: liste liste liste + liste liste - liste liste - liste chiffre chiffre liste + liste chiffre chiffre 2 9 chiffre chiffre 9 5 5 2 Nous devons éviter l’utilisation d’une grammaire ambigüe, donc la 1ère forme est à éviter. Question: quel est le choix, de la grammaire, le plus approprié ( la 2ème forme ou la 3ème forme)? 13
  • 14.
    4- Associativité desopérateurs (1) La 2ème forme favorise le + par rapport au - : 9-5+2 sera interprétée comme 9-(5+2)= 9-7=2 La 3ème forme favorise le – par rapport au + : 9-5+2 sera interprétée comme (9-5)+2=4+2=6 Par convention: nous considérons l’interprétation de la 3ème forme. Définition: Soit un opérande entouré de 2 opérateurs, s’il est traité en priorité par celui qui est à sa gauche (à sa droite), on dit que cet opérateur est associatif à gauche (à droite). Convention: Dans la plus part des langages de programmation, les 4 opérateurs arithmétiques «+,-,*,/» sont associatifs à gauche. 14
  • 15.
    4- Associativité desopérateurs (2) Autres types d'associativité : - L'opérateur d'affectation est associatif à droite: a = b = c est interprétée comme a=(b=c) - Les opérateurs de relation ne sont pas associatifs: en effet, les langages de programmation n'autorisent pas: if (a < b < c) Pour le cas du langage C, par exemple il faut écrire: if (a<b && b<c) 15
  • 16.
    5- Priorité desopérateurs (1) Soit l'expression: 9 + 5 * 2 L'associativité ne résout pas le problème ! L'interprétation sera : (9 + 5) * 2 (1) ou 9 + (5 * 2) ! (2)  Par convention, on favorise la 2ème interprétation. Nous considérons par convention que les opérateurs * et / sont prioritaires par rapport à + et - Remarques: - Pour deux opérateurs arithmétiques qui ont le même niveau de priorité, on favorise l'associativité gauche. - S'ils n'ont pas la même priorité, on favorise la priorité. 16
  • 17.
    5- Priorité desopérateurs (2) Question: Construire une grammaire pour les expressions arithmétiques constituées des chiffres, des expressions parenthèsées et des 4 opérateurs arithmétiques +, -, * et / en tenant compte de l’associativité gauche des opérateurs et de la priorité. 17
  • 18.
    5- Priorité desopérateurs (3) Question: Construire une grammaire pour les expressions arithmétiques constituées des nombres, des expressions parenthesées et des 4 opérateurs arithmétiques +, -, * et / en tenant compte de l’associativité gauche des opérateurs et de la priorité. Réponse: Nous définissons 3 non terminaux pour les 3 niveaux de priorités: E, T et F La grammaire est: E E + T E - T T T T * F T / F F F nb (E) 18
  • 19.
    5- Priorité desopérateurs (4) Exemple: arbre syntaxique de nb * (nb + nb) E Lecture: En profondeur d'abord, gauche-droite T T * F F ( E ) nb E + T T F F nb nb 19
  • 20.
    Exercices : L'arbresyntaxique 20 Exemples: Soit la grammaire Donnez les arbres syntaxiques de: E E + T | E – T | T - "nb" T T * F | T / F | F - "nb+nb" F nb | (E) - "nb-nb+nb" - "nb*nb" - "nb+nb*nb" - "(nb+nb)*nb"
  • 21.
    Exercices : Lesgrammaires Exercice 1: 1- Donnez une grammaire qui accepte les entiers non signés, 2- Donnez l'arbre syntaxique de: "2023". 21
  • 22.
    Exercices : lesgrammaires Exercice 2: 1- Donnez une grammaire qui accepte les entiers binaires, 2- Donnez l'arbre syntaxique de: "1011". 22
  • 23.
    Exercices : lesgrammaires Exercice 3: 1- Donner une grammaire qui accepte les déclarations des types simples en Java, 2- Donner un arbre syntaxique d'après cette grammaire pour la déclaration: "float id, id, id;" 3- Donner une grammaire qui accepte les déclarations des types simples en Pascal, 4- Donner un arbre syntaxique d'après cette grammaire pour la déclaration: "id, id, id : real;" 23
  • 24.
    Exercices : lesgrammaires Exercice 4: soit la grammaire du langage Lisp - Soit la grammaire : S (L) | a L L , S | S 1- Quels sont les terminaux, les non terminaux et l'axiome ? 2- Donner les arbres syntaxiques des phrases suivantes : (a,a) et (a,(a,a)) 24
  • 25.
    25 Notion de laGrammaire II- Traduction dirigée par la syntaxe 1. Définition, 2. Notation post fixée, 3. Définition dirigée par la syntaxe (DDS), 4. Schéma de traduction.
  • 26.
    II- La traductiondirigée par la syntaxe (TDS) 1- Définition: C’est la traduction d’un langage guidée par une grammaire hors contexte à laquelle on associe des règles sémantiques. Il y’a 2 notations pour introduire les règles sémantiques qui donnent un sens aux constructions d'un langage:  La définition dirigée par la syntaxe (DDS), où les règles sémantiques calculent les valeurs des attributs associés aux symboles de la grammaire.  Le schéma de traduction, où les règles sémantiques prennent la forme d’actions insérées dans la partie droite des productions de la grammaire. 26
  • 27.
    II- La traductiondirigée par la syntaxe (TDS) 2- Notation post fixée: Soit E une expression: - si E est une variable ou une constante, la notation post fixée de E est elle-même. - si E est une expression de la forme infixée E1 op E2, sa notation post fixée est E'1 E'2 op, avec E'1 et E'2 les notations post fixées de E1 et E2. - si E est une expression de la forme (E1) , sa notation post fixée est celle de E1. Exemple: notation infixéenotation post fixée 9 – 2 9 2 – (9 – 5) + 2 9 5 – 2 + 9 – (5 + 2) 9 5 2 + – 27
  • 28.
    II- La traductiondirigée par la syntaxe (TDS) 3- La définition dirigée par la syntaxe (DDS): Une DDS d’un langage de programmation est constituée par: - la grammaire qui spécifie la syntaxe du texte d’entrée. - les règles sémantiques qui calculent les valeurs des attributs associés aux symboles d’une construction du langage. Exemples d’attributs: type, adresse mémoire, portée d'une variable.... 28
  • 29.
    II- La traductiondirigée par la syntaxe (TDS) Exemple 1: traduction d’une expression arithmétique d’une notation infixée en notation post fixée. Soit la grammaire: E pour expression, T pour Terme et c pour chiffre. E E + T E E – T E T T c c 0 c 1 . . . . c 9 29
  • 30.
    II- La traductiondirigée par la syntaxe (TDS) À la production: E E1 + T , on associe une règle sémantique: E.t = E1.t T.t ‘+’ veut dire concaténé. La DDS: la grammaire et les règles sémantiques la grammaire et les règles sémantiques E E1 + T {E.t = E1.t T.t '+'} E E1 - T {E.t = E1.t T.t '–'} E T {E.t = T.t } T c {T.t = c.t} c 0 {c.t = '0'} ................... .............. c 9 {c.t = '9'} 30
  • 31.
    II- La traductiondirigée par la syntaxe (TDS) La notation post fixée de "2-5+9" L’arbre syntaxique décoré E.t = 2 5 – 9 + E1.t = 2 5 – + T.t = 9 E1.t = 2 - T.t = 5 c.t = 9 le sens du calcul T.t = 2 c.t = 5 9 c.t = 2 5 2 31
  • 32.
    II- La traductiondirigée par la syntaxe (TDS) Exemple 2: Soit un robot commandé pour se déplacer d’une suite de pas dans l’espace à 2 dimensions. 1- La grammaire qui engendre une séquence de pas: 2- D.D.S qui calcule la position finale du robot à partir d’une position initiale et d’une séquence de pas. 32
  • 33.
    II- La traductiondirigée par la syntaxe (TDS) 4- Le schéma de traduction: C’est une grammaire dans la quelle on insère les règles sémantiques, appelées actions, dans la partie droite des productions. Exemple: Un schéma de traduction qui traduit une expression infixée en une notation post fixée. 33
  • 34.
    II- La traductiondirigée par la syntaxe (TDS) Exemple: Traduction des expressions arithmétiques d’une notation infixée en notation post fixée. Le schéma de traduction (grammaire + règles sémantiques): E E + T {imprime ‘+’} E E – T {imprime ’-’} E T { } T c { } c 0 {imprime ’0’} c 1 {imprime ’1’} c . . . . . c 9 {imprime ’9’} 34
  • 35.
    II- La traductiondirigée par la syntaxe (TDS) L’arbre syntaxique décoré de "2-5+9" Lecture des feuilles rouges en profondeur d'abord, gauche-droite. E E + T { imprime ‘+’} E - T { imprime ‘-’} c { } T { } c { } 9 { imprime ‘9’} c { } 5 { imprime ‘5’} 2 { imprime ‘2’} 35
  • 36.
    II- La traductiondirigée par la syntaxe (TDS) Exercice 1: 1- Donnez une grammaire qui accepte les entiers non signés, 2- Donnez une définition dirigée par la syntaxe qui calcule le nombre de chiffres d'un entier. 3- Donnez l'arbre syntaxique décoré de: "2023". 36
  • 37.
    II- La traductiondirigée par la syntaxe (TDS) Exercice 2: 1- Donnez une grammaire qui accepte les entiers binaires, 2- Donnez une définition dirigée par la syntaxe qui calcule le nombre de '0' et le nombre de '1' dans un nombre binaire. 3- Donnez l'arbre syntaxique décoré de: "1110". 37
  • 38.
    II- La traductiondirigée par la syntaxe (TDS) Exercice 3: 1- Donner une grammaire qui accepte les déclarations des types simples en Java, 2- Donner un arbre syntaxique d'après cette grammaire pour la déclaration: "float id, id, id;" 3- Donnez une définition dirigée par la syntaxe qui calcule le nombre de variables déclarées. 4- Donnez l'arbre syntaxique décoré de: "float id, id, id;". 38
  • 39.
    II- La traductiondirigée par la syntaxe (TDS) Exercice 4: - Soit la grammaire : S (L) | a L L , S | S 1- Quels sont les terminaux, les non terminaux et l'axiome ? 2- Donner les arbres syntaxiques des phrases suivantes : (a,a) et (a,(a,a)) 3- Donnez une définition dirigée par la syntaxe qui calcule le nombre de 'a'. 4- Donnez l'arbre syntaxique décoré de:(a,(a,a)) 39
  • 40.
    II- La traductiondirigée par la syntaxe (TDS) Exercice 5: - Soit la grammaire : E E + T | E - T | T T T * F | T / F | F F (E) | nb 1- Donner un schéma de traduction qui traduit une expression d'une notation infixée en notation préfixée. 2- Appliquer ce schéma de traduction à la phrase suivante : nb + nb * nb pour produire l'arbre syntaxique décoré. 3- Donner une définition dirigée par la syntaxe (dds) qui fait la même traduction et appliquer cette dds à la phrase précédente. 40