Publikation

Crosscompiler am Beispiel der Übersetzung von Fortran nach Ada

Outline:

H. Dobler - Crosscompiler am Beispiel der Übersetzung von Fortran nach Ada - Trauner Verlag Linz, 1994, pp. 1-212

Abstract:

Fortran ist eine der ältesten Programmiersprachen. Im Bereich der technisch-wissen¬schaft¬li¬chen An¬wen¬dun¬gen konnte sie bis heute ihre Vorrangstellung behaupten. Seit über zwan¬zig Jahren wurden und werden große Mengen an Software in For¬tran geschrieben. Diese Soft¬ware stellt eine große Investition für ihre Hersteller und ein unschätzbares Kapital für ihre Anwender dar. Ada ist eine der modernsten Programmiers¬prachen. Sie enthält Konzepte, die für die neun¬zi¬ger Jahre — vielleicht darüber hin¬aus — richtungsweisend sein können. Ada wird auf¬grund der Stan¬dardisierung, der Verfügbarkeit von Implementierungen und der An¬pas¬sung an neue Bedürf¬nisse in manchen Bereichen die führende Rolle von Fortran über¬nehmen. Ein Ausweg aus der von vielen beklagten Softwarekrise führt über den Weg der Wieder- und Weiter¬verwendung von Altsoftware. Deshalb ist ein Werkzeug, das Fortran-Pro¬gram¬me nach Ada übersetzt, wegen der Verschiedenheit der beiden Sprachen nicht nur von wis¬sen¬schaft¬lichem Interesse, sondern auch von wirt¬schaft¬licher Bedeutung. Diese Idee ist aller¬dings nicht neu; einige solcher Systeme sind bereits ver¬fügbar und in der Literatur beschrieben. Diese Systeme leiden aber alle entweder unter zu großen Ein¬schränkungen des über¬setz¬baren Sprach¬umfangs oder an der Ineffizienz der von ihnen erzeug¬ten Ada-Programme. Die Ziele der in der vorliegenden Dissertation beschriebenen Arbeit lagen darin, Techniken der Kreuz¬kompilation zu studieren, eine softwaretechnisch ausgereifte neue Implementierung her¬zu¬stel¬len und dabei die Schwächen der oben erwähnten Systeme zu beseitigen, insbesondere aber die Behandlung des gesamten Fortran 77-Sprachumfangs zu ermöglichen. Daneben sollte Ada auf seine Taug¬lich¬keit als Imple¬men¬tierungs¬sprache unter¬sucht werden. Die wesent¬lichen Kon¬zepte, die beim Entwurf und der Implementierung dieses Systems zur Anwendung kamen, lagen • in der Verwendung einer attributierten Grammatik, • im Einsatz von Compiler-Gene¬ratoren zur Her¬stel¬lung des Front¬ends und • in der Verwendung von zwei rechner¬internen Zwischen¬spra¬chen. Ohne An¬wen¬dung eines Compiler-Gene¬rators hätte schon der Imple¬men¬tierungs¬aufwand für einen handgeschriebenen Parser den Zeit¬rahmen ge¬sprengt. Der Auf¬wand, den der Einsatz von zwei Zwischensprachen erfor¬derte, hat sich gelohnt, da dieser Aufwand bei der Imple¬men¬tierung der Fortran-Ada-Trans¬for¬mation und bei der Her¬stellung des Backends mehrfach ein¬ge¬spart werden konnte. Außerdem wurde dadurch eine klare Struk¬turierung des Übersetzer¬pro¬gramms er¬möglicht, das aus stark von¬ein¬ander entkoppelten, und somit gut test- und wart¬baren Funk¬tionseinheiten besteht. Als Ergebnis der Arbeit entstand ein großes Softwaresystem, das aus zwei Kom¬po¬nen¬ten besteht: dem eigentlichen Über¬setzer¬programm — dem Crosscompiler — und einer Bibliothek von Ada-Paketen zur Unter¬stüt¬zung der vom Crosscompiler erzeugten Ada-Programme — dem Lauf¬zeit¬system. Der Crosscompiler behandelt den gesamten Sprachumfang von For¬tran 77, und er erzeugt gut les- und wartbare Ada-Programme, deren Laufzeiteffizienz nur wenig unter jener der ursprüng¬lichen Fortran-Programme liegt. In der Kombination der angewandten Realisierungskonzepte mit der vollständigen Behandlung von Fortran 77 und der guten Laufzeiteffizienz der Zielprogramme liegt der eigentliche wissen¬schaft¬liche Neuigkeitswert dieses Systems, der es von anderen Systemen dieser Art abhebt.