The Compilation of Ada

The Ada programming language has been in use for 12 years and a major revision of the language, now called Ada 95, was adopted as a new international standard on 15 February 1995. There have been many accounts of the use of Ada 83 in a wide variety of applications but little has been published about...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
Veröffentlicht in:Software, practice & experience practice & experience, 1996-08, Vol.26 (8), p.863-909
Hauptverfasser: FIRTH, J. R., FORSYTH, C. H., WAND, I. C.
Format: Artikel
Sprache:eng
Schlagworte:
Online-Zugang:Volltext
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
Beschreibung
Zusammenfassung:The Ada programming language has been in use for 12 years and a major revision of the language, now called Ada 95, was adopted as a new international standard on 15 February 1995. There have been many accounts of the use of Ada 83 in a wide variety of applications but little has been published about the construction, performance and correctness of Ada compilers. This paper details the design and construction of the York Ada compiler and examines the major technical issues that determined the form of the software constructed. The principal objectives of the compiler were: (a) comprehensive error messages for the user; (b) compiler portability; and (c) convenient use in the UNIX environment. A subsidiary objective was to research the technical issues involved in the compilation of the (then) novel features of Ada (e.g. tasking). The principal technical innovations of the resulting compiler were the use of software tools to construct some of the syntax‐based parts of the system, and use of a machine description and tree automata to support portable code generation. The resulting compiler is small, reasonably fast, and easy to move from machine to machine. It will compile very large programs, involving many units and libraries, and integrates well with the UNIX environment. The compiler has been ported to six different architectures and validated under four different versions of the Validation Test Suite; it has been used widely academically and is sold commercially. Based upon this accumulated experience, we examine critically the compiler's design and construction. We conclude that the lack of a rigorous language definition made the design and construction particularly difficult, but that the portability method employed was successful. With care, the compiler for a large language need not be huge; its construction is then possible using a small team. This compiler and its tool set would not, however, pass a rigorous hazard analysis and should not be used for the construction of safety‐critical systems.
ISSN:0038-0644
1097-024X
DOI:10.1002/(SICI)1097-024X(199608)26:8<863::AID-SPE37>3.0.CO;2-4