Syntaxe et s ´emantique
Syntaxe = repr ´esentation du programme
S ´emantique = sens attach ´e aux programmes
• if (x == 0) y = 5;
if x = 0 then y := 5;
(if (= x 0) (set! y 5))
• 6 + 1 / 3 = ⇒ 6
6 + 1 / 3 = ⇒ 6.33¯ 3
6 + 1 / 3 = ⇒ 2.33¯ 3
Ceci n’est pas un nombre
42
Syntaxe des expressions (1)
Pr ´efixe
+ e
1e
2 Fonctions en math Infixee
1+ e
2 Op ´erateurs en math Postfixee
1e
2+
Calculatrices HP Infixe est famili `ere mais plus ambigu ¨e:a + b ∗ c ≡
?a + (b ∗ c) ≡
?(a + b) ∗ c a − b − c ≡
?a − (b − c) ≡
?(a − b) − c
not
x < 0 ≡
?(
notx) < 0 ≡
? not(x < 0)
sin
a − b ≡
? sin(a − b) ≡
?(
sina) − b ≡
?(
sina)(−b)
Syntaxe des expressions (2)
•
Niveau de pr ´ec ´edence:a + b ∗ c ≡ a + (b ∗ c)
•
Associativit ´e:a − b − c ≡ (a − b) − c
C a 15 niveaux!
Ils s’associent `a gauche. Exceptions: unaires,
x?y : z
et affectations 1 seule associativit ´e par niveauIl est difficile de m ´emorizer tous les niveaux
Arbred de Syntaxe Abstraite (ASA)
Repr ´esentation structurelle, d ´epouill ´ee des d ´etails de la syntaxe Forme g ´en ´erale: op opération
opérandes ou sous-composantes de l’opération
Examples:
+ x 1
* x
+ y 2
3 /
if-then
<
x y x +
y 1
x+1 if x<y then x:=y+1
assign x*((y+2)/3)
Pas de parenth `eses et autre s ´eparateurs sans importance Point milieu entre syntaxe et s ´emantique
D ´efinition formelle de la syntaxe
Tir ´ee des concepts d’informatique th ´eorique
D ´efinir une grammaire qui sp ´ecifie exactement les programmes syntaxiquement corrects.
•
D ´ef: Vocabulaire (Σ
) = ensemble de symboles•
D ´ef: Phrase = s ´equence de symboles tir ´es deΣ
.•
D ´ef: Langage = ensemble de phrases•
D ´ef: Grammaire = r ´egles d ´ecrivant pr ´ecis ´ement le langage Chapitre 2 de SethiBackus-Naur Form
Grammaire en format BNF: ensemble de cat ´egories et de productions avec une cat ´egorie d ´esign ´ee cat ´egorie de d ´epart
•
Cat ´egorie = nom d’un type de fragment de phrase Ex:h
expressioni
,h
entieri
,h
typei
•
Production = r `egle de la formeh
cati ::= x
1x
2. . . x
no `u
h
cati
est une cat ´egorie etx
i est une cat ´egorie ou un symbole Exemple:h
bini ::= 0
h
bini ::= 1
h
bini ::= h
bini h
bini
D ´erivation BNF
D ´ef: D ´erivation directe = application d’une r `egle de production Ex:
y
1. . . h
cati . . . y
m⇒ y
1. . . x
1. . . x
n. . . y
mil existe une r ´egle
h
cati ::= x
1. . . x
nD ´ef: D ´erivation = s ´equence de d ´erivations directes
commence par la cat ´egorie de d ´epart et se termine par une phrase Ex:
h
bini ⇒ h
bini h
bini ⇒ h
bini 0 ⇒ 1 0
D ´ef: L(G) = langage d ´efini par la grammaire G L(G) =
{ p | h
d ´eparti ⇒ · · · ⇒ p }
Exemple de BNF
h
flottanti ::= h
entieri . h
entieri h
entieri ::= h
chiffrei
h
entieri ::= h
chiffrei h
entieri
h
chiffrei ::= (0|1|2|3|4|5|6|7|8|9)
1.5 est-il un flottant?
h
flottanti ⇒ h
entieri . h
entieri ⇒
h
chiffrei . h
entieri ⇒ h
chiffrei . h
chiffrei ⇒ 1 . h
chiffrei ⇒ 1 . 5
Arbre de d ´erivation
Arbre capturant la structure syntaxique d’une phrase Repr ´esentation compacte d’une d ´erivation
Exemples: 1.5
<entier> <entier>
<flottant>
.
<chiffre>
5
.
<flottant>
12.34
<entier>
1
<chiffre> <entier>
<chiffre>
1
<chiffre>
<entier>
<chiffre> <entier>
<chiffre>
2
3
4
Racine = d ´epart, feuilles = phrase. Presque un ASA
Grammaires ambigu ¨es
D ´ef: une grammaire G est ambigu ¨e ssi il existe une phrase dans L(G) qui a plusieurs arbres de d ´erivation (pas juste plusieurs d ´erivations) Exemple:
h
expri ::= x
h
expri ::= h
expri − h
expri x − x − x
:<expr>
<expr>
<expr> <expr>
<expr>
x
x x
-
-
<expr>
<expr>
<expr>
<expr>
<expr>
x
x x
-
-
R ´esoudre ou ´eliminer les ambigu¨ıt ´es en BNF pour l’utiliser dans l’ASA
Extended BNF
Extension de la syntaxe BNF avec des expressions r ´eguli `eres:
x
1|x
2 peut- ˆetre soitx
1 soitx
2(x)
groupement[x]
parfois not ´ex?
´equivalent `aε|x {x}
parfois not ´ex∗
Exemple:
h
entieri ::= h
chiffrei { h
chiffrei }
Diagramme syntaxique
Repr ´esentation graphique d’une cat ´egorie d’une grammaire
.
chiffre E
+ -
chiffre
chiffre flottant
chiffre 0
1 2 3 4 5 6 7 8 9
Sp ´ecification et implantation
Sp ´ecification
⇒
syntaxe et s ´emantique sans implantation Pas de sp ´ecification⇒
pas de bug de l’implantationUne implantation fid `ele `a la sp ´ecification est dite conforme
L’implantation a les mains libres quant `a la mani `ere de proc ´eder Les sp ´ecifications permettent d’offrir des extensions
D ´efinition d’un langage
•
Syntaxe– R `egles lexicales – Grammaire
•
S ´emantique– R `egles de typage (s ´emantique statique)
– R `egles d’ ´evaluation (s ´emantique dynamique)
[
Char] ⇒ [
Lexeme] ⇒
ASA⇒
AnnotatedASA⇒
ValueSucre syntaxique
Extension syntaxique superficielle
Absolument ´equivalente `a une autre syntaxe G ´erable lors de la conversion vers l’ASA
Pas d’impact sur les propri ´et ´es internes du langage
Langages utilis ´es
Dans ce cours apparaˆıtront probablement les langages suivants: