“doc” (Col. : Science Sup 17x24) — 2007/7/19 — 18:18 — page 67 — #77
i
i
i
i
i
i
i
i
2.4 La sémantique du langage noyau
67
L’instruction conditionnelle (l’instruction if)
L’instruction sémantique est :
(if x then s 1 else s 2 end, E)
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 E(x) n’est pas un booléen (true ou false), lever une condition d’erreur.
• Si E(x) est true, empiler (s 1 , E).
• Si E(x) est false, empiler (s 2 , E).
– Si la condition d’activation est fausse, ne pas continuer l’exécution. L’état d’exécution reste inchangé. Nous disons que l’exécution suspend. L’arrêt peut être
temporaire. Si une autre activité dans le système rend vraie la condition d’activation, l’exécution pourra reprendre.
L’appel de procédure
L’instruction sémantique est :
({x y 1 · · · ·y n }, E)
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 E(x) n’est pas une valeur procédurale ou est une procédure avec un
nombre d’arguments différent de n, lever une condition d’erreur.
• Si E(x) a la forme (proc { $ z 1 · · · ·z n } s end, C E), empiler
(s, C E + {{z 1 → E(y 1 ), . . . , z n → E(y n )}).
– Si la condition d’activation est fausse, suspendre l’exécution.
Dans cette sémantique, les arguments formels sont z 1 , ..., z n et les arguments
effectifs sont y 1 , ..., y n .
La correspondance de formes (l’instruction case)
L’instruction sémantique est :
(case x of lit(feat 1 : x 1 · · · feat n : x n ) then s 1 else s 2 end, E)
© Dunod – La photocopie non autorisée est un délit
i
i
i
i
i
i
i
i
2.4 La sémantique du langage noyau
67
L’instruction conditionnelle (l’instruction if)
L’instruction sémantique est :
(if x then s 1 else s 2 end, E)
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 E(x) n’est pas un booléen (true ou false), lever une condition d’erreur.
• Si E(x) est true, empiler (s 1 , E).
• Si E(x) est false, empiler (s 2 , E).
– Si la condition d’activation est fausse, ne pas continuer l’exécution. L’état d’exécution reste inchangé. Nous disons que l’exécution suspend. L’arrêt peut être
temporaire. Si une autre activité dans le système rend vraie la condition d’activation, l’exécution pourra reprendre.
L’appel de procédure
L’instruction sémantique est :
({x y 1 · · · ·y n }, E)
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 E(x) n’est pas une valeur procédurale ou est une procédure avec un
nombre d’arguments différent de n, lever une condition d’erreur.
• Si E(x) a la forme (proc { $ z 1 · · · ·z n } s end, C E), empiler
(s, C E + {{z 1 → E(y 1 ), . . . , z n → E(y n )}).
– Si la condition d’activation est fausse, suspendre l’exécution.
Dans cette sémantique, les arguments formels sont z 1 , ..., z n et les arguments
effectifs sont y 1 , ..., y n .
La correspondance de formes (l’instruction case)
L’instruction sémantique est :
(case x of lit(feat 1 : x 1 · · · feat n : x n ) then s 1 else s 2 end, E)
© Dunod – La photocopie non autorisée est un délit
