Auftragsentwicklung von Migrations-Compilern

Was ist ein Compiler, was ist Compilerbau?

Compiler sind Programme, die eine (Programmier-) Sprache in eine andere übersetzen. Alle Compiler bestehen aus den Softwareteilen Front-End und Back-End.

Das Front-End wird durch die Struktur der Eingabesprache bestimmt. Zum Front-End gehören die Lexikalische Analyse, die Syntaktische Analyse und die Semantische Analyse. Ein Repository übergibt die Ergebnisse der Analyse an das Back-End, das aus Optimierer und Code-Generator besteht.

Die Lexikalische Analyse liest die Eingabe durch und klassifiziert diese nach Eingabestücken wie Wörter, Zahlen und Zeichen.

Die Syntaktische Analyse analysiert diesen „Wortstrom“ und erkennt Sätze der Eingabesprache. Das heißt, sie überprüft, inwieweit die Eingaben der Programmiersprache zugehören und erstellt den Syntaxbaum.

Während der Semantischen Analyse wird mit Hilfe dieses Syntaxbaumes untersucht, ob die Konstrukte sinnvoll sind. Zusätzlich wird ein Repository mit Informationen zu Objekten und Symbolen aufgebaut.

Der Optimierer erkennt im Syntaxbaum die gespeicherten Konstrukte und markiert, welche Art der Ausgabe das Back-End schließlich wählen soll.

Der Codegenerator erzeugt den Zielcode. Dabei eine spezielle Beschreibungssprache zum Einsatz zu bringen, ist eine von uns entwickelte Technologie, die im Rahmen unserer wissenschaftlichen Arbeiten entstand.

Was sind Migrationscompiler?

Viele Compiler übersetzen eine Programmiersprache (z.B. C oder C++) in Maschinensprache (Assembler) oder erzeugen z.B. aus Java Code für eine Virtuelle Maschine. Dabei geht Abstaktion verloren – es entsteht Code, der nicht weiter bearbeitet werden kann und soll.

Migrations-Compiler hingegen versuchen eine Programmiersprache in eine andere Programmiersprache auf dem gleichen Abstraktionsniveau zu übersetzen – Entwicklung soll auch in dieser Sprache möglich sein. Migrationscompiler sind deshalb eine größere Herausforderung an den Compilerbauer.

Wer braucht heute noch neue Compiler?

Für alle gängigen Programmiersprachen und Dialekte gibt es heute natürlich schon Compiler zu kaufen oder gar kostenlos. Allerdings gibt es viele Projekte, die in Sprachen wie ROSI-SQL, INFORMIX-4GL, COBOL oder anderen exotischen Programmiersprachen erstellt wurden. Hier sind oft viele tausend Mannjahre Entwicklungszeit in Systemen investiert, die keine Zukunft haben oder große Wartungsaufwendungen erfordern.

An solchen Stellen setzen Migrationscompiler an und erlauben, die Investitionen in große Softwaresysteme weiter auf neuen Plattformen zu nutzen. So konnte zum Beispiel durch die Erstellung eines Migrationscompilers (R2C) das Toyota Händlersystem  „TOPCO“ von ROSI-SQL nach C++ migriert werden. Die Entwicklung von Compiler- und Laufzeitsystemen macht natürlich auch dann Sinn, wenn beim Deployment der Software ein Vorteil erzielt werden kann. Bei der Entwicklung des 4GL-Compilers für INFORMIX-4GL lag das Augenmerk vor allem auf einer Erweiterung der Fähigkeiten des Systems um grafische Oberflächen und variablere Datenbankanbindung.

Was noch?

Im Bereich Compilerbau-Technologie sind wir auch theoretisch tätig. In Zusammenarbeit mit der TU Ilmenau betreuten wir bis jetzt vier Diplomarbeiten:

  • Einsatz objektorientierter Methoden im Compilerbau
    Volker »Leo« Schubert, 1992
  • Verschachtelte Sprachen
    Thomas Pessler, 1995
  • Einsatz von formalen Sprachen zur Back-End-Beschreibung
    Ralf Müller, 1996
  • Programmiermodelle für Syntax-Analysatoren
    Sven »Frog« Schaepe, 2004