“doc” (Col. : Science Sup 17x24) — 2007/7/19 — 18:18 — page 48 — #58
i
i
i
i
i
i
i
i
48
2
• La programmation déclarative
s : :=
skip
Instruction vide
| |s 1 s 2
Séquence d’instructions
| local x in s end
Création de variable
| |x 1 =x 2
Lien variable-variable
| |x=v
Création de valeur
| if x then s 1 else s 2 end Instruction conditionnelle
| case x of pattern
Correspondance de formes
then s 1 else s 2 end
| {x y 1 . . . y n }
Application de procédure
Tableau 2.1 Le langage noyau déclaratif.
v
: := number | |record | |procedure
number
: := int | |float
record, pattern : := literal
| |literal(feature 1 : x 1 · · · ·feature n : x n )
procedure
: := proc { $ x 1 · · · ·x n } s end
literal
: := atom | |bool | . . .
feature
: := atom | |bool | |int | . . .
bool
: := true | false
Tableau 2.2 Les valeurs dans le langage noyau déclaratif.
La syntaxe des instructions
Le tableau 2.1 définit la syntaxe de s, qui dénote une instruction. Il y a huit instructions en tout.
La syntaxe des valeurs
Le tableau 2.2 définit la syntaxe de v, qui dénote une valeur. Il y a trois sortes
d’expressions qui les dénotent : les nombres, les enregistrements et les procédures.
Pour les enregistrements (record) et les formes (pattern), les arguments x 1 , . . . ,
x n doivent tous être des identificateurs différents. Cela garantit que tous les liens
entre deux variables seront écrits explicitement.
La syntaxe des identificateurs
Le tableau 2.1 utilise les non terminaux x et y pour désigner un identificateur. Nous
utiliserons aussi z pour le désigner. Il y a deux manières de l’écrire :
i
i
i
i
i
i
i
i
48
2
• La programmation déclarative
s : :=
skip
Instruction vide
| |s 1 s 2
Séquence d’instructions
| local x in s end
Création de variable
| |x 1 =x 2
Lien variable-variable
| |x=v
Création de valeur
| if x then s 1 else s 2 end Instruction conditionnelle
| case x of pattern
Correspondance de formes
then s 1 else s 2 end
| {x y 1 . . . y n }
Application de procédure
Tableau 2.1 Le langage noyau déclaratif.
v
: := number | |record | |procedure
number
: := int | |float
record, pattern : := literal
| |literal(feature 1 : x 1 · · · ·feature n : x n )
procedure
: := proc { $ x 1 · · · ·x n } s end
literal
: := atom | |bool | . . .
feature
: := atom | |bool | |int | . . .
bool
: := true | false
Tableau 2.2 Les valeurs dans le langage noyau déclaratif.
La syntaxe des instructions
Le tableau 2.1 définit la syntaxe de s, qui dénote une instruction. Il y a huit instructions en tout.
La syntaxe des valeurs
Le tableau 2.2 définit la syntaxe de v, qui dénote une valeur. Il y a trois sortes
d’expressions qui les dénotent : les nombres, les enregistrements et les procédures.
Pour les enregistrements (record) et les formes (pattern), les arguments x 1 , . . . ,
x n doivent tous être des identificateurs différents. Cela garantit que tous les liens
entre deux variables seront écrits explicitement.
La syntaxe des identificateurs
Le tableau 2.1 utilise les non terminaux x et y pour désigner un identificateur. Nous
utiliserons aussi z pour le désigner. Il y a deux manières de l’écrire :
