À Propos De

Page d'Acceuil

Alpha

À Propos de

À Savoir

Contact

Cool

Création

Liens

Vous


Bienvenue chez Blady.

The alpha page shows some experimental stuff, it comes in English right below and in French further below.

Cocoa library in Ada (April 2013):

Hello, before I start programming an automatic parser for Cocoa framework headers, I want to share with you some interrogations.
Beside these questions I've made choices that I want to have feedback from potential future users.
Assuming, objective-c instance is hidden in an Ada tagged record in a package named from the class:

package NSObject is
-- Class reference declaration
NSObjectClass : constant ObjC.Class := ObjC.Runtime.Get_Class ("NSObject");
-- Instance type declaration
type TInst is tagged record
Inst : ObjC.id;
end record;
subtype TRef is TInst'Class;
-- Convenient declaration
subtype id is TInst'Class;
nil : constant TInst := (Inst => null);
-- Instance method declaration
function init (Self : TInst) return id;
-- Class method declaration
function alloc (From : ObjC.Class) return TInst;
end;

Please tell me if these lines are in the "way of coding" for Ada.
Here are the questions.
Don't hesitate to send me all remarks.

Mac Roman character with GNAT GPL 2005 (November 2005):

I wrote a very very preliminary version of Mac Roman accent characters
and Mac line endings translation : Text_IO
Usage :
$ gnatmake -a -gnatf write_mac_roman.adb
$ ./write_mac_roman
Please tell me if these modifications are in the "way of coding" for gnat.
Don't hesitate to send me all remarks.

JVM-GNAT (January 2012):

In May'09, JGNAT became JVM-GNAT which is supported again by AdaCore on Libre portal.
Binaries are available for Mac OS X Tiger PPC (GPL 2009) and MAC OS X Intel (GPL 2011) on Source Forge.
Follow the instructions and have fun with Connect Four example.

With Mac OS X Intel version, all seems to be fine but not with Applet, I've got an error: java.lang.ClassNotFoundException: Applet
A simple Ada Applet test example can be found here: Essai_Ada.zip
Has any one some clue? Is it due to wrong execution configuration? Is it due to wrong compilation?
Nevertheless, don't hesitate to report here if you try it.

All old JGNAT examples (344 KB) are updated in version 1.3p, though some compiler issues may appear with JRapid and Mandelbrot and applet executions issue an error "java.lang.ClassNotFoundException: Applet", see status.

Carbon Ada integration into XCode with GNAT (July 2009):

The integration of the compiler Ada GNAT with the native environment of development on Mac “XCode” is rather slow because of constant evolution of XCode and the multiplicity of the alternatives of GNAT on Mac. The GCC basic alternative is the one from FSF that took Drew Reynolds in version 4.5. Official alternative is the one from AdaCore Libre portal in version 4.3. Binaries are available for Mac OS X PPC on Source Forge. The compatible alternative Mac is the one from Apple modified by the MacAda team in version 3.3. Moreover, Apple integrated recently version 4.0 in XCode. In addition to Carbon Bindings for XCode 2.2, I've added:

  1. I've thus created Ada Carbon application project templates containing scripts, less in conformity regarding to mechanisms of XCode but more flexible with respect to the various versions available of the Ada compiler.
    Once the archive downloaded and opened, in case of XCode 2, put the 4 directories in:
    /Library/Application Support/Apple/Developer Tools
    or if you haven't admin rights:
    ~/Library/Application Support/Apple/Developer Tools
    or in case of XCode 2.5 or 3.x put in
    /Library/Application Support/Developer/Shared/Xcode
    or if you haven't admin rights:
    ~/Library/Application Support/Developer/Shared/Xcode
    The flexibility comes from the definition of the following parameters:
    GNAT_BINARIES = /usr/local/gnat/bin
    OTHER_ADAFLAGS = -gnatf -g -I/usr/local/Bindings/Frameworks
    OTHER_ADALINKFLAGS = /System/Library/Frameworks/Carbon.framework/Carbon
    ADA_CARBON_FRAMEWORK_LIB = /usr/local/Bindings/Frameworks/libAdaFrameworks.a
    You can either modify them according to the compiler used in menu XCode->Project->Edit Active Target->Build->All Settings or better create symbolic links on the compiler used.
  2. I've corrected some links in Ada carbon API framework for searching in XCode: Ada.framework.tgz
    (put in /Developer/Extras).
  3. I've added some Ada awareness in XCode : Ada 2005 langage syntaxe
    (already modified in archive from 1., else, in case of XCode 2, put in
    /Library/Application Support/Apple/Developer Tools/Plug-ins/AdaPlugin.pbplugin/Contents/Resources
    or if you haven't admin rights:
    ~/Library/Application Support/Apple/Developer Tools/Plug-ins/AdaPlugin.pbplugin/Contents/Resources
    or in case of XCode 2.5 or 3.0 put in
    /Library/Application Support/Developer/Shared/Xcode/Plug-ins/AdaPlugin.pbplugin/Contents/Resources
    or if you haven't admin rights:
    ~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/AdaPlugin.pbplugin/Contents/Resources)
  4. I've added some Ada code macros
    (put in /Developer/Applications/Xcode.app/Contents/PlugIns
    /TextMacros.xctxtmacro/Contents/Resources).
  5. I've added an Ada icon from myself. It isn't a so original design. But the background source code is actually Ada.
    You must have the admin rights. Copy the icon file adafile.icns in: adafile.icns
    /Developer/Applications/Xcode.app/Contents/Resources
    Add the 2 following lines (italic bold) in:
    /Developer/Applications/Xcode.app/Contents/Info.plist
    ...
    <dict>
    <key>CFBundleTypeExtensions</key>
    <array>
    <string>ada</string>
    <string>adb</string>
    <string>ads</string>
    </array>
    <key>CFBundleTypeIconFile</key>
    <string>adafile</string>

    <key>CFBundleTypeName</key>
    <string>Ada Source File</string>
    ...
    Kill the Finder to refresh icon database. Verify that Ada source files are bounded to XCode. Open Finder information on Ada source files (.ada, .ads, .adb) and select XCode for default application (modify all) if not set.
  6. For those who prefer to use the Terminal with for instance SEE editor (with Ada 2005 extension), here is a script which create a Mac OS X Carbon application with Ada source code:
    $ ./mk_ada_carb_rsrc.sh ada_carb_rsrc "-gnatf -g"
    The result is in directory build.
  7. Patch for XCode 2.2 Carbon Bindings:

