Ausgangspunkt der Arbeit bildet die Feststellung, daß Datenbanksprachen (z.B. SQL) und Datenbankprogrammiersprachen (z.B. DBPL) eine benutzergerechte und anwendungsnahe Syntax zur Datenbankprogrammierung zur Verfügung stellen, die intern (z.B. durch Präcompiler oder Compiler) in Aufrufe eines Datenbank- oder Laufzeitsystems abgebildet wird. Andererseits sind bibliotheksorientierte Sprachen (z.B. C) von vornherein mit einer minimalen Syntax ausgestattet, lassen sich aber durch die Definition von Bibliotheken flexibel erweitern. Sprachen mit einem polymorphen Typsystem und Funktionen höherer Ordnung (z.B. TL) erreichen dieselbe Ausdrucksmächtigkeit und Sicherheit wie Datenbank(programmier)sprachen bei erhöhter Flexibilität. Allerdings geben weder die auf Funktionssignaturen aufbauenden Bibliotheksschnittstellen noch die mit minimaler Syntax formulierten Ausdrücke, die zudem oft stark geschachtelt sind, die Semantik ausreichend wieder, so daß gegenüber Datenbank(programmier)sprachen ein Nachteil bzgl. Verständlichkeit und Anwendungsnähe besteht.
Die Arbeit untersucht die Möglichkeit, diese Lücke durch Syntaxerweiterungsmechanismen basierend auf vorhandener Compilerbautechnologie zu schließen. Unter Einbeziehung der inzwischen historisch zu nennenden Ansätze aus den 60er Jahren (Leavenworth, Cheatham) und neuerer Arbeiten im Bereich funktionaler Sprachen (Kohlbecker, Cardelli) werden Syntaxerweiterungsmechanismen anhand eines phasenorientierten Compilermodells auf ihre Vor- und Nachteile untersucht. Dabei werden insbesondere Probleme der Benennung, Bindung und Typisierung bei Definition und Expansion von Syntaxerweiterungen in Betracht gezogen. Es wird ein Modell zur Lösung von Bindungsproblemen mit Hilfe von de Bruijn-Indices entwickelt und formalisiert.
Eine prototypische Implementation des Syntaxerweiterungsmechanismus basiert auf einem Subset der Sprache TL. Dazu wurden ein inkrementeller Parser-Generator entwickelt und der TL-Compiler erweitert. Die Arbeit enthält Beispiele, die die Eignung des Syntaxerweiterungsmechanismus sowohl für allgemeine Programmiersprachenkonstrukte (Schleifen, Bedingungen) als auch für datenbankspezifische Konstrukte (Anfragen, Transaktionen) zeigen.