“doc” (Col. : Science Sup 17x24) — 2007/7/19 — 18:18 — page 96 — #106
i
i
i
i
i
i
i
i
96
2
• La programmation déclarative
lèvera une exception. L’exception est un tuple, illFormedExpr(E), qui contient
l’expression mal formée. Voici quelques appels d’Eval qui montrent comment gérer
l’exception :
try
{Browse {Eval plus(plus(5 5) 10)}}
{Browse {Eval times(6 11)}}
{Browse {Eval minus(7 10)}}
catch illFormedExpr(E) then
{Browse ´ *** Illegal expression ´#E#´ *** ´}
end
Si un appel de Eval lève une exception, le contrôle sera transféré à la clause catch
qui affichera un message d’erreur.
2.7.2 Le modèle déclaratif avec exceptions
Nous étendons le modèle déclaratif avec les exceptions. Le tableau 2.9 donne la
syntaxe du langage noyau étendu. Les programmes peuvent utiliser deux nouvelles
instructions, try et raise. Il y a aussi une troisième instruction, catch x then
s end, qui est utilisée pour définir la sémantique mais qui n’est pas utilisable par
le programmeur. L’instruction catch est une « balise » sur la pile sémantique qui
définit la frontière d’un contexte de capture d’exceptions. Voici la sémantique de ces
trois instructions.
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
| try s 1 catch x then s 2 end Contexte d’exception
| raise x end
Lève exception
Tableau 2.9 Le langage noyau déclaratif avec exceptions.
i
i
i
i
i
i
i
i
96
2
• La programmation déclarative
lèvera une exception. L’exception est un tuple, illFormedExpr(E), qui contient
l’expression mal formée. Voici quelques appels d’Eval qui montrent comment gérer
l’exception :
try
{Browse {Eval plus(plus(5 5) 10)}}
{Browse {Eval times(6 11)}}
{Browse {Eval minus(7 10)}}
catch illFormedExpr(E) then
{Browse ´ *** Illegal expression ´#E#´ *** ´}
end
Si un appel de Eval lève une exception, le contrôle sera transféré à la clause catch
qui affichera un message d’erreur.
2.7.2 Le modèle déclaratif avec exceptions
Nous étendons le modèle déclaratif avec les exceptions. Le tableau 2.9 donne la
syntaxe du langage noyau étendu. Les programmes peuvent utiliser deux nouvelles
instructions, try et raise. Il y a aussi une troisième instruction, catch x then
s end, qui est utilisée pour définir la sémantique mais qui n’est pas utilisable par
le programmeur. L’instruction catch est une « balise » sur la pile sémantique qui
définit la frontière d’un contexte de capture d’exceptions. Voici la sémantique de ces
trois instructions.
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
| try s 1 catch x then s 2 end Contexte d’exception
| raise x end
Lève exception
Tableau 2.9 Le langage noyau déclaratif avec exceptions.
