• Aucun résultat trouvé

Syntaxe et s ´emantique

N/A
N/A
Protected

Academic year: 2022

Partager "Syntaxe et s ´emantique"

Copied!
17
0
0

Texte intégral

(1)

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

(2)

Ceci n’est pas un nombre

42

(3)

Syntaxe des expressions (1)

Pr ´efixe

+ e

1

e

2 Fonctions en math Infixe

e

1

+ e

2 Op ´erateurs en math Postfixe

e

1

e

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 ≡

?

(

not

x) < 0 ≡

? not

(x < 0)

sin

a − b ≡

? sin

(a − b) ≡

?

(

sin

a) − b ≡

?

(

sin

a)(−b)

(4)

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 niveau

Il est difficile de m ´emorizer tous les niveaux

(5)

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

(6)

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 Sethi

(7)

Backus-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

expression

i

,

h

entier

i

,

h

type

i

Production = r `egle de la forme

h

cat

i ::= x

1

x

2

. . . x

n

o `u

h

cat

i

est une cat ´egorie et

x

i est une cat ´egorie ou un symbole Exemple:

h

bin

i ::= 0

h

bin

i ::= 1

h

bin

i ::= h

bin

i h

bin

i

(8)

D ´erivation BNF

D ´ef: D ´erivation directe = application d’une r `egle de production Ex:

y

1

. . . h

cat

i . . . y

m

⇒ y

1

. . . x

1

. . . x

n

. . . y

m

il existe une r ´egle

h

cat

i ::= x

1

. . . x

n

D ´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

bin

i ⇒ h

bin

i h

bin

i ⇒ h

bin

i 0 ⇒ 1 0

D ´ef: L(G) = langage d ´efini par la grammaire G L(G) =

{ p | h

d ´epart

i ⇒ · · · ⇒ p }

(9)

Exemple de BNF

h

flottant

i ::= h

entier

i . h

entier

i h

entier

i ::= h

chiffre

i

h

entier

i ::= h

chiffre

i h

entier

i

h

chiffre

i ::= (0|1|2|3|4|5|6|7|8|9)

1.5 est-il un flottant?

h

flottant

i ⇒ h

entier

i . h

entier

i ⇒

h

chiffre

i . h

entier

i ⇒ h

chiffre

i . h

chiffre

i ⇒ 1 . h

chiffre

i ⇒ 1 . 5

(10)

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

(11)

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

expr

i ::= x

h

expr

i ::= h

expr

i − h

expr

i 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

(12)

Extended BNF

Extension de la syntaxe BNF avec des expressions r ´eguli `eres:

x

1

|x

2 peut- ˆetre soit

x

1 soit

x

2

(x)

groupement

[x]

parfois not ´e

x?

´equivalent `a

ε|x {x}

parfois not ´e

x∗

Exemple:

h

entier

i ::= h

chiffre

i { h

chiffre

i }

(13)

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

(14)

Sp ´ecification et implantation

Sp ´ecification

syntaxe et s ´emantique sans implantation Pas de sp ´ecification

pas de bug de l’implantation

Une 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

(15)

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

Value

(16)

Sucre 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

(17)

Langages utilis ´es

Dans ce cours apparaˆıtront probablement les langages suivants:

Haskell: Langage fonctionnel pur “Avoid success at all costs”

Emacs List: Fr `ere de Scheme (roi de la m ´eta-programmation)

Prolog: Grand-p `ere de la programmation logique

C: Programmation imp ´erative de bas niveau

Rust: M ˆeme chose, mais avec filet de s ´ecurit ´e

Curry: M ´elange de programmation fonctionnelle et logique

Références

Documents relatifs

De même, nous dirons qu'un diagramme localement libre natu- ralisé (6? D &gt; A , e) sur un objet B de £ est une famille localement libre naturalisée sur B si, et seulement si, D est

S’il y avait ainsi 15 r´ eponses n´ egatives, il resterait alors 46, 48, 56, 58, et ni Hippolyte ni Th´ eophile, qui ne connaissent qu’un chiffre de X, ne pourraient conclure..

Une corde tendue excitée sinusoïdalement entre en résonance pour certaines fréquences, qui sont les modes propres de cette corde.. Ces modes propres sont quantifiés : le premier

Par contre, pour A 6∈ A, la distribution des valeurs connues par les utilisateurs de A, dans toute les instances, est un ensemble de valeurs ind´ ependantes et uniform´ ement

En l’absence de Raymond, Bernard Dubois rapporte : tout c’est très bien déroulé ; c’était organisé à 90 % par les sdf eux-mêmes ; mise en avant des sdf qui tenaient la

La syntaxe d’un langage de programmation d´etermine ce qui constitue un programme valide du point de vue de la forme/du texte.. Quelles s´equences de caract`eres constituent

Dans le cas g´en´eral, l’´elimination de la r´ecursion `a gauche ´eliminera progressivement les productions de forme ind´esirable de la mani`ere

Comme nous nous limitons ici ` a un sous-langage qui ne comporte pas de d´ efinition de nouveaux types, les valeurs vont ˆ etre principalement des valeurs de base (entiers, bool´