Ada Resources

Non-Commercial Tools and Components

AdaGIDE: a Win95/NT GUI front-end for GNAT -- PAL distribution

AdaGIDE -- Ada Graphical Integrated Development Environment --- is an integrated development environment for Windows 95/NT that sits on top of the freeware GNAT Ada compiler. AdaGIDE features: automatic code reformatting, colorized context-sensitive editing, comment/uncomment buttons, and Ada 95 help.

The source includes all files needed to build AdaGIDE, including the source for the AdaGIDE code reformatter. Sources are distributed freely under the terms of the GNU general public license.

GRASP Environment for UNIX/Windows -- PAL distribution

GRASP - Graphical Representations for Algorithms, Structures, and Processes - is a software development tool from Auburn University.

GRASP offers a new algorithmic level graphical representation for Ada software: the Control Structure Diagram (CSD). The primary impetus for creation of the CSD was to improve the comprehension efficiency of Ada 95, C, C++, Java, and VHDL source code and, as a result, improve software reliability and reduce software costs.

GRASP provides the capability to generate CSD's from Ada 95, C, and Java source code in both a reverse and forward engineering mode with a level of flexibility suitable for professional application. As of release 4.3, GRASP has been integrated with GNAT, GNU's Ada 95 compiler. This has resulted in a comprehensive graphical based development environment for Ada 95. The user may view, edit, print, and compile source code as CSD's with no discernible addition to storage or computational overhead.

The development of GRASP has been supported by research grants from NASA Marshall Space Flight Center and the Department of Defense Advanced Research Projects Agency (ARPA).

C2ada: a C to Ada translator

This tool, released by Intermetrics, is based on cbind (Ada-to-C binding generator), a tool previously made public by Rational Software Corporation.

C2ada is capable of generating thin Ada bindings, by translating C header files into Ada package specifications, and in addition is capable of translating C functions and statements into Ada package bodies. C2ada will do about 80% to 90% of the work of producing a thin binding or a translation, but the last 10% to 20% of the work must still be done manually. The program is free, includes source code, has no warranty, and is released to the Ada community in the hope that it will be useful. Intermetrics has used C2ada to produce Microsoft Windows, X Windows, and GCCS bindings

The Free Ada 95 Booch Components

The Booch Components are organized in three major areas: Tools, Support, and Structs. The Tools category provides algorithmic abstractions (Searching, Sorting, etc.). The Structs category provides an array of structural abstractions (Bags, Collections, Deques, Graphs, Lists, Maps, Queues, Rings, Sets, Stacks, Sequences, and Trees). The Support category contains all the "concrete" forms, plus structures to create the components. The source of the Ada 95 Booch Components will be and remain free.

The University of Scranton Data Structure Component Suite

These Ada95 components (version 2.03) have been compiled using GNAT v2.06. The components are presented AS IS. Versions of these components have been used in various courses, but have not been thoroughly tested. We appreciate feedback on the use of these components, especially error reports. We are committed to maintaining these components. This work is supported through DISA grant DCA100-94-1-005. Contact:

There are more than 100 packages is this suite of components. This suite includes examples of stacks, queues, two types of list packages, binary and n-ary tree packages, heaps, priority queues. The two types of lists packages are a positional paradigm list package and a recursive paradigm list package. The recursive paradigm list package is a typical lisp-like list package. The positional paradigm list package navigates a current viewing position around the structure.

Collected Algorithms from ACM (CALGO)

CALGO is a collection of algorithms, originally published in the Communications of the ACM (CACM Algorithms Dept., from 1960) and then transferred in 1975 to the ACM Transactions on Mathematical Software.

The ACM has now made CALGO available on-line. The algorithms are either in original form or translated into other languages.

ada2html: Source code to HTML

This is another pre-processor that converts Ada source code to HTM, written by David A. Wheeler. Ada2html adds a number of hypertext links directly between compilation units, something that src2www (see below) does not do.

src2fm: Source code to FrameMaker

This is a pretty-printer for Ada, written by Michal Young, Purdue University. Currently src2fm produces FrameMaker. Like many of the other freeware tools mentioned in this section, src2fm is a spinoff of the Arcadia project.

src2www: Source code to HTML

This is a pre-processor that converts source code into a web of HTML pages, written by Michal Young, Purdue University. Most of the source code is the same as src2fm, with an html driver substituted for the MIF driver. The formatting is not nearly as nice as in FrameMaker, but there are scripts to produce an alphabetical list of declarations both within each file and across a set of files. To see what you can get, there are examples of converted Ada and C code.

ADEPT: Ada 95 Distributed Execution and Partitioning Toolset

This is a set of Annex E tools, designed for use with GNAT. Includes a partial implementation of Posix 1003.5 (an Ada 83 binding for the POSIX System Application Program Interface).

Anna: formal specifications

