acheter priligy acheter cialis acheter propecia
Accueil » Divers

GNAT GPL 2012 est paru!

27 juin 2012 2 commentaires

La nouvelle version publique de GNAT, avec le support d’Ada 2012, vient de sortir.

Comme d’habitude, il est disponible sur http://libre.adacore.com

2 commentaires »

  • Vivien a dit:

    J’ai installé Gnat 2012 sous windows XP et sous linux Mint 12. Sous linux aucune compilation n’aboutit et j’obtiens toujours le même message d’erreur disant que le fichier crtl.o n’est pas trouvé.
    Sous windows, je fais quelques essais pour me familiariser avec la nouvelle norme ADA 2012 et j’observe une curieuse incompatibilité entre des déclarations qui devraient suivant ma compréhension être tout à fait indépendantes :

    Le code suivant compile et s’exécute bien :

    with Ada.Text_IO; use Ada.Text_IO;
    with ada.containers.indefinite_holders;

    procedure Test2_Ada12 is

    type letters is (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) ;
    subtype my_letters is letters with static_predicate => my_letters in a|e|i|o|u|w..z;

    — package vocabulary is new ada.containers.indefinite_holders (Element_type => string);
    — use vocabulary;
    — Voc : vocabulary.Holder;

    begin

    for letter in my_letters loop
    put_line(my_letters’image(letter));
    end loop;

    — replace_element(voc, « AZERTY »);

    end Test2_Ada12;

    Par contre si je rends actives les 4 lignes commentées :

    with Ada.Text_IO; use Ada.Text_IO;
    with ada.containers.indefinite_holders;

    procedure Test2_Ada12 is

    type letters is (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) ;
    subtype my_letters is letters with static_predicate => my_letters in a|e|i|o|u|w..z;

    package vocabulary is new ada.containers.indefinite_holders (Element_type => string);
    use vocabulary;
    Voc : vocabulary.Holder;

    begin

    for letter in my_letters loop
    put_line(my_letters’image(letter));
    end loop;

    replace_element(voc, « AZERTY »);

    end Test2_Ada12;

    J’obtiens les erreurs de compilation suivantes :

    test2_ada12.adb:7:76: « a » is undefined
    test2_ada12.adb:7:78: « e » is undefined
    test2_ada12.adb:7:80: « i » is undefined
    test2_ada12.adb:7:82: « o » is undefined
    test2_ada12.adb:7:84: « u » is undefined
    test2_ada12.adb:7:86: « w » is undefined
    test2_ada12.adb:7:89: « z » is undefined

    Compilation échouée.

    Pourquoi instanciation du générique Indefinite_Holders rend-elle incorrecte la déclaration dut ype énuméré letters ? Ca semble complètement incompréhensible.

  • admin a dit:

    Cela n’a rien à voir avec les containers, mais avec l’utilisation d’une chaine de caractères. Le container est instancié sur String, or Letter n’est pas un type caractère, mais un énumératif dont les litéraux se trouvent n’avoir qu’une seule lettre dans leur nom.

    On pourrait à la rigueur le définir comme un type caractère de cette façon:
    type letters is (‘a’,’b’,’c’, etc..) ;
    (noter les apostrophes)
    mais ce type serait différent du type Character, et donc incompatible avec le type String.

    Peut-être que ce que tu veux faire est tout simplement:
    subtype my_letters is Character with static_predicate => my_letters in a|e|i|o|u|w..z;

Laissez un commentaire

Ajoutez votre commentaire ci-dessous, ou créez un rétrolien depuis votre site. Vous pouvez également souscrire à ces commentaires par RSS.

Merci de vous conformer à la netetiquette.

Vous pouvez utiliser ces balises :
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>