“doc” (Col. : Science Sup 17x24) — 2007/7/19 — 18:18 — page 56 — #66
i
i
i
i
i
i
i
i
56
2
• La programmation déclarative
Une exécution simple
Les instructions sont exécutées une par une selon leur ordre textuel dans le programme.
Nous verrons que cet ordre est réalisé dans la sémantique par une instruction appelée
composition séquentielle. Voici une exécution simple :
local A B C D in A=11 B=2 C=A+B D=C * C end
Elle va lier D à 169. Examinons-la de près pour voir ce qu’elle fait exactement. L’instruction local crée quatre nouvelles variables en mémoire et les fait référencer par
les quatre identificateurs A, B, C et D. (Pour la facilité nous étendons légèrement l’instruction local du tableau 2.1.) Ensuite il y a deux liens, A=11 et B=2. L’addition
C=A+B additionne les valeurs A et B et lie C au résultat 13. La multiplication D=C * C
multiplie la valeur de C par elle-même et lie D au résultat 169.
Les identificateurs et la portée statique
Nous avons vu que l’instruction local fait deux choses : elle crée une nouvelle
variable et elle fait une référence d’un identificateur vers cette variable. L’identificateur
ne référence la variable qu’à l’intérieur de l’instruction local, entre le local
et le end. La région du programme dans laquelle un identificateur référence une
variable particulière s’appelle la portée de l’identificateur. En dehors de la portée,
l’identificateur n’a pas la même référence. Regardons de près ce que cela implique.
Considérez le fragment suivant :
local X in
X=1
local X in X=2 {Browse X} end
{Browse X}
end
Qu’affiche-t-il ? Il affiche d’abord 2 et ensuite 1. Il n’y a qu’un identificateur, X, mais
à différents moments pendant l’exécution, il référence des variables différentes.
Pour résumer, le sens d’un identificateur comme X est déterminé par l’instruction
local la plus proche de X qui déclare X. La partie du programme où X garde ce sens
s’appelle la portée de X. Nous pouvons déterminer la portée d’un identificateur par une
simple inspection du texte du programme. Une action plus compliquée comme une
exécution ou une analyse du programme n’est pas nécessaire. Cette règle de portée
s’appelle la portée lexicale ou la portée statique. Plus loin nous verrons une autre règle
de portée, la portée dynamique, qui est parfois utile. Mais la portée lexicale est de loin
la règle la plus importante. Une des raisons en est qu’elle est localisée : le sens d’un
identificateur peut être déterminé en regardant une petite partie du programme. Nous
verrons une autre raison ci-dessous.
i
i
i
i
i
i
i
i
56
2
• La programmation déclarative
Une exécution simple
Les instructions sont exécutées une par une selon leur ordre textuel dans le programme.
Nous verrons que cet ordre est réalisé dans la sémantique par une instruction appelée
composition séquentielle. Voici une exécution simple :
local A B C D in A=11 B=2 C=A+B D=C * C end
Elle va lier D à 169. Examinons-la de près pour voir ce qu’elle fait exactement. L’instruction local crée quatre nouvelles variables en mémoire et les fait référencer par
les quatre identificateurs A, B, C et D. (Pour la facilité nous étendons légèrement l’instruction local du tableau 2.1.) Ensuite il y a deux liens, A=11 et B=2. L’addition
C=A+B additionne les valeurs A et B et lie C au résultat 13. La multiplication D=C * C
multiplie la valeur de C par elle-même et lie D au résultat 169.
Les identificateurs et la portée statique
Nous avons vu que l’instruction local fait deux choses : elle crée une nouvelle
variable et elle fait une référence d’un identificateur vers cette variable. L’identificateur
ne référence la variable qu’à l’intérieur de l’instruction local, entre le local
et le end. La région du programme dans laquelle un identificateur référence une
variable particulière s’appelle la portée de l’identificateur. En dehors de la portée,
l’identificateur n’a pas la même référence. Regardons de près ce que cela implique.
Considérez le fragment suivant :
local X in
X=1
local X in X=2 {Browse X} end
{Browse X}
end
Qu’affiche-t-il ? Il affiche d’abord 2 et ensuite 1. Il n’y a qu’un identificateur, X, mais
à différents moments pendant l’exécution, il référence des variables différentes.
Pour résumer, le sens d’un identificateur comme X est déterminé par l’instruction
local la plus proche de X qui déclare X. La partie du programme où X garde ce sens
s’appelle la portée de X. Nous pouvons déterminer la portée d’un identificateur par une
simple inspection du texte du programme. Une action plus compliquée comme une
exécution ou une analyse du programme n’est pas nécessaire. Cette règle de portée
s’appelle la portée lexicale ou la portée statique. Plus loin nous verrons une autre règle
de portée, la portée dynamique, qui est parfois utile. Mais la portée lexicale est de loin
la règle la plus importante. Une des raisons en est qu’elle est localisée : le sens d’un
identificateur peut être déterminé en regardant une petite partie du programme. Nous
verrons une autre raison ci-dessous.
