“doc” (Col. : Science Sup 17x24) — 2007/7/19 — 18:18 — page 68 — #78
i
i
i
i
i
i
i
i
68
2
• La programmation déclarative
(Ici lit et feat sont des synonymes pour literal et feature.) L’exécution fait les
actions suivantes :
– Si la condition d’activation est vraie (E(x) est déterminée), faire les actions
suivantes :
• Si l’étiquette de E(x) est lit et son arité est {{feat 1 , . . . , feat n }, empiler
(s 1 , E + {{x 1 → E(x).feat 1 , . . . , x n → E(x).feat n }).
• Sinon empiler (s 2 , E).
– Si la condition d’activation est fausse, suspendre l’exécution.
2.4.5 Les concepts de base revisités
Maintenant que nous avons défini la sémantique noyau, nous pouvons jeter un
deuxième regard sur les exemples de la section 2.4.1 pour voir exactement ce qu’ils
font. Nous regarderons trois exemples ; nous vous recommandons les autres comme
exercices.
Les identificateurs et la portée statique
Nous avons vu que l’instruction suivante s affiche d’abord 2 et ensuite 1 :
s ≡
⎧
⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎨
⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎩
local X in
X=1
s 1 ≡
⎧
⎪ ⎪ ⎨
⎪ ⎪ ⎩
local X in
X=2
{Browse X}
end
s 2 ≡ {Browse X}
end
Le même identificateur X fait d’abord référence à 2 et ensuite il fait référence à 1. Nous
pouvons comprendre ce qui se passe en suivant l’exécution de s dans la machine
abstraite.
1. L’état initial est :
( [(s, f)], f )
L’environnement et la mémoire sont tous les deux vides (E = f et s = f).
2. Après l’exécution de la première instruction local et le lien X=1, nous avons :
( [(s 1 s 2 , {X → x})],
{y = 1, x = y} )
Précédent

- 83/370

Suivant