Anna is a language for formally specifying the intended behavior of Ada programs. It extends Ada with various different kinds of specification constructs from ones as simple as assertions, to as complex as algebraic specifications. A toolset has been implemented at Stanford for Anna, including:

  1. standard DIANA extension packages, parsers, pretty-printers;
  2. a semantic checker;
  3. a specification analyzer;
  4. an annotation transformer; and
  5. a special debugger that allows program debugging based on formal specifications

All tools have been developed in Ada and are therefore extremely portable. Anna has thus been ported to many platforms. For more information send e-mail to "". Before downloading the huge Anna release, you may wish to copy and read some Anna LaTeX reports.


AdaMakeGen is an Arcadia tool that scans the source code of an Ada system and creates a Makefile to compile the system in the correct order. Adamakegen handles libraries, all of Ada and even the special case that requires the bodies of units with pragma inlines or generics to be compiled before they are used. Adamakegen is Verdix/SunAda specific, but conversion to other compilers would be relatively easy. Most of the Arcadia software is distributed with Adamakegen generated Makefiles.

aflex/ayacc: lexical and syntax analyzers

An Arcadia Project consortium member, the University of California, Irvine, has produced tools for generating lexical scanners and parsers, similar to the Unix lex and yacc tools, but written in Ada and which generate Ada output. These tools are copyrighted, but are freely redistributable (README).

The DARPA sponsored Arcadia Project is a consortium research effort aimed at addressing a broad range of software environment issues.

Chimera: Heterogeneous Hypermedia System

An Arcadia Project consortium member, the University of California, Irvine, has announced (on November 15, 1994) the release of version 1.0 of the heterogeneous hypermedia system, Chimera.

Chimera is an open, serverized, hypermedia system that supports n-ary links between heterogeneous tools and applications in a network. Objects manipulated by separate applications can be linked together through Chimera. From the user's standpoint, for example, while working with one object in one application, an anchor on the displayed object may be selected, causing another application to start up, displaying a related (linked) object. Chimera comes with bindings to C and Ada; bindings to several popular tools have been constructed. Chimera makes no assumptions or demands regarding user interface system employed or how or where objects are stored.

Chimera embodies the following technical attributes: heterogeneous object editor & viewer support, anchors specialized to particular views, multiple-view, concurrent, and active displays, links across heterogeneous object managers, and n-ary links.

Chimera comes with application programming interfaces (APIs) for clients written in the Ada and C programming languages. In future releases we plan to provide additional APIs for C++, SmallTalk, and tcl.

Chiron: graphical user interface development

An Arcadia Project consortium member, the University of California, Irvine, has produced Chiron, a system which provides tools for assisting in the development of graphical user interfaces and provides a run-time system for managing and supporting their dynamic behavior.

The objective of the Chiron system is to reduce long-term costs associated with the development of graphical user interface (GUI) software. It achieves this objective by providing key interface layers that are resilient to change, and strongly separating the application from its user interface code, as well as the user interface code from the underlying toolkit. The Chiron development tools currently only support clients written in Ada.

Arpc: remote procedure calls

An Arcadia Project consortium member, the University of Colorado, Boulder, has produced Arpc, an extension to the publically available ONC RPC/XDR system (version 4.0, from Sun Microsystems), including capabilities for:

  1. Combined client server support
  2. Peer communication style
  3. request acknowledgment
  4. Exception returns
  5. Decomposition of functionality
Arpc is a useful improvement over standard ONC. It is intended to be used with the Arcadia Q system (see below).

Q: messaging system

An Arcadia Project consortium member, the University of Colorado, Boulder, has produced Q, a software bus system used as part of the ARPA sponsored Arcadia project. Q provides both remote procedure call (RPC) and message-passing semantics as a layer above Unix sockets. It uses the Open Network Computing (ONC) industrial standard.

Q supports several important capabilities:

  1. Multi-language support: both embedding and interoperability.
  2. ONC RPC compatibility.
  3. Version of XDR for Ada.
  4. Implementation of clients and servers is orthogonal to their mapping to Unix processes. This means that a single Unix process can contain arbitrary collections of clients and servers.
  5. Q extends the existing ONC remote procedure-call (RPC) paradigm to allow more flexible control.
Additionally, Q provides a set of matched C and Ada interfaces designed to support interprocess communication between these two languages. Certain of these adaptations were necessitated by the lack of key C language features in the Ada language. Additional features were inspired by language features present in the Ada language which are not commonly found in C language implementations. Q defines an interprocess communication model common to both languages.

In order to construct Q, you will also need the Arpc support package (see above). Arpc is a re-engineered version of the publically available Sun ONC RPC/XDR, version 4.0.

Adatcl: access to Tcl

An Arcadia Project consortium member, the University of Colorado, Boulder, has produced Adatcl, which allows to run Tcl programs and to write Ada code defining new Tcl procedures.