Don't hesitate to send me all remarks.

C2Ada GNAT on MAC (December 2007):

C2Ada is an extremely useful utility for translating C code to Ada language.
I've haven't found ready to use package for Mac. Then I've downloaded source codes on SourceForge.
I modified few things to avoid errors on Mac.
Here is the differences.
Here is the complete source code (200 KB).
Build C2Ada on Mac OS X 10.4 with:
$ make PYTHON_TOP=/usr PYTHON_VER=python2.3 HERE=~/c2ada/branches/portability
Translate C program with:
$ ./c2ada -D__ppc__ -D__restrict= main.c
Don't hesitate to send me all remarks.

Java to Ada (April 2010):

J2Ada translates a Java valid source code in Ada source code. In this first version, a large part of Java syntax is translated. (see French comment below)
But up to now only the specification of the generated Ada unit is valid.
All Java code structure translations are not complete nor completely tested. The valid Java source code "essai.java" includes all tested structures.

For J2Ada usage see "readme.txt" included in the archive.
Don't hesitate to send me all remarks.

Source code of J2Ada (52 Ko - Ada 2005 - texte accentué en UTF-8).
History :
- 1.4b :
Add of importmgr.adb and importmgr.ads badly forgotten.
- 1.4a:
Management of empty parenthesis when a call is made without parameters.
Support of throws instruction and recursive reference in objects declaration.
Modification of static initializers, statements try, import and for.
- 1.3a:
Translation of Java control statements (assert, switch, for).
- 1.2a:
Translation of Java class into Ada package and object type.
Support of Java API.
- 1.1a:
Translation of simple classes is added.
- 1.0a:
First translator version for trials.

Back to summary

Caractères Mac Roman avec GNAT GPL 2005 (Novembre 2005) :

J'ai écris une version très très préliminaire de l'interprétation des
caractères accentués Mac Roman et des fins de ligne Mac : Text_IO

JVM-GNAT (Janvier 2012) :

En mai 2009, JGNAT devient JVM-GNAT qui est de nouveau maintenu par AdaCore sur le portail Libre. Des binaires prêts à l'emploi sont disponible sur Source Forge pour Mac OS X Tiger PPC (GPL 2009) and MAC OS X Intel (GPL 2011).
Suivez les instructions et amusez-vous avec Connect Four par exemple.

Avec la version Mac OS X Intel, tout semble bien fonctionner sauf les applets, j'ai l'erreur :
"java.lang.ClassNotFoundException: Applet"
Un exemple très simple d'applet est donné ici : Essai_Ada.zip
Est-ce dû à une mauvaise configuration ou un problème de compilateur ?
Quelqu'un a-t-il un début de réponse ?
Dans tous le cas, n'hésitez pas à envoyer vos remarques si vous l'utilisez.

Les anciens exemples JGNAT (344 Ko) ont été adaptés en version 1.3p avec une erreur résiduelle du compilateur et l'exception d'exécution des applets, voir le status.

