2. Überblick und Grundlagen
 
zurück
2.7 Übersetzungsreihenfolge


In der Semantik von Ada wird eine Übersetzungsreihenfolge vorgegeben, deren Einhaltung durch die Programmbibliothek zu überwachen ist.
Die Grundregel besteht darin, daß eine Bibliothekseinheit übersetzt sein muß, bevor sie von einer anderen Einheit (Bibliothekseinheit oder sekundäre Einheit) benutzt werden kann, d. h.:
  • zuerst müssen alle Bibliothekseinheiten übersetzt worden sein, von denen eine betrachtete Übersetzungseinheit abhängt;
  • bei generischen Einheiten und solchen Einheiten, für die das Pragma inline zutrifft, muß auch der Rumpf (d. h. eine sekundäre Einheit) vor der Referenzierung übersetzt sein;
  • Spezifikationen von Übersetzungseinheiten müssen vor ihren korrespondierenden Rümpfen übersetzt werden, da die Abhängigkeiten der Spezifikation auch für den Rumpf gelten;
  • Falls eine Einheit über Untereinheiten (gekennzeichnet durch das Schlüsselwort separate) verfügt, so muß die Einheit vor ihren Untereinheiten übersetzt werden.
Ansonsten existieren für die Übersetzungsreihenfolge von Rümpfen keine Vorschriften.

Der Übersetzungsaufwand, der bei einer Codeveränderung erforderlich ist, hängt entscheidend von der Aufteilung der Übersetzungseinheiten auf Dateien ab. Falls der verwendete Übersetzer nicht inkrementell arbeitet, ist der Übersetzungsaufwand um so größer, je mehr Übersetzungseinheiten in einer Datei gespeichert sind. In diesem Fall werden auch alle unveränderten Programmeinheiten der Datei übersetzt und davon abhängige Übersetzungseinheiten obsolet gemacht. Dadurch sind also zusätzliche, aber eigentlich "unnötige", Übersetzungsläufe erforderlich, da es sich um unveränderten Quellcode handelt und somit auch kein veränderter Objektcode entstehen kann.

Hierzu gilt:
  • Um die Bestimmung der erneut zu übersetzenden Einheiten im Falle einer Veränderung des Codes muß sich der Benutzer eines Ada-Systems im allgemeinen nicht selbst kümmern. Diese Aufgabe wird durch den Bibliotheksmechanismus bzw. durch dessen Verwaltungsprogramme erfüllt.
  • Falls der Übersetzungslauf nicht fehlerfrei terminiert, kann kein ausführbares Programm erzeugt werden. Der Zustand der Programmbibliothek ist verändert, weil alle fehlerfrei übersetzten Programmeinheiten eingetragen wurden. Nach Behebung des Fehlers muß der Übersetzungslauf daher nicht wieder von vorne beginnen. Er kann bei der zuletzt fehlerhaften Übersetzungseinheit fortgesetzt werden.


 
zurück
 Index   Ada Tour - Dokumentation  
© 2003 Förderverein Ada Deutschland e.V.