IRIS-Ada Toolset

IRIS-Ada is an Arcadia collection of tools for creating and manipulating IRIS representations of Ada programs. IRIS is a language-independent abstract syntax graph.


Pleiades is an Arcadia tool that accepts Ada-like descriptions of graph, relation, and relationship types and generates Ada implementations of the corresponding abstract data types, including operations for creating, manipulating, storing, and retrieving instances of these types. The generated packages are designed to limit the need for recompilation when type descriptions are modified during development. The generated packages use a uniform model of persistence that supports dynamic control over the persistence of instances. The persistence mechanism has been designed so that it can be easily ported to different storage management systems.


Plumber is an Arcadia tool that assists programmers tracking down heap memory leaks in Ada. It replaces the hooks in the SunAda compiler for NEW and UNCHECKED_DEALLOCATION with versions that keep additional information. Plumber does not require any changes to your source code or even recompilation, just a relink. When you link your Ada program with plumber, a list of all of the memory blocks that were allocated but never freed is put into a log file at the end of execution. The information about each block includes its address, size and the call stack from when it was created. Plumber also catches attempts to free the same memory twice (immediately instead of causing an infinite loop at the next NEW).

Plumber is SunAda and SPARC specific and requires gcc. It has been successfully applied to the Arcadia tools ProDAG, Chiron and Chimera, so it should work with most systems. It degrades the run-time performance, but the tools still run.

TIG: The Task Interaction Graph Toolset

TIG is an Arcadia collection of data abstractions and tools for generating and analyzing Task Interaction Graphs (TIGs). TIGs are an internal representation that compactly represent potential concurrent behavior. The input to TIGs is a control flow graph representation (see below).

CFG: The Control Flow Graph Toolset

CFG is an Arcadia tool that accepts both a description of a programming language in terms of IRIS operators and a description of the desired CFG representation of those operators and creates an Ada implementation of an abstract data type to create and manipulate CFGs of that type. A generated control flow graph package for Ada-IRIS is provided.

more Arcadia components/tools

An Arcadia Project consortium member, the Laboratory for Advanced Software Engineering Research (LASER) at University of Massachusetts, Amherst, has produced several software components/tools.

ACE: Ada Command Environment -- mirror

The Unisys STARS Center provides ACE, a common, Ada-oriented interface for diverse host environments. Through the use of Ada ADTs (abstract data types) ACE provides an interactive Ada interface to the host environment. This interface promotes ACE's use of Ada as a command language, and thus helps to define a consistent, Ada-oriented development environment. ACE supports rapid, interactive prototyping of Ada applications that are portable across a heterogeneous set of system architectures. Interfaces to the X Window System have been incorporated.

RLF: Reusability Library Framework -- mirror

RLF, provided by the Unisys STARS Center, is a knowledge-based software system designed and implemented primarily to enable the development of domain-specific reuse libraries. The framework has been implemented in Ada, using basic principles of software engineering, and is both extensible and integrable with other Ada systems. The RLF includes a semantic network subsystem (AdaKNET) and a rule-driven inferencing subsystem (AdaTAU) which are used to record domain knowledge and heuristics in a form suitable for use within Ada applications.

Besides the creation of several kinds of reuse librarian applications, RLF has been used to represent process model descriptions, capture Ada and heuristic testing information for use by an Ada unit test plan generator, and to actively aid a documentation specialist in producing structured technical documentation from templates and a knowledge-based model of the document production software being used.

CAMP: Common Ada Missiles Packages

CAMP, developed by the US Air Force, is a collection of 444 Ada software components. This is a description found among the Software Tools of the Data & Analysis Center for Software (DACS), managed by the Rome Laboratory.

RGB: Reusable Graphical Browser
Well, where is it gone?

This reusable software component, provided by the Unisys STARS Center, implements a graphical user interface for viewing the contents of an object management system. Its purpose is to facilitate the construction of various browsing tools, serving as the user interface component of those tools. The generic application interface and tailorable user interface promote portability of graphical browsing tools by isolating them from the underlying graphics system. Tool builders need not be familiar with the intricacies of graphics packages or windowing systems to use this product.

RGB is implemented in Ada, with the exception of one small routine, coded in C. The implementation is compatible with Version 11, Releases 3 and 4 of the MIT X Window System and is dependent upon the Unisys STARS Ada/Xt Toolkit.

Note: Several tools and components from STARS used to be available through anonymous FTP. They aren't anymore, because the ASSET repository has disallowed such connections (it seems that ASSET will turn into a commercial software repository). Some STARS items may now be found in PAL, but you need help to know what to search for and where. It seems that AdaNET software engineers will help (have been helping) people search for software in PAL. Both PAL and AdaNET are government-sponsored efforts and try to be software repositories.

Page last modified: 1998-12-25