  | 
 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.
 
 
  
 |