Discussion:
Place des aspects dans les spécifications de sous-programmes abstraits.
(trop ancien pour répondre)
Blady
2018-11-29 06:59:49 UTC
Permalink
Bonjour,

Le manuel de référence Ada 2012 indique section 3.9.3 :
abstract_subprogram_declaration ::=
[overriding_indicator]
subprogram_specification is abstract
[aspect_specification];

Ce qui donne par exemple :
procedure Envoi (M : Message) is abstract with Pre'Class => not Vide (M);

alors que si le sous-programme n'est pas abstrait cela donne :
procedure Envoi (M : Message) with Pre'Class => not Vide (M);

de même pour le corps d'une sous-programme :
procedure Envoi (M : Message) with Pre'Class => not Vide (M) is
begin
...
end;

Pourquoi faut-il séparer les aspects de la signature du sous-programme
avec "is abstract" ?
(de même pour "is separate", "is null" et "is (expression)")

Merci Pascal.
J-P. Rosen
2018-11-29 09:44:21 UTC
Permalink
Post by Blady
Bonjour,
abstract_subprogram_declaration ::=
    [overriding_indicator]
    subprogram_specification is abstract
        [aspect_specification];
procedure Envoi (M : Message) is abstract with Pre'Class => not Vide (M);
procedure Envoi (M : Message) with Pre'Class => not Vide (M);
procedure Envoi (M : Message) with Pre'Class => not Vide (M) is
begin
...
end;
Pourquoi faut-il séparer les aspects de la signature du sous-programme
avec "is abstract" ?
(de même pour "is separate", "is null" et "is (expression)")
C'est de la syntaxe, donc on peut faire ce que l'on veut, et le choix
correspond au feeling esthétique de la majorité de l'ARG...

Pour un corps de sous programme, renvoyer les aspects après le "end"
aurait été vraiment trop loin. Pour les autres, il a été considéré que
"abstract" (qui est une propriété fondamentale) était plus important que
les clauses d'aspect, qui sont plus ou moins des indications annexes "en
plus". Il faut aussi considérer que les clauses d'aspect peuvent être
assez longues, donc rejeter le "abstract" après les clauses aurait
risqué de ne pas être assez visible.
--
J-P. Rosen
Adalog
2 rue du Docteur Lombard, 92441 Issy-les-Moulineaux CEDEX
Tel: +33 1 45 29 21 52, Fax: +33 1 45 29 25 00
http://www.adalog.fr
Continuer la lecture sur narkive:
Loading...