The alpha page shows some experimental stuff, it comes in English
right below and in French further below.
English :
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.
JGNAT (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:
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.
I've corrected some links in Ada carbon API framework for
searching in XCode: Ada.framework.tgz
(put in /Developer/Extras).
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)
I've added some Ada
code macros
(put in /Developer/Applications/Xcode.app/Contents/PlugIns
/TextMacros.xctxtmacro/Contents/Resources).
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:
/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.
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.
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.
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
JGNAT (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é:
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é.
J'ai corrigé quelques liens dans l'API Ada carbon
utilisée pour les recherches dans XCode: Ada.framework.tgz
(à mettre dans /Developer/Extras).
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)
J'ai ajouté des macros de code
Ada
(à mettre dans
/Developer/Applications/Xcode.app/Contents/PlugIns
/TextMacros.xctxtmacro/Contents/Resources).
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 :
/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).
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.
Correction de la bibliothèque Carbon pour XCode 2.2:
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.