Intégration d'Ada dans XCode et le Terminal avec Carbon en Ada et GNAT (Juillet 2009) :

L'intégration du compilateur Ada GNAT avec l'environnement de développement natif sur Mac "XCode" est assez lente du fait de l'évolution constante de XCode et de la multiplicité des variantes de GNAT sur Mac. La variante de base de GCC est celle de la FSF qu'à repris Drew Reynolds en version 4.5. La variante officielle est celle d'AdaCore sur le portail Libre en version 4.3. Un compilateur déjà prêt à l'emploi est disponible pour Mac OS X PPC sur Source Forge. La variante compatible Mac est celle d'Apple modifiée par l'équipe MacAda en version 3.3. De plus, Apple a intégré récemment la version 4.2 dans XCode. En supplément aux Carbon Bindings for XCode 2.2, j'ai ajouté:

  1. J'ai donc créé des modèles de projet d'applications Carbon en Ada à base de scripts, moins conforme aux mécanismes de compilation de XCode mais plus souple vis à vis des différentes versions disponibles du compilateur Ada.
    Une fois l'archive téléchargée et ouverte, pour XCode 2, placer les 4 répertoires dans le répertoire :
    /Library/Application Support/Apple/Developer Tools
    ou si vous n'avez pas les droits de l'administrateur :
    ~/Library/Application Support/Apple/Developer Tools
    ou pour XCode 2.5 ou 3.0 dans
    /Library/Application Support/Developer/Shared/Xcode
    ou si vous n'avez pas les droits de l'administrateur :
    ~/Library/Application Support/Developer/Shared/Xcode
    La souplesse vient de la définition des paramètres suivants:
    GNAT_BINARIES = /usr/local/gnat/bin
    OTHER_ADAFLAGS = -gnatf -g -I/usr/local/Bindings/Frameworks
    OTHER_ADALINKFLAGS = /System/Library/Frameworks/Carbon.framework/Carbon
    ADA_CARBON_FRAMEWORK_LIB = /usr/local/Bindings/Frameworks/libAdaFrameworks.a
    Vous pouvez soit les modifier suivant le compilateur utilisé avec le menu XCode->Project->Edit Active Target->Build->All Settings ou mieux créer des liens symboliques sur le compilateur utilisé.
  2. J'ai corrigé quelques liens dans l'API Ada carbon utilisée pour les recherches dans XCode: Ada.framework.tgz
    (à mettre dans /Developer/Extras).
  3. J'ai ajouté un plus grand support Ada dans XCode : syntaxe Ada 2005
    (déjà modifié dans l'archive du 1., sinon, pour XCode 2, à mettre dans
    /Library/Application Support/Apple/Developer Tools/Plug-ins/AdaPlugin.pbplugin/Contents/Resources
    ou si vous n'avez pas les droits de l'administrateur :
    ~/Library/Application Support/Apple/Developer Tools/Plug-ins/AdaPlugin.pbplugin/Contents/Resources)
    ou pour XCode 2.5 ou 3.0 dans
    /Library/Application Support/Developer/Shared/Xcode/Plug-ins/AdaPlugin.pbplugin/Contents/Resources
    ou si vous n'avez pas les droits de l'administrateur :
    ~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/AdaPlugin.pbplugin/Contents/Resources)
  4. J'ai ajouté des macros de code Ada
    (à mettre dans /Developer/Applications/Xcode.app/Contents/PlugIns
    /TextMacros.xctxtmacro/Contents/Resources).
  5. J'ai ajouté une icône personnalisée pour les sources Ada. Elle n'est pas très originale mais le code source en arrière plan est bien de l'Ada
    Vous devez avoir les droits administrateur. Copier le fichier adafile.icns dans : adafile.icns/Developer/Applications/Xcode.app/Contents/Resources
    Ajouter les 2 lignes suivantes (italique gras) dans:
    /Developer/Applications/Xcode.app/Contents/Info.plist
    ...
    <dict>
    <key>CFBundleTypeExtensions</key>
    <array>
    <string>ada</string>
    <string>adb</string>
    <string>ads</string>
    </array>
    <key>CFBundleTypeIconFile</key>
    <string>adafile</string>

    <key>CFBundleTypeName</key>
    <string>Ada Source File</string>
    ...
    Relancer le Finder pour rafraîchir la base de données des icônes. Vérifier que le lien est bien effectué en ouvrant les informations du Finder sur un source Ada (.ada, .ads, .adb) et sélectionner XCode par défaut (ouvrir avec et tout modifier).
  6. Pour ceux qui n'utilise que le Terminal et l'éditeur SEE (avec l'extension Ada 2005) par exemple, voici un script qui permet de créer une application Carbon Mac OS X avec compilation du programme Ada :
    $ ./mk_ada_carb_rsrc.sh ada_carb_rsrc "-gnatf -g"
    Le résultat est dans le répertoire build.
  7. Correction de la bibliothèque Carbon pour XCode 2.2:
    • appliquer les correctifs du fichier carbon-bindings-2.2
    • $ cd /usr/local/Bindings/Frameworks
    • $ sudo ./Compile

Ne pas hésiter à me faire toutes remarques.

C2Ada avec GNAT sur MAC (Décembre 2007) :

C2Ada est vraiment utile pour traduire du code C an langage Ada.
Je n'ai pas trouvé l'utilitaire prêt à être utilisé. J'ai alors téléchargé le code source depuis SourceForge.
J'ai fait quelques modification pour éviter les erreurs sur Mac.
Les différences.
Le code source complet (200 Ko).
Compiler C2Ada sur Mac OS X 10.4 avec:
$ make PYTHON_TOP=/usr PYTHON_VER=python2.3 HERE=~/c2ada/branches/portability
Traduire un programme C avec:
$ ./c2ada -D__ppc__ -D__restrict= main.c
Ne pas hésiter à me faire toutes remarques.

Java vers Ada (Avril 2010) :

J2Ada traduit un code source Java valide en code source Ada. Dans cette première version, une grande partie de la syntaxe générale du langage Java est traduite.
La traduction des littéraux est presque directe (manque les réels à base hexa) avec la prise en compte des caractères unicodes (16 bits), le type Java "char" est donc un type Ada "Wide_Character", voir java.ads.
Une variable tableau est traduite en deux temps : le type "array" de base avec un ou plusieurs indices et la variable comme "access" sur le type tableau conformément à Java qui considère les tableaux comme des pointeurs.
Les types paramétrisés ne sont pour l'instant pas traduit mais devraient l'être avec les paquetages génériques.
Les "packages" Java sont traduits par les arborescences des paquetages Ada sans suivre la convention de l'arborescence des répertoires. Les "imports" se traduisent par les clauses de contextes "with" et "use" avec la sélection du package adéquat qui reste à définir à partir de la bibliothèque courante.
La traduction de "Class" et "Interface" se fait naturellement par un paquetage augmenté si besoin d'un type étiqueté "Typ" (contenant les champs non "static" de la classe) associé à son pointeur "Ref is access Typ" conformément à Java qui considère les objets comme des pointeurs. Cette convention est issue de JGNAT, voir ci-dessus. Le code de la classe ou de l'interface reste à placer dans un corps de paquetage.
Les classes "Exceptions" restent à traduire.
Les structures de codes sont traduites simplement avec les équivalents directs (; en null;, label, if-then-else, assert, switch, while, do-while, for, break, continue, return, throw, synchronized, try-catch-finally), ainsi que les expressions (opérateurs unaires +, -, ++, --, ~, !, binaires *, /, %, +, -, <<, >>, >>>, relationnels <, <=, >, >=, instanceof, ==, !=, logiques &, ^, and |, conditionnels &&, ||, ?:, d'assignation simples = et composés *=, /=, %=, +=, -=, <<=, >>=, >>>=, &=, ^=, |=, de création "new", de conversion de types).
Les classes "Threads" ne sont pas traduites.
Les méthodes virtuelles de la classe sont traduites en primitives de l'objet. Les méthodes statiques sont traduites en fonctions classiques. Les champs statiques sont traduites en variables classiques. L'attribut "final" est traduit simplement par "constant". Les attributs public, private, protected, native, synchronized, abstract, threadsafe, transient, volatile, strictfp restent à traduire.
Toutes les traductions des structures de code Java ne sont pas complètes ni complètement testées. Le code source Java valide "essai.java" comporte toutes les structures testées.
Pour l'utilisation de J2Ada voir le texte "lisezmoi.txt" inclu dans l'archive.

Source de J2Ada (52 Ko - Ada 2005 - texte accentué en UTF-8).
Historique :
- 1.4b :
Ajout des fichiers importmgr.adb et importmgr.ads malencontreusement oubliés.
- 1.4a :
Gestion des parenthèses vides dans un appel de fonction sans paramètres.
Prise en compte de l'instruction throws et des références récursives d'objets.
Correction des initialisations statiques, des instructions try, import et for.
- 1.3a :
Ajout de la traduction des structures de contrôle Java (assert, switch, for).
- 1.2a :
Ajout de la traduction des classes Java en des paquetages et types objets Ada.
Ajout de la prise en compte des API Java.
- 1.1a :
Ajout de la traduction de classes simples.
- 1.0a :
Première version pour une démonstration du traducteur.

Retour au sommaire

Il est interdit de reproduire, même partiellement, le contenu de cette page sans autorisation écrite préalable.

Toutes les marques déposées sont la propriété de leur dépositaire.