Strukturbaumorientierte Sprachentwicklung mit Eli

Bachelorarbeit

Das Konzept der sprachorientierten Programmierung (LOP = Language Oriented Programming) erlaubt es, den Zeitaufwand der Software-Entwicklung erheblich zu reduzieren: Anstatt das gesamte Projekt in einer GPL zu implementieren, werden Programmteile jeweils in einer anwendungsspezifischen Sprache (DSL = Domain Specic Language) formuliert, die exakt auf die jeweilige Problemstellung zugeschnitten ist. Da DSLs nicht universell einsetzbar sein müssen, können diese im Gegensatz zu GPLs sehr nah an den Notationen der Fachdomäne ausgerichtet werden, wodurch nicht nur eine elegante und einfache Programmierung ermöglicht, sondern auch eine zusätzliche Dokumentation des in dieser Sprache formulierten Programmcodes erspart wird.
Heutzutage werden die Möglichkeiten sprachorientierter Programmierung durch zwei wesentliche Faktoren eingeschränkt: Einerseits muss die Syntax der Sprache harten Anforderungen genügen, damit ein Übersetzer aus textuellem Programmcode die tatsächliche Programmstruktur (einen sog. abstrakten Strukturbaum) herleiten kann. Dies schränkt insbesondere die Möglichkeiten einer späteren Spracherweiterung sowie einer Kombination verschiedener Sprachen ein, da die Grammatik, welche die konkrete Syntax speziziert, hierdurch schnell mehrdeutig werden kann. Andererseits ist es aufwändig, geeignete Editoren für neue DSLs zu entwickeln, die den Programmierer bei seiner Arbeit unterstützen können, da Features wie z. B. Refactoring stets Kenntnis über die Struktur des Programmcodes erfordern, welche nur mit viel Aufwand aus dem geschriebenen Quelltext hergeleitet werden kann.

In dieser Bachelorarbeit ist ein Konzept erprobt worden, das die Entwicklung anwendungsspezifischer Sprachen erheblich vereinfacht. Dazu ist eine Entwicklungsumgebung für DSLs entwickelt worden, die nicht die textuelle Repräsentation des geschriebenen Programms als Grundlage nutzt, sondern direkt die Manipulation des abstrakten Strukturbaums eines Programms ermöglicht. Dadurch kann die Sprachspezikation vereinfacht werden, da eine eindeutige kontextfreie Grammatik zur Spezikation der konkreten Syntax nur noch erforderlich ist, wenn zusätzlich eine quelltext-orientierte Programmierung in dieser Sprache ermöglicht werden soll. Gleichzeitig kann dieser Editor dank seiner Kenntnis des abstrakten Strukturbaums einfach um sprachspezische Features erweitert werden.  So erhält der Anwender die Möglichkeit, Features wie Refactoring einfach in die Entwicklungsumgebung zu implementieren oder gar verschiedene Sichten auf das zu entwickelnde Programm bereitzustellen, um auch Nicht-Programmierern eine Anpassung von Teilen eines Programms zu ermöglichen.

Abschlußarbeit: Vollständiger Text

Bearbeiter: Dominik Leibenger

Ansprechpartner: Peter Pfahler

Impressum | Datenschutzerklärung | Webmaster | Letzte Änderungen am : 16.10.2013