• 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..

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´

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

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