Müller, G. (2008). Dynamic editor generator for domain specific languages [Master Thesis, Technische Universität Wien]. reposiTUm. http://hdl.handle.net/20.500.12708/185650
Dynamische Programmiersprachen (Skriptsprachen) und domainspezifische Sprachen (DSLs) sind derzeit sehr aktuelle Gebiete in der Forschung der Softwareentwicklung.<br />Während es sich bei DSLs um eine Sprache oder Ausdrucksform für eine bestimmte Problemdomäne handelt, werden dynamische Programmiersprachen aufgrund ihrer Einfachheit und Flexibilität oft dazu verwendet, um diese domainenspezifischen Sprachen zu implementieren.<br />Auch die dynamische Sprache Frag wurde bzw. wird am Institut für Informationssysteme unter anderem mit dem Fokus entwickelt, DSLs möglichst einfach und flexibel definieren und implementieren zu können. Ein wichtiger Aspekt für die Nutzung von DSLs ist aber auch die Verfügbarkeit eines Editors, der die spezifischen Sprachelemente der DSL abdeckt. Dies kann ein eigens entwickelter Editor für die dynamische Sprache, in der die DSL implementiert wird, nicht leisten. Daher wird in dieser Arbeit untersucht, wie man am besten aus bestehenden DSL-Spezifikationen (Eclipse-) Editoren für die verschiedenen textuelle DSLs erstellen kann. Der erste Ansatz dafür war die Überlegung, daß dies überhaupt automatisch passieren könnte, welcher aber aufgrund verschiedenster Probleme bald verworfen werden mußte.<br />Stattdessen wurde eine eigene Editor - Spezifikationssprache entworfen (welche im Grunde ebenfalls eine eigene DSL ist), mit Hilfe derer man nun einen semi-automatisierten Ansatz zur Editorgenerierung verwirklichen kann.<br />Aufgrund dieser Erkenntnisse wurde ein abstrakter Eclipse-Editor mit typischen Funktionen wie Code-Highlighting, Outline-View, Suchfunktionen, Launch Configuration und Code-Completion erstellt, welcher ein sehr einfaches, generisches Modell als Basis hat. Auf diesem Editor aufbauend wurde zunächst ein spezielles Eclipse-Framework für die dynamische Sprache Frag selbst erstellt, mit Hilfe dessen dann verschiedene domänenspezifische Editoren semiautomatisch (mit Hilfe oben erwähnter Editor-Spezifikation) erstellt werden können, welche als Basis wiederum den abstrakten Basis-Editor beinhalten.<br />
de
Dynamic programming languages (scripting languages) and domain specific languages (DSLs) are an important subject in current research on software development. DSLs are built to cover a language or description of a certain domain, whereas dynamic programming languages are often used to implement these DSLs because of their flexibility. The dynamic programming language Frag, developed at the Distributed Systems Groups - department of the Technical University Vienna, has also been created, amongst others, with a strong focus on implementing DSLs in a simple and very flexible way. An important aspect for using a DSL is the availability of an editor, which covers the specific language constructs of the DSL. An editor developed especially for the dynamic programming language, which implements the corresponding DSL, cannot achieve this.<br />Therefore, this thesis is engaged in finding a way to build (textual) editors (in Eclipse) using existing DSL-specifications. Our first intention was to enable this in a completely automatic way. This idea had to be discarded for various reasons, such as the lack of information in the DSL-definition necessary for creating an editor. Instead, a new specification language for editor configuration was developed, which is basically also its own DSL. This editor configuration language enables at least a semi-automatic approach for the editor generation.<br />As a result, an abstract basic editor was developed in Eclipse with typical text-editor features, such as code-highlighting, outline-view, advanced aearch functions, launch-configuration and code-completion. In addition to this abstract editor, in which a very simple and generic model provided a basis, a special Eclipse-framework for the dynamic programming language Frag itself was built, which enables the semi-automatic creation of domain specific editors by using the editor configuration explained above. The basis of the created editors is, once again, the abstract basic editor.<br />